Linux 定时工具 cron 的使用
定时任务是经常被用到的,比如系统备份、数据导出、数据监控等。在 Linux 中,系统提供了 cron 服务,可以很方便地实现定时执行。本篇文章介绍了 cron 服务的一些基本概念和使用方法。
crond 和 crontab
crond 是后台守护进程的名称,用来实际执行脚本,它在系统中是一直运行的。
crontab 是一个工具,用来管理定时任务列表,比如添加作业、编辑作业、删除作业、查看作业。作为管理工具,不会后台运行,需要手动调用,执行完自动退出。
管理 crond 服务
crond 默认没有开启,需要手动启动一次服务。服务启动后,会一直运行,即便是重启系统,也会自动运行。相关命令使用 systemctl
执行:
# 启动服务
systemctl start crond
# 关闭服务
systemctl stop crond
# 重启服务
systemctl restart crond
管理定时任务
创建一个 cron 文件 /home/apps/backup.cron
,每天 1 点整执行脚本 backup.sh
,内容如下:
0 1 * * * /home/apps/backup.sh
使用 crontab 添加定时任务:
crontab /home/apps/backup.cron
查看定时任务:
crontab -l
0 1 * * * /home/apps/backup.sh
删除所有任务:
crontab -r
编辑定时任务:
使用 crontab -e
可以编辑定时任务,使用 vim 编辑器直接修改即可。编辑完成后立即生效,不需要重新添加。编辑定时任务不影响 backup.cron
文件,因此不建议使用 crontab -e
直接修改。最好是修改 cron 文件然后重新添加任务。这样可以有个备份,方便日后使用和查看。
查看日志:
在作业执行出现异常(或作业脚本输出日志)时,cron 服务会输出日志。查看的地址位于 /var/log
下。eg. ls /var/log | grep cron
。
crontab 语法
cron 的定时任务需要在文件中设定执行时间,包括时分秒、天数等,一共七个部分,格式如下:
分 时 日 月 星期 年 命令
- 分:必须,可选 0-59,可设置 ,-*/ 特殊字符
- 时:必须,可选 0-23,可设置 ,-*/ 特殊字符
- 日:必须,可选 1-31,可设置 ,-*?/LW 特殊字符
- 月:必须,可选 1-12 或 jan-dec,可设置 ,-*/ 特殊字符
- 星期:必须,可选 0-7 或 sun-sta,可设置 ,-*?/L# 特殊字符
- 年:非必须,可留空,可设置 1970-2099,可设置 ,-*/ 特殊字符
特殊字符的含义如下:
- * – 全部。意思是在该时间的任意点都应当执行?不指定,任意。仅用于 日(月) 和 日(周)。0 0 5 *
- ? – 代表每个月的第5天零点,不论星期几。0 0 ? * 1 代表每周一,不论是当月的哪天
- , – 多个值的分隔符,例如 1,5,10
- - – 代表连续值,例如 1-20
- / – 步长。例如 5/15,代表从 5 开始,以 15 为步长。因此,当 5/15 位于分钟的位置时,表示小时内的第 5、20、35 和 50 分钟
- L – 最后一天。可以是每月最后一天或者每周最后一天。如果用在 天(周) 字段,并且前面加数字,则表示最后一个周 N。例如 5L,表示最后一个周五(5 表示周五,L 表示最后)
- W – 工作日,指周一到周五的任意一天
- # – 表示第几个的意思,例如 6#3,表示当月第 3 个星期六(6 表示周六,3 表示第 3 个)
Linux 定时工具 cron 的使用
http://lpxz.work/posts/25354/