目录
一、安装Linux分区方案
分区类型 | 分区作用 | 分区大小 |
---|---|---|
/boot 分区 | 启动分区 | 200MB引导 |
/根分区 | 使用LVM | 50G |
swap | 交换分区 | 64G或256G |
以前内存只有8G的时候swap建议是内存的两倍:
- 4-16G内存,建议swap分4G
- 16-64G内存,建议swap分16G
- >64G内存,建议swap分64G
安装系统最少三个区:/boot、/和swap。
系统盘超过2TB,装完系统是无法启动的,超过2TB的硬盘格式要转换为GPT格式,正常硬盘是MBR模式。
系统盘超过2TB转换为GPT后需要再分一个区/boot/efi 200MB
高危命令:
rm -rf /*
二、Linux常用简单命令
Linux用户信息在/etc/passwd中
Linux用户密码信息在/etc/shadow中
备份存放密码文件,改掉不知道的用户密码,用完了再cp回去就可以了,这样恢复密码了,这样会影响所有用户(如果很多人改密码),那就只单独复制这个用户的这段。
离职的人,在密码前加个感叹号,需要用的时间取消掉就行。
usermod -L user1就是锁定用户,原理就是密码前加了一个感叹号。
usermod -U user1就是解锁用户,原理就是密码的感叹号取消掉。
在Linux中root因为他的UID是0所以是管理员,改了root的UID他就不是了。
admin的UID为0,这个时候他就是管理员了。
1、 破解其他Linux系统密码
把root的X去掉,这样随便su - XX都不会需要输入密码
进救援模式恢复密码,用光盘启动,只要光盘能引导
(1)、进入第三个菜单
(2)、进入第二个子菜单
(3)、输入1
(4)、回车得到一个命令行
(5)、输入chroot /mnt/sysimage进了真系统,用光盘启动,把真正的硬盘挂载到了假系统(光盘的系统)的sysimage系统上了
change root切换根
去掉X
su 加“-”才能完整切换到其他用户的身份
2、命令使用帮助系统
正常的命令由三部分组成,每个部分用空格隔开,并且严格区分大小写。
command | options | arguments |
---|---|---|
命令 | 选项 | 参数 |
3、Man看命令的使用手册
man date
date [OPTION]...[+FORMAT] |
[]:可选项 |
...:代办列表 |
-a | -b | -c | -d:代办多选一 |
大写字母:代办必选项 |
<>:代办必选项 |
4、Linux文件系统
文件系统结构:一切从根开始,Linux一切皆文件。
目录位置 | 目录作用 |
---|---|
/ | 根目录 |
/root | root的家目录 |
路径分为:相对路径和绝对路径
- 相对路径:从当前目录开始。
- 绝对路径:一切从根开始。
Linux下每个目录都有两个隐藏的文件夹
提示符 | 意义 |
---|---|
"." | 代表当前目录 |
“..” | 代表上一级目录 |
安装软件:
[root@classroom tmpl# ls
vsftpd-3.0.3-28.el8.x86_64.rpm
[root@classroom tmp]# rpm -ivh vsftpd-3.0.3-28.el8.x86_64.rpm
查看软件包装的位置:
[root@classroom tmp]#rpm -ql vsftpd
/etc/logrotate.d/vsftpd
5、ls命令
ls:列出当前目录的下文件和文件夹。
文件颜色 | 作用 |
---|---|
蓝色 | 标识文件夹、目录。 |
黑色 | 标识普通文件。 |
绿色 | 标识可执行文件、命令。 |
青色 | 标识链接文件、快捷方式。 |
ls参数 | 作用 |
---|---|
-a | all,显示所有文件,包括隐藏文件,以“.”开头的文件。 |
-l | 用长格式的方式显示。 |
-R | 递归显示当前目录和子目录的内容 |
-ld | 显示目录本身 |
-i | inode number索引号 |
删除隐藏文件用rm -rf .*,删除当前目录所有隐藏文件,但是“.”和“..”无法删除。
6、cp命令
cp:复制文件和目录。
cp参数 | 作用 |
---|---|
-r | 递归复制 |
-p | 保留权限和时间戳 |
-a | 等同于执行了-p、-r、-d |
-i | 人机交互,默认带 |
cp操作 | 作用 |
---|---|
cp /etc/passwd /tmp/ | 复制单个文件到目的目录,复制/etc/passwd到/tmp/目录下。 |
cp /etc/group /etc/profile /tmp/ | 复制多个文件到目的目录,复制 /etc/group和 /etc/profile到/tmp/目录下。 |
cp -r /etc/ /tmp/ | 整个文件夹复制 |
7、mv命令
mv:移动或改名
mv操作 | 作用 |
---|---|
mv passwd.t passwd.2 | 将passwd.t改名为passwd.2 |
8、pwd命令
pwd:显示当前工作目录。
9、rm命令
rm:remove删除
rm -rf /*,牢底坐穿操作。
extundelete工具恢复rm -rf删除的目录(ext3和ext4类型文件系统)
rm参数 | 作用 |
---|---|
-r | 递归操作 |
-f | force,强制删除 |
删除一个文件只是删除了索引,一个文件由索引和数据块组成(索引和block)
索引:记录了文件名、大小、权限、时间、指针。
10、stat命令
stat:查看文件三个时间戳(最近访问、最近更改、最近改动)
11、touch命令
touch:创建空文件或者更新时间戳。
12、mkdir命令
mkdir:创建文件夹。
13、rmdir命令
rmdir:删除空文件夹。
14、file命令
file:查看文件类型。
三、Linux的用户
1、在Linux中什么是用户?
Linux系统重,每个用户都拥有一个唯一的UID,user id number。
UID为0就是管理员,root默认UID=0。
普通用户UID>=1000(老版本从500开始,新的是红帽7开始)。
1-999系统用户使用。
[root@Believe ~]# cat /etc/passwd |grep sky
sky:x:1000:1000:sky:/home/sky:/bin/bash
sky | x | 1000 | 1000 | sky | /home/sky | /bin/bash |
---|---|---|---|---|---|---|
用户名 | 用户是否需要身份验证,取消掉就能免密登录 | UID标识用户,不可重复 | GID标识用户组 | 用户描述信息 | 用户家目录,自动创建的,用户登录默认进入家目录 | shell命令解释器,常用的/bin/bash |
默认一个用户没有设置密码,是处于锁定状态 ,标识为“!!” | 还有一个是/sbin/nologin,usermod -s /sbin/nolgin user3 该用户就无法登录了。 像某些邮箱服务器、ftp服务器场景,这样操作能不影响使用邮件收发和ftp使用,但是不能登录本机,提高了系统安全性。 |
执行创建user1用户会自动执行以下操作:
[root@Believe ~]# useradd user1
- 创建user1用户
- 创建user1组
- 创建user1的家目录
- 将user1用户加入user1组
Linux中所有关于用户的信息
存放用户信息:
[root@Believe ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2693 12月 5 15:31 /etc/passwd
存放密码信息:
[root@Believe ~]# ls -l /etc/shadow
----------. 1 root root 1974 12月 17 16:33 /etc/shadow
2、groupadd命令
groupadd:创建一个组
[root@Believe ~]# groupadd IT
[root@Believe ~]# cat /etc/group | grep IT
IT:x:1002:
查看IT组中有哪些成员
[root@Believe ~]# cat /etc/group |grep IT
IT:x:1001:user2,user3,user1,root
存在组信息:
[root@Believe ~]# ls -l /etc/group
-rw-r--r--. 1 root root 1071 12月 5 15:31 /etc/group
存放组密码信息:
[root@Believe ~]# ls -l /etc/gshadow
----------. 1 root root 954 12月 5 15:31 /etc/gshadow
Linux中把用户信息/etc/passwd、用户密码信息/etc/shadow、组信息/etc/group、组密码信息/etc/gshadow这四个文件迁移到其他Linux系统,就把用户迁移过去了。
3、gpasswd命令
gpasswd:设置组密码。
4、newgrp命令
newgrp:登录组。
5、usermod命令
usermod:修改用户信息。
参数 | 作用 |
---|---|
-G | 将用户加入指定组 |
命令 | 作用 |
---|---|
[root@Believe ~]# usermod -G IT user1 | 将user1加入到IT组中 |
[root@Believe ~]# usermod -G IT user1
[root@Believe ~]# id user1
uid=1001(user1) gid=1002(user1) 组=1002(user1),1001(IT)
6、userdel命令
userdel:删除用户。
四、Linux权限
- 文件的拥有人(user)
- 文件的拥有组(group)
- 其他人(other)
[root@Believe sky]# ll passwd
-rw-r--r--. 1 root IT 2607 11月 11 09:49 passwd
- | rw- | r-- | r-- | . | 1 | root | IT | 2607 | 11月 11 09:49 |
---|---|---|---|---|---|---|---|---|---|
-:普通文件 d:文件夹 | 文件拥有人的权限 | 文件所属组的权限 | 其他人的权限(既不是文件拥有人又不在文件所属组的人) | 如果变为“+”代表有更深层次的权限 | 文件:对于文件来说,这个代办文件的链接树,软链接是1,硬链接会变2。 文件夹:对于文件夹来说,这个代表文件夹下有多少个子目录。 | 文件拥有人 | 文件所属组 | 代办文件的大小,默认是字节,加-h查看 | 文件最后一次被修改时间 |
1、rwx权限
r:read读
w:write写
x:execute执行,文件有x代表有执行权限
2、ACL权限
权限还有个功能叫ACL:
看深层次的权限
深层权限
[root@Believe ~]# setfacl -m u:user1:rw- passwd
[root@Believe ~]# ll passwd
-rw-rw-r--+ 1 root root 2693 12月 18 14:26 passwd
[root@Believe sky]# getfacl passwd
file: passwd
owner: root
group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--
[root@Believe sky]# setfacl -b passwd
[root@Believe sky]# ll
总用量 4
-rw-r--r--. 1 root root 2607 11月 11 09:49 passwd
-
文件硬链接(索引)
[root@Believe sky]# link passwd test/passwd.1
[root@Believe sky]# ls test/
[root@Believe sky]# ll passwd
-rw-r--r--. 2 root root 2607 11月 11 09:49 passwd
-
文件软连接(快捷方式)
[root@Believe sky]# ll /etc/ssh/ssh_config
-rw-r--r--. 1 root root 1726 11月 8 14:59 /etc/ssh/ssh_config
[root@Believe sky]# ln -s /etc/ssh/ssh_config /sky/test/ssh_config.1
[root@Believe sky]# ll /etc/ssh/ssh_config
-rw-r--r--. 1 root root 1726 11月 8 14:59 /etc/ssh/ssh_config
看文件大小
[root@Believe sky]# ll passwd -h
-rw-r--r--. 2 root root 2.6K 11月 11 09:49 passwd
-
权限实践
修改文件所有者为user1
[root@Believe sky]# ll passwd
-rw-r--r--. 2 root root 2607 11月 11 09:49 passwd
[root@Believe sky]# chown user1 passwd
[root@Believe sky]# ll passwd
-rw-r--r--. 2 user1 root 2607 11月 11 09:49 passwd
减文件所有者权限
[user1@Believe sky]$ ll passwd
-rw-r--r--. 2 user1 root 2607 11月 11 09:49 passwd
[user1@Believe sky]$ chmod u-rwx passwd
[user1@Believe sky]$ ll passwd
----r--r--. 2 user1 root 2607 11月 11 09:49 passwd
(1)、chown命令
chown:修改文件的拥有人。
语法:chown XX(用户) XX...XX(单个或多个文件)
参数 | 作用 |
---|---|
-R | 递归执行 |
(2)、chgrp命令
chgrp:修改文件所属组。
(3)、chmod命令
chmod:change modify改变文件权限,有两种修改方式数字或字符
参数 | 作用 |
---|---|
u | 文件拥有人 |
g | 文件所属组 |
o | 其他人 |
- | 去掉权限 |
+ | 增加权限 |
= | 不管原来什么权限,赋值对应的权限 |
u、g、o可以灵活组合
[root@Believe sky]# chmod ugo+rwx passwd
[root@Believe sky]# ll passwd
-rwxrwxrwx. 2 user1 root 2607 11月 11 09:49 passwd
[root@Believe sky]# chmod ug-rx passwd
[root@Believe sky]# ll passwd
--w--w-rwx. 2 user1 root 2607 11月 11 09:49 passwd
权限ACL
ACL权限赋值
setfacl -m u:user10:rwx /data
u:用户
[root@Believe /]# setfacl -m u:user10:rx believe/
去掉acl权限
[root@Believe /]# setfacl -x u:user10 believe/
但是有+号
[root@Believe /]# ls -ld believe/
drwxrwxrwx+ 2 root root 6 12月 3 10:38 believe/
-b移除所有ACL
[root@Believe /]# setfacl -b /believe/
[root@Believe /]# ls -ld believe/
drwxrwxrwx. 2 root root 6 12月 3 10:38 believe/
3、特殊权限
SUID
SUID:如果在一个命令上添加了SUID后,那么任何人在执行命令时,会临时得到该命令拥有人的权限。
SGID
SGID:如果在一个目录上添加SGID,那么任何人在该目录中创建的文件,会继承该目录拥有组的权限。
[root@Believe /]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 34512 8月 13 2018 /usr/bin/passwd
[root@Believe ~]# ls -l /usr/bin/mkdir
-rwxr-xr-x. 1 root root 106256 1月 11 2019 /usr/bin/mkdir
[root@Believe ~]# ls -ld /believe/dat
drwsr-xr-x. 2 root root 6 12月 4 17:10 /believe/dat
[root@Believe ~]# su - user10
[user10@Believe ~]$ ls -ld /believe/dat
drwsr-xr-x. 2 root root 6 12月 4 17:10 /believe/dat
[user10@Believe ~]$ cd /believe/dat
[user10@Believe dat]$ mkdir user10
[user10@Believe dat]$ ls
user10
sticky:QQ群空间,t权限,如果在一个目录上添加了sticky权限,那么仅root和文件拥有人可以删除文件。
[root@Believe ~]# chmod o+t /believe
有4个权限,suid=4,sgid=2,sticky=1
chmod 3777 /believe
这个3就是sgid和sicky
chattr
lsattr
lsattr:查看文件隐藏权限。
重启
1、reboot
2、shutdown -r now
3、init 6
关机
1、shutdown -n now
2、init 0
3、poweroff
五、shell
1、通配符
参数 | 作用 |
---|---|
* | 匹配所有、匹配零个或者多个字符。 |
[root@Believe ~]# rm -rf passw*
[root@Believe ~]# rm -rf 1?.txt
[root@Believe ~]# rm -rf [abc].txt
[root@Believe ~]# rm -rf [^abc].txt
写个shell——1
需求:/目录使用率大于15%进行告警的shell
(1)、[root@Believe ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.3M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 26G 4.5G 21G 18% /
/dev/sda2 1014M 164M 851M 17% /boot
/dev/sda1 599M 6.6M 593M 2% /boot/efi
tmpfs 1.6G 28K 1.6G 1% /run/user/42
tmpfs 1.6G 4.0K 1.6G 1% /run/user/0
(2)、[root@Believe ~]# df -h |grep -w /
/dev/mapper/rhel-root 26G 4.5G 21G 18% /
(3)、[root@Believe ~]# df -h |grep -w / |awk '{print $5}'
18%
(4)、[root@Believe ~]# df -h |grep -w / |awk '{print $5}' |sed 's/%//'
18
#!/bin/bash
rootpart=`df -h |grep -w / |awk '{print $5}' |sed 's/%//'`
if [ $rootpart -ge 15 ]; then
echo " $rootpart root partition is full"
fi
[root@Believe ~]# ./disks.sh
root partition is full
使用``也是$()引用命令的作用
[root@Believe ~]# touch a{1,3,5,7,9}.txt
[root@Believe ~]# ll
-rw-r--r--. 1 root root 0 12月 11 11:01 a1.txt
-rw-r--r--. 1 root root 0 12月 11 11:01 a3.txt
-rw-r--r--. 1 root root 0 12月 11 11:01 a5.txt
-rw-r--r--. 1 root root 0 12月 11 11:01 a7.txt
-rw-r--r--. 1 root root 0 12月 11 11:01 a9.txt
2、变量
本地变量
本地变量:仅在当前shell中有效的变量(新打开一个shell窗口就无效了)
环境变量
环境变量:所有子shell中能继承的变量
export将本地变量转换为环境变量
[root@Believe ~]# export a1
所有变量只在内存中,重启就没有了。
全局环境变量
全局环境变量:写入/etc/profile中的变量就是全局变量。
[root@Believe ~]# vim /etc/profile
切换用户会读这个文件
排错思路:如果你写的脚本报错,不知道哪一行有问题,可以分段排错,在一段里写echo“测试”,执行输出代办上边内容没问题,然后就往下排。
[root@Believe ~]# source /etc/profile
把/etc/profile重新读到内存中
用户环境变量
用户环境变量:针对用户单独,用户环境变量优先于全局环境变量。
[user10@Believe ~]$ vim .bash_profile
history:显示历史命令,默认全局环境变量保留1000条记录,个人用户可以自定义修改。
历史记录越长越不安全
$PATH
[root@Believe ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
执行ls等同于执行/usr/bin/ls
[root@Believe ~]# /usr/bin/ls
如果我想在任何目录执行disks.sh可以如下操作:
[root@Believe ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root
或者是以下操作(变量可以嵌套自己)
[root@Believe tmp]# PATH=$PATH:/root
[root@Believe tmp]# disks.sh
18 root partition is full
下面这样就跟PATH变量没有关系了
[root@Believe ~]# ./disks.sh
18 root partition is full
/etc/bashrc、/etc/profile和用户下的.bash_profile、.bashrc这四个配置文件都是关于变量的
符号 | 作用 |
---|---|
\ | 去除特殊符号的意义(转义符)和''效果一样 |
'' | 遇到任何字符均不转义(原样输出)。 |
"" | 遇到任何字符均不转义(原样输出),除了以下四种情况: (1)$ (2)\ (3)``等同于$() (4)!:也有特殊意义 |
[root@Believe ~]# echo Your cost $5.00
Your cost .00
[root@Believe ~]# echo Your cost $5.00
Your cost $5.00
[root@Believe ~]# echo "Your cost $5.00"
Your cost .00
[root@Believe ~]# echo 'Your cost $5.00'
Your cost $5.00
[root@Believe ~]# touch a\ b
[root@Believe ~]# ls
1234.txt 视频 音乐 a5.txt abc.txt b.txt
123.txt 图片 桌面 a7.txt ab.txt c.txt
公共 文档 a1.txt a9.txt anaconda-ks.cfg disks.sh
模板 下载 a3.txt 'a b' a.txt
[root@Believe ~]# rm a\ b
rm:是否删除普通空文件 'a b'?y
单引号
[root@Believe ~]# echo '$A'
$A
[root@Believe ~]# echo '$A'
$A
引用命令历史记录里第十条命令
[root@Believe ~]# !10
usermod -G IT user1
使用感叹号进行反选,如果是双引号“”那就是执行某一个命令了
[root@Believe ~]# iptables -A INPUT ’!‘ -s 192.168.1.0/24 -j ACCEPT
3、shell脚本
脚本:创建一个文本文件,然后将你要执行的命令写入到文件中,并且给他一个执行权限。
步骤 | 方法 |
---|---|
步骤一 | 脚本的命名: (1)、文件名尽量有意义。 (2)、以.sh结尾 |
步骤二 | 脚本第一行: #:#是一个注释,描述,给未来维护的时候用。 #遇到!就会变得有意义,意思是声明。 #!/bin/bash:声明接下来写的脚步都用/bin/bash解释,这样移植到其他计算机,不加这个,其他计算机默认不是bash解释的话无法执行会失败,加了这个声明,移植到任何地方都是使用bash解释。 |
步骤三 | 写完给脚本一个执行权限 [root@Believe scripts]# chmod u+x mail_full.sh |
4、计划任务
周期性计划任务
crontab工具
crontab:实现周期性计划任务的工具
参数 | 功能 |
---|---|
-e | 编辑 |
-l | 查看 |
-r | 删除 |
man 5 crontab
分、时、日、月、周
[root@Believe /]# crontab -e
* * * * * mkdir /sky10
[root@Believe /]# ll /
总用量 28
drwxr-xr-x. 3 root root 41 12月 12 16:39 back
drwxrwxrwx. 4 root root 29 12月 4 17:10 believe
lrwxrwxrwx. 1 root root 7 8月 12 2018 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 8 14:54 boot
drwxr-xr-x. 2 root root 6 12月 3 10:38 data
drwxr-xr-x. 20 root root 3420 12月 17 15:16 dev
drwxr-xr-x. 135 root root 8192 12月 17 17:51 etc
drwxr-xr-x. 8 root root 86 12月 5 15:31 home
lrwxrwxrwx. 1 root root 7 8月 12 2018 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 8月 12 2018 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 8月 12 2018 media
drwxr-xr-x. 2 root root 6 8月 12 2018 mnt
drwxr-xr-x. 2 root root 6 8月 12 2018 opt
dr-xr-xr-x. 323 root root 0 12月 17 15:15 proc
dr-xr-x---. 15 root root 4096 12月 18 16:07 root
drwxr-xr-x. 40 root root 1180 12月 17 15:16 run
lrwxrwxrwx. 1 root root 8 8月 12 2018 sbin -> usr/sbin
drwxr-xr-x. 2 root root 109 12月 17 15:59 scripts
drwxr-xr-x. 4 root root 60 11月 14 17:33 sky
drwxr-xr-x. 2 root root 6 12月 13 15:03 sky10
drwxr-xr-x. 2 root root 6 8月 12 2018 srv
dr-xr-xr-x. 13 root root 0 12月 17 15:15 sys
-rw-r--r--. 1 root root 0 12月 13 14:42 test12.txt
drwxrwxrwt. 13 root root 4096 12月 18 16:07 tmp
drwxr-xr-x. 12 root root 144 11月 8 14:38 usr
drwxr-xr-x. 21 root root 4096 11月 8 14:54 var
[root@Believe /]# tail /var/log//cron
Dec 13 15:01:54 Believe crontab[29726]: (root) BEGIN EDIT (root)
Dec 13 15:02:01 Believe CROND[29731]: (root) CMD (/usr/bin/echo hello)
Dec 13 15:02:01 Believe CROND[29728]: (root) CMDOUT (hello)
Dec 13 15:02:15 Believe crontab[29726]: (root) REPLACE (root)
Dec 13 15:02:15 Believe crontab[29726]: (root) END EDIT (root)
Dec 13 15:03:01 Believe crond[1180]: (root) RELOAD (/var/spool/cron/root)
Dec 13 15:03:01 Believe CROND[29762]: (root) CMD (mkdir^I/sky10)
Dec 13 15:03:18 Believe crontab[29782]: (root) LIST (root)
Dec 13 15:04:01 Believe CROND[29785]: (root) CMD (mkdir^I/sky10)
Dec 13 15:04:01 Believe CROND[29783]: (root) CMDOUT (mkdir: 无法创建目录 “/sky10”: 文件已存在)
六、IO
Standard input(STDIN)标准输入,来自于键盘。
Standard output(STDOUT)标准输出,默认是终端。
Standard error(STDERR)错误输出,默认是终端。
1、IO重定向
符号 | 作用 |
---|---|
> | 输出重定向 |
2> | 错误输出重定向 |
&> | 所有输出重定向 |
>> | 追加 |
2>> | 错误追加 |
&>> | 所有追加 |
语法格式:命令、重定向符号、文件名
command > filename
[root@Believe ~]# ls > /tmp/filelist.txt
[root@Believe ~]# cat /tmp/filelist.txt
1234.txt
123.txt
公共
模板
视频
图片
文档
下载
音乐
桌面
a1.txt
a3.txt
a5.txt
a7.txt
a9.txt
abc.txt
ab.txt
anaconda-ks.cfg
a.txt
b.txt
c.txt
disks.sh
initial-setup-ks.cfg
2、find命令
find:查找。
[root@Believe ~]# find /etc/ -name passwd > find1.out > fin2.err
输出如果没有文件,默认会创建一个空文件。
3、管道“|”命令
管道语法:command1 | command2
将command1的执行结果作为command2的输入
3、wc命令
wc:检查文件行数。
[root@Believe scripts]# wc -l ping.sh
12 ping.sh
[root@Believe scripts]#
[root@Believe scripts]# ls -l /etc/ | wc -l
261
测试案例:统计CPU使用最高的前五个,并邮件发给user1
[root@Believe scripts]# ps axo %cpu,%mem,pid,comm |sort -rn |head -n 5
%CPU %MEM PID COMMAND
0.0 1.3 1848 gnome-shell
0.0 0.9 807 systemd-journal
0.0 0.3 2216 ibus-x11
0.0 0.2 2173 Xwayland
邮件发给user1
[root@Believe scripts]# ps axo %cpu,%mem,pid,comm |sort -rn |head -n 5 |mail -s "process info" user1
七、循环语句
1、for循环
NAME:变量
#!/bin/bash
for num in $(seq 1 1000)
do
touch /tmp/$num
done
测试案例:创建文件内的用户,并且随机生成密码,账号密码输出到文件中,然后把账号密码已邮件邮件形式发送给root。
[root@Believe scripts]# cat /etc/passwd |grep /bin/bash |grep -v root |cut -d: -f1
admin
user1
user2
user3
user10
user11
#!/bin/bash
for users in $(cat /scripts/userlist.txt)
do
useradd $users
password=$(openssl rand -base64 6)
echo $password | passwd --stdin $users
echo "username: $users password: $password" | $(echo username: $users password: $password >> /root/userspassword.txt) | mail -s "username and password" root
done
--stdin标准输入,在下边这里就不用重复输入两次密码了
[root@Believe scripts]# echo redhat | passwd --stdin user1
在Linux中,任何操作都会有一个返回值。