Linux任务计划、周期性任务执行
1、at命令
命令格式:
at [OPTION]... TIME
TIME:
HH:MM [YYYY-mm-dd]
noon,midnight, teatime(4pm),tomorrow
now+#(例如: now+1hours)
UNIT:minutes, hours, days, OR weeks
at的作业有队列,用单个字母表示,默认都使用a队列;
常用选项:
-l:查看作业队列,相当于atq
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-q QUEUE:指明队列;
2、cron
周期性任务计划:cron
服务程序:
cronie:主程序包,提供了crond守护进程及相关辅助工具;
CentOS 7:
systemctl status crond.service
Active: active (running) ... ...
CentOS 6:
service crond status
... is running
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
特殊符号 符号 含义 * 表示任意时间都可以 - 表示取值访问
crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;
注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:
(1) COMMAND > /dev/null 执行了输出到/dev/null
(2) COMMAND &> /dev/null 无论正确和错误都输出到/dev/null
练习:
1、每12小时备份一次/etc目录至/backups目录中,保存文件 名称格式为“etc-yyyy-mm-dd-hh.tar.xz”
2、每周2、4、7备份/var/log/secure文件至/logs目录中,文件名格式为“secure-yyyymmdd”;
3、每两小时取出当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中;
制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
(1)编辑文件脚本配置文件date.sh
[aaa@qq.com tmp]# vim date.sh
#!/bin/bash
date "+%Y-%m-%d %H:%M:%S"
(2)更改脚本配置文件的运行级别
[aaa@qq.com tmp]# chmod +x date.sh
(3)配置crontab -e
(4)查看crontab -l