Linux 第19天: (09月08日) 练习和作业

 

 

 


/var/spool/at  at任务列表


service atd status          查询服务状态
/etc/rc.d/init.d/atd status 查询服务状态
/etc/init.d/atd status      软连接查询

 

 

chkconfig --list atd
runlevel
ntsysv 图形界面设置服务启动选项
chkconfig --level 5 atd on 设置服务启动选项
runlevel

 


systemctl status atd 版本7服务查询
systemctl start atd 版本7启动服务

at -V   查询版本
at -l   列出任务表
at -c 1 查看任务详细定义
at -d   删除任务
at -f   任务以文件方式

at 10:00 -f /root/at.sh 任务以文件方式
at 10:00 < /root/at.sh 任务以文件方式

 


ll /var/spool/at 列出任务文件

 


at 10:00 -f at.sh -m 强制以邮件通知任务

 


/etc/at.deny   黑名单
/etc/at.allow  白名单

 


vim /etc/crontab  修改计划任务

 


cat /var/log/crontab 查看任务日志

cat /etc/cron.hourly/0anacron
cat /var/spool/anacron/cron.daily
cat /etc/anacrontab
cd  /etc/cron.daily/
cd  /etc/cron.weekly/

ll  /var/spool/cron 列出任务列表

 


crontab -r


 

 


练习

 


1、每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz”

 

mkdir /backup


crontab -e

*/10 * * * * /root/bin/disk.sh

 

vim disk.sh

 

1 */4 * * * /bin/cp -a /etc /backup/etc-$(date +'%Y%m%d%H%M') > /dev/null

 

1 */4 * * * tar Jcf /testdir/backup/etcbak-`date +\%F-\%H`.tar.xz /etc/ &> /dev/null

 

 


2、每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

 

crontab -e


1 1 * * 2,4,7 /bin/cp /var/log/messages /logs/message-$(date +'%Y%m%d%') > /dev/null

 

 


3、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

 

crontab -e


1 */2 * * * /bin/grep "^S" /proc/meminfo >> /temp/meminfo.txt

 

 


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

 

crontab -e


*/10 * * * 1-5 /bash vim disk.sh

 

vim disk.sh


#!/bin/bash
DISK=`df|grep'^/dev/sd.*'|tr -s ' ' '%'|cut -d% -f5|sort -n|tail -n1`
[ $DISK - gt 80 ] && wall "disk will be full"

 

 

 思考:

 


(1) 如何在秒级别运行任务?


* * * * * for min in 0 1 2; do echo "hi"; sleep 20; done

 

 


(2) 如何实现每7分钟运行一次任务?