基础脚本实例
1、显示统计占用系统内存最多的进程,并排序。
top命令 按m以内存使用率排序
2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
我们采用多个Ping同时进行任务,一个一个Ping太慢
首先我们先展示一下一个一个的ping的现象
哪怕是每次只Ping一秒,都需要5分钟才能ping完。所以采用后台并发运行
vim for_ping.sh
#!/bin/bash
NETID=192.168.0
for HOSTIP in {1..254};do
{
if ping -c1 -w1 $NETID.$HOSTIP &> /dev/null ;then
echo $NETID.$HOSTIP Communication success! |tee -a hostlist.txt
else
echo $NETID.$HOSTIP Communication fail! |tee -a hostlist.txt
fi
} &
done
wait
chmod +x for_ping.sh
./for_ping.sh
现象
因为是并发运行,所以速度特别快,瞬间就能测试完所有的网络连通性
while 写法
#!/bin/bash
HOSTIP=1
NETID=192.168.0
while [[ $HOSTIP -le 254 ]];do
if ping -w1 -c1 $NETID.$HOSTIP &> /dev/null;then
echo $NETID.$HOSTIP Communication success! |tee -a hostlist.txt
else
echo $NETID.$HOSTIP Communication fail! |tee -a hostlist.txt
fi
let HOSTIP++
done
3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
crontab -e
30 1 * * 1-5 /usr/bin/tar -cvf /backup/etcbak-`date -d "-1 day" +%F-%H` /etc/
4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
vim diskcheck-awk.sh
#!/bin/bash
DISKUSE_MASK=`df |grep /dev/sd |awk -F " +|%" '{print $5}'|sort -nr|head -1`
WARNING=80
if [ $DISKUSE_MASK -gt $WARNING ] ;then
echo "Disk space will be full,userd:$DISKUSE_MASK%"
mail -s "Hard disk usage" `whoami`@`hostname`
fi
crontab -e
chmod +x diskcheck-awk.sh
*/10 * * * 1-5 /bin/bash diskcheck-awk.sh &> /dev/null
测试:我们将警戒值改为10,来测试下