Linux下的定时任务(at, crontab)
at
at命令,只执行一次,可以看作是延时任务
at命令格式
at (选项)(参数)
ctrl + D结束命令输入
示例:
1)使用相对时间执行命令
时间单位可以是minutes(分钟)、hours(小时)、days(天)或weeks(星期)
at now +3 minutes
2)使用绝对时间执行命令
它接受HH:MM形式的时间在一天的特定时间允许一项工作
at 20:00 2008-10-1 在具体时间执行
at允许复杂的时间规范,扩展POSIX.2标准。它接受HH:MM形式的时间在一天的特定时间允许一项工作。如果时间已经过去,则假定是第二天。你也可以指定midnight午夜、noon中午或teatime下午茶时间(4PM),并且你可以使用AM、PM来表达允许时间的上午和下午。你还可以表明作业在哪一天运行,通过给出一个形式上有月份名称和任意的年份的日期,或给出形式为MMDDYY、MM/DD/YY、DD.MM.YY、YYYY-MM-DD的日期。日期规格必须遵循一天的时间规格。你也可以给出now + count time-units(时间单位)的时间,时间单位可以是minutes(分钟)、hours(小时)、days(天)或weeks(星期),并且你能通过添加today或tomorrow后缀来告诉at命令今天或明天运行作业。
3)其他命令
atq 查看待处理的作业
atrm [jobid] 删除无用的作业
查看at执行的具体内容:一般位于/var/spool/at目录下面
参考链接:https://www.cnblogs.com/diantong/p/9366449.html
crontab
crontab周期执行任务
crontab是linux下的定时执行工具,由于crontab是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭服务
#安装crontab
yum install crontabs
/sbin/service crond start #启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
使用:
直接用crontab命令编辑
cron服务提供 crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u #设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l #列出某个用户cron服务的详细内容
crontab -r #删除某个用户的cron服务
crontab -e #编辑某个用户的cron服务比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令crontab文件
示例:
#每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
参考:https://blog.csdn.net/weixin_34593388/article/details/116921337