本文主要介绍了Linux中定时任务的相关知识。
在日常中,有一些任务需要定时执行,例如:每天定时更新杀毒软件的数据库,每天定时执行数据清洗等脚本。这里就需要做定时任务。
(1)概述
在Linux中定时任务主要分为两种:一次性任务和周期性任务。
一次性任务使用的命令是at和batch;
周期性任务使用的命令是vivex和cron。
(2)一次性定时任务
①命令at
②设置定时任务:at TIME
其中后面的TIME可以用准确时间和模糊时间。
例如:
at noon,midnight,teatime(下午四点)
如图,使用at now+3min,定时3分钟后的任务:
如图使用at命令后会出现at的提示符,只用输入要执行的命令即可:
在输入完要执行的命令后,按ctrl+D提交即可:
执行的结果将以邮件的形式返回给任务发起者。使用mail命令可以查看邮件。
这里我有很多定时任务的邮件,只需要键入相应的编号即可查看邮件
查看邮件完毕,键入q即可退出
③列出尚未执行的定时任务
at -l
④删除尚未执行的定时任务
at -d #或者atrm #
④执行文件中的命令
at -f /PATH/TO/AT_SCRIPT TIME
例如:文本attest.txt文本如下
使用at -f指定文本文件中的命令执行时间
执行后结果如下:
(3)周期性定时任务
①概述
周期性定时任务常用crond来使用,这是一个daemon。常用的命令是crontab。它主要分为系统cron和用户cron。
其中系统cron在/etc/crontab中。如下图:
用户cron在/var/spool/cron/USERNAME中:
②crontab命令
1.运行者身份
(1)系统cron:在配置文件中指定
一共7个字段,如 3 4 * * * root cat /etc/fstab。中间用空格分隔,前面对应完后6个空格对应完后,剩下的空格统一归为最后一个字段的命令。
其中每个字段分别表示:分钟 小时 在月中的日(1-31) 月(1-12) 星期 用户 命令。
(2)用户cron: 6个字段,与系统cron相比,无需指定用户身份。
①命令crontab
使用crontab后会出现类似文本编辑的页面,只需要编辑相应的定时命令即可。
②选项:
-u USERNAME:以其他用户身份定义。例如:crontab -e -u hadoop
(3)通配符:
*:相应时间点的所有有效取值
,:离散取值, 3,33 ****root date
-:连续取值:8-20/3 13 8-20/3 * * *
2.PATH
如果是脚本:在脚本中自行定义PATH=
&> /dev/null
4.小例子:
2,32 8-18/3 * * 1-5:星期1到5的8到18点中每3个小时的2分和32分
5.以秒为单位执行任务计划:
每隔10秒:* * * * * for i in {1..5}; do some_job && sleep 10; done; some_job
6.注意事项:
①使用%时要加反斜线。
②在RHEL5有anacron,这是对cron的补充。
转载于:https://blog.51cto.com/xlows/1390619