第八周作业—N42-虚怀若谷
一、显示统计占用系统内存最多的进程,并排序
[root@centos7 ~]# ps -eo uid,pid,ppid,tty,c,time,cmd,%mem --sort=-%mem UID PID PPID TT C TIME CMD %MEM 42 7445 7221 ? 0 00:00:03 /usr/bin/gnome-shell 12.9 0 6960 6929 tty1 0 00:00:00 /usr/bin/X :0 -background n 2.3 42 7561 7221 ? 0 00:00:00 /usr/libexec/gsd-media-keys 1.7 0 6909 1 ? 0 00:00:00 /usr/bin/python2 -Es /usr/s 1.7 999 6483 1 ? 0 00:00:00 /usr/lib/polkit-1/polkitd - 1.4 0 6919 1 ? 0 00:00:00 /usr/sbin/libvirtd 1.4 42 7543 7221 ? 0 00:00:00 /usr/libexec/gsd-xsettings 1.4 42 7569 7221 ? 0 00:00:00 /usr/libexec/gsd-power 1.4 42 7549 7221 ? 0 00:00:00 /usr/libexec/gsd-color 1.4 ...以下省略
二、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不能,则输出"fail!"
1. for 循环实现
#!/bin/bash NETID=192.168.0 for HOSTID in {1..254};do { ping -c1 -W1 $NETID.$HOSTID &> /dev/null if [ $? -eq 0 ];then echo "$NETID.$HOSTID success!" else echo "$NETID.$HOSTID fail!" fi } & done
2. while 循环实现
#!/bin/bash NETID=192.168.214 declare -i HOSTID=1 while [ $HOSTID -lt 255 ];do ping -c1 -W1 $NETID.$HOSTID &> /dev/null if [ $? -eq 0 ];then echo "$NETID.$HOSTID success!" else echo "$NETID.$HOSTID fail!" fi let HOSTID++ done
三、每周的工作日1:30,将/etc/备份到/backup目录中,保存的文件名格式为"ectbak-yyyy-mm-dd-HH.tar.xz",其中日期是前一天的时间
[root@centos7 ~]# crontab -e 30 1 * * 1-5 /usr/bin/tar -Jcf etcbak-`date -d "-1 day" +%Y-%m-%d-%H`.tar.xz /etc &> /dev/null
四、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就发送邮件报警
1. 先准备报警脚本
[root@centos7 data]# vim while_checkdisk.sh #!/bin/bash WARNING=10 MAIL=root@localhost df |sed -rn '/^\/dev\/sd/s#^([^[:space:]]+).* ([[:digit:]]+)%.*#\1 \2#p'|while read diskpart used;do if [ $used -gt $WARNING ];then echo $diskpart will be full,used:$used% | mail -s "diskcheck_alert" $MAIL fi done
2. 给脚本加执行权限
[root@centos7 data]# chmod +x while_checkdisk.sh
3. 添加定时任务
[root@centos7 data]# crontab -e */10 * * * * /bin/bash /data/while_checkdisk.sh &> /dev/null