linux下任务管理

来源:互联网 发布:net域名注册1元 编辑:程序博客网 时间:2024/04/29 10:04

Linux下定时执行php脚本

  1. crontab -e 打开编辑定时任务列表文件(-r:删除目前的时程表,-l:列出目前的时程表)

  2. 输入任务执行的时间参数和要执行的文件路径和文件名

  3. 命令 which php 查看linux下安装的php的路径

  4. */1 * * * * /usr/bin/php -q /var/www/runtest.php (前五个参数为时间参数:分 小时 月的第几天 哪个月 一周的第几天;第二参数为php的安装路径;第三参数-q:PHP 原本是应用在网页应用的﹐因此它内定会送出 HTML 的HEADER﹐但 是在此我们是要将 PHP 用作 Shell Script﹐”-q” 就是表示不要送 出HEADER 的意思;第四参数是要执行的php文件的路径)

  5. 五个时间参数的:

  1. 时程表的格式如下:
      f1 f2 f3 f4 f5 program

      其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
      当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
      当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
      当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
      当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
      使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
      例子:
      每月每天每小时的第 0 分钟执行一次 /bin/ls:
      0 7 * * * /bin/ls

      在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup:
      0 6-12/3 * 12 * /usr/bin/backup

      周一到周五每天下午 5:00 寄一封信给 admin@domain.name:
      0 17 * * 1-5 mail -s \"hi\" admin@domain.name < /tmp/maildata

      每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo \"haha\"
      20 0-23/2 * * * echo \"haha\"

  2. crontab 文件中的每一行都代表一项任务,它的格式是:

    minute   hour   day   month   dayofweek   command
    *

    minute ― 分钟,从 0 到 59 之间的任何整数
    *

    hour ― 小时,从 0 到 23 之间的任何整数
    *

    day ― 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
    *

    month ― 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
    *

    dayofweek ― 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
    *

    command ― 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)

    在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

    整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

    用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。

    正斜线(/)可以用来指定间隔频率。在范围后加上 / 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

    开头为井号(#)的行是注释,不会被处理。


0 0