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

Shell脚本和计划任务实践

上一篇:Linux文件解压缩命令7za


下一篇:常用转义字--linux