定时任务是比较常用的一项功能,crontab在Linux最常用的定时任务,非常稳定可靠。一般情况crontab默认安装有,可以先查看crontab有状态:

service crond status   #查看crontab状态,一般是Active: active (running)

如果crontab没有运行可以执行下面相关代码进行设置:

/sbin/service crond start       #启动
/sbin/service crond stop        #停止
/sbin/service crond restart     #重启服务
/sbin/service crond reload      #重新加载

如果crontab处于运行状态,编辑crontab即可:

crontab -e     #编辑crontab

每一行代表一个任务,一共六个字段,前五段是时间设定段,第六段是要执行的命令。示例:* * * * * command,分别代表:分,时,日,月,周 命令

  • 分的取值: 从0到59之间的任何整数。
  • 时的取值:从0到23之间的任何整数。
  • 日的取值:从1到31之间的任何整数。
  • 月的取值:1到12之间的任何整数。
  • 周的取值:从0到7之间的任何整数。

各段中还可以使用特殊字符进行设置:

  • 星号(*):代表全选,选择所有值。

  • 逗号(,):代表特定范围。

  • 中杠(-):代表连续范围。

  • 正斜线(/):代表间隔频率。

看看几个示例(N取值正整数):

*/n * * * * command         #每隔N分钟运行一次,例如每隔一分钟运行一次:*/1 * * * * docker run nginx
2 * * * * command           #每小时的第2分钟运行一次
0 n * * * command           #每天N时运行一次,例如每天2点运行一次:0 2 * * * docker run nginx
0 1,2 * * * command         #每天凌晨1点,2点各运行一次
15 1-5 * * * command        #每天凌晨1点15分,2点15分,3点15分,4点15分,五点15分,各运行一次
0 1 1 * * command           #每月1号凌晨1点执行一次
0 1 * * 1-5 command         #周一至周五凌晨1点执行一次

编辑完之后保存退出即可,可以通过查看命令查询当时行执行的任务:

crontab -l

查看日志:

tail -f /var/log/cron