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  阅读(132)  评论(0)    收藏  举报