最近工作需要在指定时间运行代码,多次用到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文件。