linux学习第4课

1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
显示用户:grep -v '/sbin/nologin' /etc/passwd|cut -d: -f1|cat -n
命令解释:
grep -v '/sbin/nologin' /etc/passwd #通过正则表达式筛选出非/sbin/nologin的行;
cut -d: -f1 #以“:”为间隔符,显示第1列;
cat -n #为行添加序号。
执行结果:
linux学习第4课

显示用户个数:grep -v '/sbin/nologin' /etc/passwd|wc -l
命令解释:
grep -v '/sbin/nologin' /etc/passwd #显示非/sbin/nologin的行;
wc -l #统计行数,实际就是非/sbin/nologin的用户数。
执行结果:
linux学习第4课

2、查出用户UID最大值的用户名、UID及shell类型
cat /etc/passwd|sort -n -t: -k3|cut -d: -f1,3,7|tail -1
命令解释:
cat /etc/passwd #显示/etc/passwd文件内容;
sort -n -t: -k3 #以“:”为字段界定符,并以第三字段为准,也就是UID,对所有行从小到大排序;
cut -d: -f1,3,7 #以“:”为间隔符,显示第1、3、7列;
tail -1 #显示最后一行,也就是UID最大的那一行。
执行结果:
linux学习第4课

3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
netstat -t | grep ':ssh'|tr -s ' '|cut -d ' ' -f5|cut -d: -f1|uniq -c|sort -rn
命令解释:netstat -t #以主机名和服务名的方式,显示TCP协议连接到本机的链接状态
grep ':ssh' #通过正则表达式筛选出“:ssh”的行
tr -s ' ' #压缩多个空格为一个
cut -d ' ' -f5 #以“ ”为间隔符,显示第五列;
cut -d: -f1 #以“:”为间隔符,显示第1列
uniq -c #对内容相同的行,去重,并计数;
sort -rn #对第1列进行从大到小排序
执行结果:
linux学习第4课

4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
脚本内容:echo "disk use max :df | grep '^/dev/sd' |tr -s ' ' %|cut -d% -f5|sort -n|tail -1"
命令解释:
df | grep '^/dev/sd' #将df命令的输出结果通过正则表达式筛选出以“/dev/sd”开头的行;
tr -s ' ' % #压缩多个空格为一个,并将空格用“%”代替;
cut -d% -f5 #以“%”为间隔符,显示第5列;
sort -n #从小到达排序;
tail -1 #显示最后一行,也就是空间利用率最大的那一行。
过程:
(1)新建df01.sh,并将脚本内容写入文件df01.sh;
linux学习第4课
(2)为df01.sh添加执行权限;
linux学习第4课
(3)执行df01.sh,并输出执行结果。
linux学习第4课

5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
脚本内容:
echo -e "My hostname is hostname"
echo -e "IP address is ifconfig ens160 |grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'|head -n1"
#备注:网卡名称要通过ifconfig更改为本机的网卡名称
echo -e "OS version is cat /etc/redhat-release"
echo -e "Kernel version is uname -r"
echo -e "CPU type is lscpu|grep "Model name" |cut -d: -f2 |tr -s " ""
echo -e "Memtotol is cat /proc/meminfo |head -n1 |grep -Eo '[0-9]+.*'"
echo -e "Disk space is lsblk |grep 'sda\>'|grep -Eo '[0-9]+[[:upper:]]'"
执行结果:
linux学习第4课

上一篇:docker -privileged和/usr/sbin/init


下一篇:Nginx 热部署