天天看点

at,crontab定时程序

介绍

程序员对于定时执行任务一定不陌生,很多任务为了减少对用户的干扰,如系统更新、维护、数据库结构变更等,通常会选择在凌晨进行。对于一些简单的无需人工照看的任务,就可以预先写好命令,并设定时间自动运行,然后就可以安心睡大觉了。

其他情况还有,可以预计的将来要做的操作,为了防止遗忘,先写好命令脚本,然后设置自动运行,就可以把这事从你的日程表里划掉啦。

下面进入正题。

一、at

1. 常用命令

基本用法:at [参数] [时间]

控制台读入任务完毕,ctrl+d结束。

参数 说明
at -l 或 atq 查看当前任务
at -d [任务id]或atrm 删除定时任务
at -c [任务id] 打印任务内容
at -f [文件] 从指定文件读入任务,而不是从控制台
2. 用法

时间的指定非常灵活,下面列举常用几种:

at 04:00

at 04pm

at noon

at now + 3min/minutes/hours/days/weeks

at 04pm + 20min

at today/tomorrow

at 7:30pm 2017-09-26

二、cron

定时任务命令crontab = chronos + table。chronos来源于希腊语,原意是时间

命令
crontab -e 编辑定时任务,可以增加或删除。推荐
crontab -l 列出当前用户的定时任务
crontab -r 删除当前用户的定时任务
crontab [test.cron] 用test.cron(自己定义)覆盖定时任务文件 (不推荐)
2. 配置说明
at,crontab定时程序

crontab -e的默认文件,对配置有了初步的说明,基本够用。下面通过示例形象说明:

指令 功能
*/2 * * * * echo 'holy shit' >> test.txt 每两分钟执行一次
20-40/2 * * * * echo 'holy shit' >> test.txt 20到40分钟,每两分钟执行一次
20-40/2, 50 * * * * echo 'holy shit' >> test.txt 20到40分钟,每两分钟执行一次,第50分钟也执行一次
0 3-5 * * * echo 'holy shit' >> test.txt 每天的3到5小时开始时执行一次
0 3-5 3,5,6 * * echo 'holy shit' >> test.txt 每月3、5、6号的3到5点开始时执行一次
3. 日志地址

一般情况下,crontab日志在/var/log/cron.log.

如果没有,那么就在/var/log/syslog,可通过下面命令查看cron日志:

grep cron /var/log/syslog
           

修改日志位置:

sudo vi /etc/rsyslog.d/50-default.conf

#找到下面的line
#cron.*                         /var/log/cron.log
#去掉注释
           
sudo systemctl restart rsyslog
#查看启动状态
sudo systemctl status rsyslog