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分钟运行一次任务?