Cronjob:Linux定时任务执行

使用cronjob可以实现各种形式的定时任务。也可以配合shell脚本运行。

简要使用说明

首先打开

在线cronjob生成器(可以直观看到接下来多次执行时间)生成你想要的时间命令,类似于0/1 * * * * ?,然后把你想要执行的命令附在后面,例如:

0/1 * * * * ?  test.sh

然后crontab -e,打开编辑器,向文件中添加上面这行代码,然后

service cron reload

即可。

如需执行多条命令,可以使用&&进行链接。

时间配置实例

m h dom mon dow command

1、每小时的第5分钟执行 ls 命令

5 * * * * ls

2、每5分钟执行 ls 命令

*/5 * * * * ls

3、每天的 4:30 执行 ls 命令

30 4 * * * ls

4、每小时执行 ls 命令

0 * * * * ls

5、每天执行 ls 命令

0 0 * * * ls

6、每周执行 ls 命令

0 0 * * 0 ls

7、每年执行 ls 命令

0 0 1 1 * ls

8、每月 8号 的 7:20 执行 ls 命令

20 7 8 * * ls

9、每年的 6月28号 5:30 执行 ls 命令

30 5 28 6 * ls

10、每星期日的 6:30 执行 ls 命令

30 6 * * 0 ls

注意:0 表示星期天, 1 表示星期一,以此类推;也可以用英文来表示,sun 表示星期天,mon 表示星期一等。

11、每月 10号和20号 的 4:30 执行 ls 命令

30 4 10,20 * * ls

注意:” , “ 用来连接多个不连续的时间

12、每天 8~11点 的第 25 分钟执行 ls 命令

25 8-11 * * * ls

注意:” - “ 用来连接连续的时间

13、每个月中每隔 10天 的 5:30 执行 ls 命令

30 5 */10 * * ls

即:每月的 1、11、21、31日 在 5:30 执行一次 ls 命令

14、每天 4:30 以 root 身份执行 /etc/cron.daily 目录中的所有可执行文件

30 4 * * * root run-parts /etc/cron.daily

15、真实使用中,一般都是执行自己的可执行文件

0 * * * * cd /data/sync-data/mdd;/data/GoProjects/bin/go-elastic-index -config=mdd.toml >> mdd.log 2>&1

crontab

crontab: crontab -r /删除某个用户的cron服务/ -e 打开编辑器 -l 列出定时任务

crond: service cron start /启动服务/ service cron stop /关闭服务/ service cron restart / 重启服务/ service cron reload /重新载入配置/

命令不执行的问题

注意cronjob是没有环境变量的。所以如果使用类似于python这样的服务,需要指明可执行文件的位置,例如

/usr/bin/python3 test.py

如果不添加则不能够执行。

另外,时间配置错误也可能导致不执行。参见第二节。

最后,记得重载配置。

路径问题:在 crontab 命令中只有 “绝对路径”,不存在相对路径,故执行任何命令都需要写绝对路径。

参考

  1. https://www.runoob.com/w3cnote/linux-crontab-tasks.html 菜鸟教程
  2. https://www.jianshu.com/p/d6d8d9f7f60c 详细介绍
  3. https://blog.csdn.net/ciky2011/article/details/38486935 一次执行多个命令
  4. https://github.com/ldang264/vue-cron-generator 一个cron generator的源码
  5. https://blog.csdn.net/GX_1_11_real/article/details/86535942 脚本无法执行问题
  6. https://daimajiaoliu.com/daima/4ed236ed090041c crond cronjob 控件
  7. https://blog.csdn.net/weixin_34942564/article/details/113053103 实例