shell示例3

Table of Contents

  1. 示例 1
  2. 示例 2
  3. 示例 3
  4. 示例 4

示例 1

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

ps -aux|sed '1d'|sort -k 6 -nr

示例 2

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

设定IP地址的网段

PREFIX=192.168.10
FRONT=1
END=10

开始ping,每个IP只ping 1次每次不超过1s.

for IP in $(seq $FRONT $END);do
ping -c 1 -w 1 $PREFIX.$IP &> /dev/null
&& echo -e $PREFIX.$IP 'success!'
|| echo -e $PREFIX.$IP 'fail!' &
done

当3s后可以确保完成,回车返回命令行提示符

sleep 3
echo

示例 3

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

%F:输出yyyy-mm-dd %H:输出HH

echo '30 1 * * 1,2,3,4,5 tar -Jcvf /backup/etcbak-$(date +%F-%H -d yesterday).tar.xz /etc'
>> /etc/crontab

示例 4

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

  1. 写脚本/usr/local/bin/diskcheck.sh

    MAX_US=$(df|sed '1d'|sort -k 5 -nr|sed -nr '2,$d;s#.* ([[:digit:]]{1,3})%.*#\1#p') # 磁盘最大利用率
    THRESHOLD=80 # 阀值

    达到阀值发送所有磁盘使用情况给root

    test $MAX_US -gt $THRESHOLD &&
    mailx root <<EOF
    disk will be full !!!!!!!!!!!!!

    $(df|sed -rn '//dev/(mapper|sd)/s#([^ ]). ([[:digit:]]{1,3}%).*#\2:\1#p'|sort -k 1 -t ':' -nr)
    EOF

  2. 更改 crontab

    echo '*/10 * * * 1,2,3,4,5 /usr/local/bin/disk_check.sh' >> /etc/crontab

posted @ 2019-11-22 09:21  stars_wisper  阅读(149)  评论(0)    收藏  举报