本文是自己学习的总结,仅以作分享。若有不对的地方欢迎指正。
at:只执行一次定时任务
at 时间:设置任务
Ctrl+d:结束任务编辑
at -l:查看任务
atrm 序号:删除任务
crontab:定时任务
通过 crontab,可以在固定的间隔时间执行指定的系统命令或script脚本。 时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合(注:日和周不要组合,会发生日期冲突)。
在/var/spool目录下有一个与用户同名的文件,这里存放有用户的定时任务。可以用crontab -l查看
在/etc下有cron.deny(不能使用crontab 命令的用户)与cron.allow(能使用crontab的用户)文件。如果两个文件同时存在,那么/etc/cron.allow 优先,如果两个文件都不存在,那么只有超级用户可以安排作业。
-l:查看当前定时任务
-e:设置定时任务,相当于编辑/var/spool目录下的crontab文件
-i:清空定时任务
-r:清空定时任务
crontab格式说明:
添加的命令必须以如下格式:* * * * * command path
前5个字段分别表示:分钟(0-59)、小时(1-23)、日期(1-31)、月份(1-12)、星期(0-6,0表示周日)
注:* 表示任何时刻; , 表示分割;-表示一个时段;/n表示每个n的单位执行一次
0 17 * * * ----------------------------17:00 执行
43 21 * * * ---------------------------21:43 执行
*/10 * * * * ---------------------------每隔10分 执行
2 8-20/3 * * * ------------------------8:02,11:02,14:02,17:02,20:02 执行
0,10 17 * * 0,2,3 -------------------每周日,周二,周三的 17:00和 17:10 执行
在前台运行某个作业时,终端被该作业占据。可以使用&命令把作业放到后台执行,它不会占据终端。例如:command >out.file 2>&1 &
2>&1 含义
例子:0 2 * * * /u01/test.sh >/dev/null 2>&1 &
在后台执行命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空,防止队列占满。
2>&1写在后面的原因是标准输出和错误都被重定向到/dev/null中。
注:2表示错误输出;1表示标准输出;0表示键盘输入
crontab注意事项:
1):计划任务参数中所有命令一定要用绝对路径的方式来写
2):执行 shell脚本任务前加 /bin/bash,防止脚本文件没有执行权限( x)
3):定时任务命令结尾加 >/dev/null 2>&1 &
4):计划任务中的分钟项目必须有数值,绝对不能为空或是 *号;日和周不能同时使用,否则就会发生冲突
5):定时任务日志 /var/log/cron*
6):新创建的 cron job不会马上执行,至少要过2分钟才执行。如果重启 cron则马上执行
7):在 crontab中%表示换行意思。如果要用话必须进转义 \%
8):注意环境变量问题。系统自动执行任务调度时是不会加载任何环境变量的。要用到环境变量时,可通过source命令引入。例如:0 * * * * . /etc/profile;/bin/sh
crontab -e:编辑定时任务
crontab -l:查看定时任务
crontab -ri:清空定时任务