第八周运维作业
1、显示统计占用系统内存最多的进程,并排序。
[root@centos7 ~]# ps -eo pid,ppid,cmd,%mem --sort=-%mem
2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
答:for循环实现
[root@centos7 data]# vim host_for.sh
#!/bin/bash
NET_SEG=192.168.0
PING='ping -c1 -w1'
for HOST in {1..254};do
{
if $PING $NET_SEG.$HOST &>/dev/null;then
echo success $NET_SEG.$HOST
else
echo fail $NET_SEG.$HOST
fi
}&
done
wait
[root@centos7 data]# chmod +x host_for.sh
加执行权限
while 循环
[root@centos7 data]# vim host_while.sh
#!/bin/bash
NET_SEG=192.168.0
HOST=1
while [ $HOST -lt 255 ];do
{
if ping -c1 -w1 $NET_SEG.$HOST &>/dev/null;then
echo success $NET_SEG.$HOST
else
echo fail $NET_SEG.$HOST
fi
}&
let HOST++
done
wait
加执行权限
[root@centos7 data]# chmod +x host_while.sh
3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
答:crontab -e
30 1 * * 1-5 /usr/bin/tar -Jcvf /backup/etcbak-`date -d "-1 day" +%F-%H` /etc/
4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
编辑脚本
[root@centos7 data]# vim while-read_checkdisk.sh
#!/bin/bash
WARNING=80
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
给脚本加执行权限
[root@centos7 data]# chmod +x while-read_checkdisk.sh
编辑计划任务
[root@centos7 data]# crontab -e
*/10 * * * 1-5 /bin/bash /data/while-read_checkdisk.sh &> /dev/null