crontab调度任务入门
Cron
是一款类Unix的操作系统下的基于时间的任务管理系统,Cron
用于操作系统(CentOS)周期性执行程序或者脚本。例如有一个程序,想要每天凌晨 2 点执行,或者需要每周备份一次文件,类似这些事情可以通过一个由 cron
执行的脚本来完成。
cron的概念
Cron
是一个守护进程。那么什么是守护进程?daemon
是一个总是在后台运行的程序,用户不能直接访问 daemon
。Cron
每分钟检查 crontab
(crontab
是Cron
表的缩写形式)文件,在特定的一分钟内检查某个作业并执行,Crontab
包含一些称为 cron
的程序/命令。
crontab
是一个文本文件,执行以下命令可以查看相关信息:
crontab -e
文件可以使用 vim 进行编辑,按照上图的格式新增一行。
能做什么
对于服务器管理人员来说,cron
并不陌生,一般都相当熟悉。下面来看看 cron
可以解决什么问题:
- 疫情数据,如果需要做一个疫情跟踪,就需要每天定时去抓取,这个时候可以安排
cron
任务来每天定时执行 - 服务器数据定时备份
- 日志分析报告,定时分析服务器日志生成报告,通过邮件发送
- 定时清理服务器临时文件或者日志
- 定期更新任务
Cron任务格式
任务格式如下,前五个参数决定了程序的执行时间。
参数格式按顺序如下:
- 分钟(0~59)
- 小时(0~23)
- 天(1~31,但是需要考虑当前月份的天数)
- 月(1~12)
- 星期(0-6,0为星期天)
开始 cron
打开终端,输入crontab -e
回车,然后在文件底部添加一行:
*/2 * * * * echo "hello cron" > ~/hello
如果需要验证规则,可以通过在线平台验证,如图:
corn
将每隔 2 分钟执行一次,并在主目录中保存一个名为 hello
的文件,文件内容包含 hello cron
。
在 WEB 编程中,通常程序不会在后台一直运行,如一个PHP网页,只有有请求的情况下才会执行,如果定时任务的逻辑在 PHP 页面中,则可以通过定时任务访问 URL 的形式来启动。
*/10 * * * * curl "https://www.devpoint.cn/index.shtml"
上面的任务是每10分钟访问一次,以启动WEB上的任务逻辑。
总结
cron
还是有很多使用场景,备份、下载、抓取、发送邮件等等,可以做一些周期性的任务。