1.直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
-
-e:创建和编辑定时任务,默认是创建和编辑当前用户的定时任务,只有root可以创建也编辑其它用户的定时任务。
-
-l:列出当前用户的定时任务,如果使用了-u参数指定了用户那么就是列出指定用户的定时任务。
-
-r:删除当前用户的定时任务,如果使用了-u参数指定了用户那么就是删除指定用户的定时任务。
-
-i:在删除用户命令前加以提示,-i参数不能单独使用需要结合-r参数以前使用。
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
crontab分别有五个时间段,以空格隔开分别如下:
minute hour day month week command 顺序:分 时 日 月 周
其中:
-
minute: 表示分钟,可以是从0到59之间的任何整数。
-
hour:表示小时,可以是从0到23之间的任何整数。
-
day:表示日期,可以是从1到31之间的任何整数。
-
month:表示月份,可以是从1到12之间的任何整数。
-
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
-
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
-
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
-
逗号(,):可以用逗号隔开的值指定一个列表范围,如:“1,2,5,7,8,9”,如果是month则表示这几个月执行该命令。
-
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
-
正斜线(/):可以用正斜线指定时间的间隔频率,例如“10-23/2”如果是指小时代表10点到23点每隔2个小时执行一次。例如*/1可以表示每隔一个小时执行一次。
其它限制:
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
I:
crontab -l
列出当前的计划任务
crontab -e
进入当前计划任务
insert
编辑
编辑完成后 ESC
Shift加:
wq保存退出 OK了
w保存
q退出
!q不保存退出
cd / (根目录
ll (显示目录下文件
cd .. (返回上一级目录
cat 文件名 (查看文件
vi 文件名 (编辑文件
CI模式
每天10:50执行
50 10 * * * php /home/www/www.123.com/cli.php Cli/jihuarenwu
每天晚上00:30执行
30 0 * * * php /home/www/www.123.com/cli.php Cli/jihuarenwu
curl 每2分钟 带post参数
*/2 * * * * curl -d "user=user&cmd=cmd" http://112.74.42.12:81/api/Crontab/Crontab
原生
30 0 * * * php /home/www/www.123.com/cob.php
curl
00 00 * * * curl -d "参数=值&参数=值" http://www.123.cn/模块/控制器/方法
直接访问该方法 带post参数 这种是框架地址
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
每10秒执行一次
* * * * * sleep 10; /bin/date >>/tmp/date.txt
crontab时间格式范例
1-3表示123
1-9/2表示13579
crontab范例
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
注意:
crontab里表示时间的五列数字取值范围和含义如下:
分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6) // 0 代表星期天
如果你的写法是:
0 0 */3 * *
其实,这样不是严格意义的每隔3天,因为第三位的*/3
等同于1-31/3
,也就是每个月第一天
执行一次,然后第四天
执行一次,第七天
执行一次...以此类推
这样的话 对于每一个月来说,执行周期都是
1,4,7,10,13,16,19,22,25,28,31
对!没错,31号执行完,第二天1号会再执行一次的!
别问我为什么,crontab的天是相对于一个月来说的,如果想实现绝对意义的每隔3天,只能自己写程序判断,然后每天执行,脚本中判断距离上次执行不足3天直接退出