前言
在Linux
系统上执行定时任务, 使用crontab
还是很方便的(有关crontab的使用可看crontab指令笔记). 只需要一行命令就完成了.
但是, 美中不足的是, crontab
通过命令行管理任务, 无法通过代码库对任务进行管理. 若要更换机器, 所有任务都要重新增加一遍. 更糟的是若服务器突然崩了, 所有任务就都丢了.
我之前应对的操作, 是通过第三方的定时任务控件. 来自己实现定时任务.
直到最近我知道了这个路径: /etc/cron.d
, cron
在执行定时任务的时候, 会扫描路径/etc/cron.d
下的所有文件并执行.
那也就是说, 我在/etc/cron.d
路径下创建一个任务文件, 然后对这个文件进行管理就好了呀.
但是问题又来了, 我git
管理的内容必然不会到系统目录中啊. 有了, 只要在/etc/cron.d
路径下创建一个软连接不就好了么.
操作
1. 创建任务文件并通过git管理(路径随意)
注意: 文件内容和crontab
语法相同, 但是任务文件中命令前需要指定任务的执行用户, 否则任务执行会失败哦.
# 注释
* * * * * root echo 1
2. 通过软连接将文件映射到/etc/cron.d
下
假设任务文件为: /path/self_crontab
. 则创建软连接:
ln -s /path/self_crontab /etc/cron.d
大功告成. 至此, 就可以做到通过git
对定时任务进行管理啦.