linux crontab 定时任务

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天直接退出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值