Shell腳本和計劃任務實踐

1、顯示統計佔用系統內存最多的進程,並排序。

ps -eo pid,ppid,cmd,%mem --sort=-%mem

2、編寫腳本,使用for和while分別實現192.168.0.0/24網段內,地址是否能夠ping通,若ping通則輸出"success!",若ping不通則輸出"fail!"

# for循環版本1

#!/bin/bash
NET=192.168.0
for i in {1..254}; do
{
    ping -c 1 -w 1 $NET.$i > /dev/null && echo "$NET.$i:success!" || echo "$NET.$i:fail!"
}&
done
wait

# for循環版本2

#!/bin/bash
NET=192.168.0
for ((i=1; i<254; i++));do
{
    ping -c 1 -w 1 $NET.$i > /dev/null && echo "$NET.$i:success!" || echo "$NET.$i:fail!"
}&
done
wait

# while循環

declare -i i=0
NET=192.168.0
while [ $i -lt 255 ]; do
    ping -c 1 -w 1 $NET.$i > /dev/null && echo "$NET.$i:success!" || echo "$NET.$i:fail!"
    ((i++))
done

3、每週的工作日1:30,將/etc備份至/backup目錄中,保存的文件名稱格式 爲“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的時間

# 編寫腳本backup.sh
cat > backup.sh << EOF
#!/bin/bash 
[ -d /backup ] || mkdir /backup
/usr/bin/tar -cJf /backup/etcbak-\`date -d "-1 day" +"%F-%H"\`.tar.xz /etc &> /dev/null
EOF

# 給腳本添加執行權限
chmod u+x backup.sh

# 添加計劃任務
echo '30 1 * * 1-5 /root/backup.sh' >> /var/spool/cron/root

# 查看計劃任務
crontab -l

4、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高於80%,就發送郵件報警

# 編寫檢查所有分區利用率的腳本chkdisk.sh 
#!/bin/bash 

LIMIT=80
MAIL=root@localhost

df | sed -rn '/^\/dev\/sd/s#^([^[:space:]]+).* ([[:digit:]]+)%.*#\1 \2#p' | \ 
while read DISKPART USED;do
   if [ $USED -gt $LIMIT ];then
        echo "$DISKPART has been used $USED%" | mail -s "Warning" $MAIL
   fi
done

# 給腳本添加執行權限
chmod u+x chkdisk.sh

# 添加計劃任務
echo '* */6 * * 1-5 /root/chkdisk.sh' >> /var/spool/cron/root

# 查看計劃任務
crontab -l
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章