Linux基础及总结8之shell练习
1、显示统计占用系统内存最多的进程,并排序。
1)使用htop工具,鼠标点击MEM%
2)使用top命令,输入大写的M按内存排序
2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
#!/bin/bash
ipaddr="192.168.2."
for i in {1..254};do
ping -c1 -W1 $ipaddr$i &> /dev/null
if [ $? -eq 0 ];then
echo "ping $ipaddr$i success!"
else
echo "ping $ipaddr$i fail!"
fi
done
#!/bin/bash
for i in {1..254};do
echo 10.0.35.$i >> ip.txt
done
sleep 3
while read ip;do
{
ping -c1 -W1 $ip &> /dev/null
if [ $? -eq 0 ];then
echo "ping $ip success"
else
echo "ping $ip fail"
fi
} &
done < ip.txt
wait
3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
crontab -e
30 1 * * 1-5 /bin/bash /root/etc_bak.sh &> /dev/null
#!/bin/bash
sdir="/etc"
ddir="/backup"
if [ ! -d $ddir ];then
mkdir -p $ddir
fi
tar czf $ddir/etcbak-`date -d "-1 day" +%F`.tar.xz $sdir &> /dev/null
if [ $? -eq 0 ];then
echo "`date "+%F"` backup $sdir file success" >> $ddir/backup.log
else
echo "`date "+%F"` backup $ddir file fail" >> $ddir/backup.log
fi
4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
crontab -e
*/10 * * * * /bin/bash /root/etc_bak.sh &> /dev/null
#!/bin/bash
declare -A disk
warning=70
df -H|sed -nr 's#^(/dev/.*) ([0-9]+%).*#\1 \2#p' > diskinfo.txt
while read line;do
index=`echo $line|sed -nr 's#^([^[:space:]]+) .*#\1#p'`
disk[$index]=`echo $line|sed -nr 's#.* ([[:digit:]]+)%.*#\1#p'`
if [ ${disk[$index]} -gt $warning ];then
echo "磁盘$index:使用率达到${disk[$index]}%,请关注!!"|mail -s "磁盘空间使用率超过70%告警" XXXXXX@qq.com
fi
done < diskinfo.txt
脚本执行测试结果: