第八周作业

1、显示统计占用系统内存最多的进程,并排序。

[root@centos7 ~]# ps axuk -%mem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ovirtag+   968  0.3  0.2 563332 19692 ?        Ssl  Jan09  26:46 /usr
root       536  0.0  0.2  55576 17820 ?        Ss   Jan09   0:10 /usr
root      1219  0.0  0.2 574200 17456 ?        Ssl  Jan09   1:12 /usr
root      1229  0.0  0.1 1004108 15568 ?       Ssl  Jan09   0:00 /usr
polkitd    907  0.0  0.1 614432 13256 ?        Ssl  Jan09   0:02 /usr
root      1225  0.0  0.1 232804 12336 ?        Ssl  Jan09   0:37 /usr
root       927  0.0  0.1 563780 11572 ?        Ssl  Jan09   0:02 /usr
root     14749  0.2  0.1 350504  8600 ?        Sl   08:12   0:00 /usr
root     14728  0.7  0.0 163616  6132 ?        Ss   08:12   0:00 sshd
root     14585  0.0  0.0 163616  6124 ?        Ss   08:06   0:00 sshd
root       895  0.0  0.0 228252  5784 ?        Ss   Jan09   0:00 /usr
root       902  0.0  0.0 430612  5488 ?        Ssl  Jan09   0:00 /usr
root      2586  0.0  0.0 410440  5304 ?        Ssl  Jan09   0:07 /usr
root       903  0.0  0.0 225756  4816 ?        Ss   Jan09   0:00 /usr
root       941  0.0  0.0 225756  4808 ?        Ss   Jan09   0:00 /usr
root      1222  0.0  0.0 112920  4360 ?        Ss   Jan09   0:00 /usr
root      1218  0.0  0.0 198000  4188 ?        Ss   Jan09   0:00 /usr
root         1  0.0  0.0 191124  4132 ?        Ss   Jan09   0:11 /usr
postfix   1608  0.0  0.0  91956  4088 ?        S    Jan09   0:00 qmgr
postfix  13772  0.0  0.0  91888  4076 ?        S    07:15   0:00 pick
root     14587  0.0  0.0 116660  3272 pts/0    Ss+  08:06   0:00 -bas
root     14730  0.7  0.0 116660  3272 pts/1    Ss   08:12   0:00 -bas

2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

#!/bin/bash
#for循环实现
for i in {1..254}; do
    ping -w 1 192.168.0.$i > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "192.168.0.$i success!"
    else
        echo "192.168.0.$i fail!"
    fi
done
#############################################################
#!/bin/bash
#while实现
declare -i i=1
while [ $i -le 254 ]; do
    ping -w 1 192.168.0.$i > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "192.168.0.$i success!"
    else
        echo "192.168.0.$i fail!"
    fi
    let i++
done

3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

执行命令crontab -e编写计划任务,写入以下内容:
30 1 * * 1-5 tar -cJf /back/etcbak-`date -d 'last day' "+%F-%H"`.tar.xz /etc/* &> /dev/null

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警。

执行命令crontab -e编写计划任务,写入以下内容:
*/10 * * * 1-5 /bin/bash /root/scripts/disk_warn.sh &> /dev/null
其中disk_warn.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

你可能感兴趣的:(第八周作业)