crontab是Ubuntu系统自带的系统级定时任务执行工具。类似于windows系统的任务计划。
网上虽然有很多这方面的教程,但还是让我在使用的过程中产生疑惑以及无解。。。(拜托大佬们写教程的时候写清楚点。。。)
参考:ubuntu定时执行任务
第一次用要注意一些问题,下面会说到。
root用户登陆终端,否则的话下面的命令加sudo运行
首先确认cron是否在运行
ps -ef | grep cron
如果没有在运行就开启它,如果下面命令无法启动,再去百度一下吧,我没试过,是参考上面的教程的。
sudo service cron start
然后开始使用crontab
crontab -e
第一运行的话,它会提示 下面这句话,别急,他只是说你之前没有定时任务,现在给你新建一个文件用来编写你的定时任务
no crontab for root - using an empty one 888
接着如果出来下图的东西:
这是告诉你选择编辑器打开,选择你熟悉的编辑器就会自动打开定时任务文件。
ok,如果你没选择编辑器,就像我一样,当时不懂这是什么操作,以为出问题了,就退出去了。
下次再运行crontab -e 就只会提示 :no crontab for root - using an empty one 888
这时候你就需要重新用命令 select-editor 弹出上图继续选择默认编辑器。
选择好之后,运行crontab -e就会打开新建的文件了,如下图
上面我已经新建了一个定时任务,运行php文件。
对,50 11 * * * 代表每天11:50 ,/usr/local/bin/php 是系统php所在位置,后面跟着的就是你要运行的php文件。
最后保存文件,我用的是vim 所以正常的 :wq 保存文件就可以了
下面列一下,定时任务的各种时间表示,至于任务如何运行,就跟你平时怎么在终端运行你的程序一样。你也可以用你的执行命令在终端跑一下,测试是不是能成功执行。
先解释定时的时间格式,前面五个数字分别代表 分 时 天 月 周
- 第一个字段:分钟(0~59)
- 第二个字段:小时(0~23,0表示0点
- 第三个字段:日期(1~31)
- 第四个字段:月份(1~12)
- 第五个字段:周(0~7),数字0或7都代表“星期日”
- 第六个command:就是要执行的命令
- * (星号) 表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
- ,(逗号) 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
- -(减号):代表一段时间范围内,比如10 9-12 * * * 表示9点到12点之间每个小时的第10分钟都执行程序
- /(斜线) 一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 /2 代表每隔两分钟。所以 /1 和 * 没有区别
ps:周与日和月不能同时并存!!
1.每多少秒/分钟/小时/天/月/年 开始运行程序
由于没有秒这个选项,就无法做到每多少秒运行程序了。每秒运行程序的意义也不大。
每x分钟执行 */x * * * * command
每x小时执行 * */x * * * command
每x天执行 * * */x * * command
每x月执行 * * * */x * command
每x周执行 * * * * */x command
每小时执行 0 * * * * command
每天执行 0 0 * * * command
每周执行 0 0 * * 0 command
每月执行 0 0 1 * * command
每年执行 0 0 1 1 * command
2.指定日期执行
每天x点y分执行程序:y x * * * command
每周z x点y分执行程序 y x * * z command
每月z日x点y分执行程序 y x z * * command
3.指定时段执行
每天在x点到y点之间每隔z小时执行程序 0 x-y/z * * * command
每天在x点到y点之间每隔z分钟执行程序 0,z x-y * * * command
每月在周x到周y之间w时z分钟执行程序 z w * * mon-wed command