crontab定时任务

 

最近工作需要在指定时间运行代码,多次用到Linux的crontab定时任务机制,趁着春节假期做一个梳理总结。

 

1 crontab管理

(1)安装

yum install crontabs

(2)设置开机启动

systemctl enable crond

systemctl start crond

(3)查看状态

systemctl status crond.service

(4)停止

systemctl stop yum-cron

systemctl stop crond

(5)重新加载

systemctl reload crond.service

(6)crontab任务管理常用命令

crontab -l # 列出当前的所有调度任务

crontab -l -u username # 列出用户username的所有调度任务

crontab -r # 删除所有任务调度工作

 

2 配置定时任务

(1)任务配置格式

crontab任务配置基本格式:

*   *  *  *  *  [username] command

在上行配置格式中,每一列(每一个*)代表一个配置项,具体含义如下所示:

第1列表示分钟0~59 每分钟用 或者 /1 表示,*/5表示每5分钟

第2列表示小时0~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0,7都可表示星期天)

第6列要运行的命令或执行shell脚本

下面我们通过一些实例来说明:

5      *       *           *     *     ls         #  指定每小时的第5分钟执行一次ls命令

30     5       *           *     *     ls        #  指定每天的 5:30 执行ls命令

30     7       8           *     *     ls        # 指定每月8号的7:30分执行ls命令

30     5       8           6     *     ls        # 指定每年的6月8日5:30执行ls命令

30     5       8           6     *     ls        # 指定每年的6月8日5:30执行ls命令

30     6       *           *     0     ls        # 指定每星期日的6:30执行ls命令

30     3     10,20         *     *     ls       #  每月10号及20号的3:30执行ls命令

25     8-11    *           *     *     ls       #  每天8-11点的第25分钟执行ls命令

*/15   *       *           *     *     ls        # 每15分钟执行一次ls命令

30     6     */10          *     *     ls       #  每个月中,每隔10天6:30执行一次ls命令
 

(2)/etc/crontab /etc/crontab是系统级别的定时任务,这种方式配置定时任务时,有一个专门的字段用于指定用户。使用vim打开/etc/crontab文件,可以看到如下内容:

(3)/var/spool/cron/username /var/spool/cron/username是用户级的定时任务,每个用户的定时任务后,都配置在/var/spool/cron目录下,与用户名同名的文件中。可以直接使用vim命令直接将定时任务写入/var/spool/cron/username文件,也可以使用“crontab -e”命令配置,最终结果会自动写入/var/spool/cron/username文件。

Tags: