linuxcrontab 定时任务

    xiaoxiao2021-03-25  93

    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表示13579crontab范例    每五分钟执行  */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天直接退出

     

    转载请注明原文地址: https://ju.6miu.com/read-19251.html

    最新回复(0)