`

linux crontab调度脚本

阅读更多

linux 下crontab调度命令定时执行 PHP 脚本 / php 文件定时执行

网上随便搜索也 N 多相关资料了,这里就讲下 PHP 程序开发人员需处理的问题。先看下面一行:

*/2 2 0-22 * * * / bin/sh / usr/local/web/worksh/cron_env.sh / usr/local/php/bin/php / usr/local/web/mycrontab.php p ara_val1 p ara_val2 (注:每个蓝色加粗字母或 / 前有一个半角空格;另: p ara_之间无空格,显示问题

这一行看起很长,可以按 5 小节处理,一节节理解;

1>
*/2 2 0-22 * * * / bin/sh
--------- linux
系统 运行定时器文件的时间(五个 * 号,中间有空格)和调度命令( / bin/sh

五个星( * )号分别代表的意义是:分 时 日 月 周 命令

* —
分钟,从 0 59 之间的任何整数
* —
小时,从 0 23 之间的任何整数
* —
日期,从 1 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
* —
月份,从 1 12 之间的任何整数(或使用月份的英文简写如 jan feb 等等)
* —
星期,从 0 7 之间的任何整数,这里的 0 7 代表星期日(或使用星期的英文简写如 sun mon 等等)

写法: * (星号)表“所有”, / (斜杠)表“每隔”, - (横杠)表“到”, , (英文逗号)表“第”
范例:
0 10,12 * * * /usr/bin/backup
每天 10 点和 12 点执行文件备份;
*/2 2 0-22 * * * / bin/sh 在每天 20 00 22 00 之间每 2 分钟执行一次 sh 命令;
0 5 -11/2 8 * mon,wed / bin/sh 每个月的 8 号和每个礼拜的礼拜一和礼拜三的早上 5 点到 11 点每隔二小时执行一次;
25 3 1,10,22 * * /etc/init.d/apache2 restart
每月 1 10 22 日的 3 : 25 重启 apache

/ bin/sh 调度命令 表示要执行的任务(可以使运行 linux 系统命令 , 也可以是执行你自行编写的 linux 脚本命令)

 

2> / usr/local/web/worksh/cron_env.sh 调度命令的执行程序路径(本处为 linux 系统中 sh 的路径)

 

3> / usr/local/php/bin/php 4 小节文件(本处为 PHP 文件)的执行程序解析文件(或叫编译)

4>
/ usr/local/web/mycrontab.php 定时器程序文件(你自己站点或应用的文件)路径

5>
p ara_val1 p ara_val2 程序文件参数 (如 web URL 参数一样)(本处为带了 p ara_val1 p ara_val2 二个值)

再啰嗦一句:如果 PHP 里要获取这二个值,可以用 $argv[1] 获取第一个值, $argv[2] 获取第二值;

 

 

程序开发人员的工作,稍微大点的公司,都不会让你去做运维的事情,所以,理解了上面这行,定时器就基本 OK 了,当然,在提交给运维的时候,别忘了告诉运维,你这程序要在哪台服务器上定时执行。

 

如果你是在大公司,公司服务器环境也是 linux ,那么下面的扩展知识,你就不用看了!

 

下面是应付小公司( 1 、公司服务器为非 linux 或者说无法跑 crontab 调度脚本的 2 、干脆就是买了代理服务器空间(新网,万网那种几百兆 XX 空间的),不能设置任何服务器脚本)

方法一:假定时器或叫触发式定时器(本人命名,如有雷同,纯属同一语文老师所教 !

 

 

如果,你的内容,更新量不大,也不要非常及时;可以在程序开头,写一个判断,(在 txt 或数据库中存储一个判断基数,判断时间),根据用户访问的当前时间,如果未更新,就执行 XX 定时更新文件,反之跳过。

 

方法二:通过设置 ignore_user_abort() 函数的有效期,来实现定时器PHP 脚本的连接执行(不需用户访问站点);

 

ignore_user_abort() 可以实现当客户端关闭后仍然可以执行 PHP 代码,可保持 PHP 进程一直在执行,可实现所谓的计划任务功能与持续进程,只需要开启执行脚本,除非 apache 等服务器重启或有脚本有输出,该 PHP 脚本将一直处于执行的状态,初看很实用,不过代价是一个 PHP 执行脚本的持续进程,开销很大,如果你是买的那种 100M 空间,很可能会被服务器管理人员关掉或因他们重启 appache 导致脚本不再执行,所以你应该跟方法一结合使用,到用户访问时,判断这个连接是否正常,如果不正常再次开启;

 

1>     每隔 15 分钟循环执行

<?php

ignore_user_abort();

set_time_limit(0);

$interval=60*15;

do{

// 执行的业务

}while(true);

?>

 

自定义实现输出 log 并跟踪 ignore_user_abort() 函数的执行结果

 

 

 

 

 

 

 

 

 

 

 

<?php

ignore_user_abort ( TRUE );

set_time_limit ( 0 );

$interval = 10;

$stop = 1;

do {

    if( $stop == 10 ) break;

    file_put_contents('ignore.log',' Current Time: '.time().' Stop: '.$stop);

    $stop++;

    sleep ( $interval );

} while ( true );

?>

 

打开 ignore . log 文件,文件内容如下:

 Current Time: 1338878338 Stop: 9

其原理是即使客户端终止脚本,仍然每隔 10 秒钟执行一次,并打印出当前时间与终止点,这样就可以测试出 ignore_user_abort() 函数的具体效果。

 

if( connection_status () != CONNECTION_NORMAL ) 判断是否正常连接。

 

分享到:
评论

相关推荐

    linux crontab 详解

    在Linux系统中,`cron` 是一个后台服务程序(daemon),用于调度周期性任务。它按照预定的时间间隔执行用户定义的任务,例如运行脚本或执行命令等。`crontab` 则是管理这些定时任务的工具,它允许用户创建、编辑和...

    Linux crontab 命令格式与详细例子

    Cron是Linux系统中的一个守护进程,用于调度周期性执行的任务或脚本。Cron通过读取每个用户的crontab文件来确定哪些任务需要被执行,以及何时执行。本文将深入解析Crontab命令的格式、参数及其在实际场景中的应用。 ...

    Linux下定时执行脚本

    Linux 下的定时执行脚本是通过使用 crontab 文件来实现的。 crontab 文件中包含了一些计划任务,可以根据需要进行添加、删除和修改。下面将详细介绍 Linux 下的定时执行脚本的设置和使用。 环境变量设置 在 Linux ...

    linux crontab 实现每秒执行的实例

    `Linux crontab` 是一个强大的任务调度命令,用于在特定的时间间隔或特定时间执行自动化任务。然而,标准的 `crontab` 配置并不能支持每秒执行任务,因为其最小的时间单位是分钟。但通过一些技巧,我们可以实现每秒...

    suse linux crontab 任务计划 sh文件不能执行分析

    在Linux系统中,`crontab` 是一个强大的任务调度工具,用于自动化周期性的系统或用户任务。然而,有时我们可能会遇到这样的问题:在终端中能够正常运行的shell脚本(`.sh` 文件),在通过`crontab` 安排时却无法执行...

    Linux Crontab Shell脚本实现秒级定时任务的方法

    在Linux系统中,Crontab 是一种强大的定时任务调度工具,通常用于按设定的时间间隔执行特定的任务。然而,Crontab 默认的精度只到分钟,无法实现秒级定时任务。要实现在Linux中进行秒级定时任务,我们需要通过编写...

    crontab离线包.zip

    这个“crontab离线包.zip”包含的是与`crontab`相关的软件包,用于在Linux环境中安装和管理任务调度。资源难寻且可能需要积分下载,这表明这些软件包在某些情况下可能比较稀缺。 `crontab`是Linux下的一个守护进程...

    linux crontab定时触发命令.docx

    Linux系统中的crontab命令是一个强大的定时任务调度工具,用于设置周期性被执行的任务。通过crontab,我们可以设定特定时间执行指定的命令或者脚本,以实现自动化维护和管理。以下是对crontab命令的详细解析: 1. *...

    Go开发的crontab 代替linux原生crontab.zip

    `crontab`是一个Unix/Linux系统中的计划任务调度命令,它允许用户按照设定的时间间隔运行指定的程序或脚本。原生的`crontab`依赖于系统的守护进程,可能在资源有限的环境中不那么理想。Go语言版本的`crontab`可能...

    linuxcrontab定时触发命令.pdf

    Linux下的crontab命令是一个非常重要的工具,用于设置周期性的任务调度,比如定时执行脚本、备份文件等。本文将详细介绍如何使用crontab来定时触发命令,以及相关的配置和注意事项。 首先,为了实现定时备份MySQL...

    linux Crontab 使用基础教程.docx

    Linux中的Crontab是一个强大的定时任务调度工具,用于在特定的时间点执行预定义的任务。它源自希腊词"chronos",意为“时间”。Crontab允许系统管理员和普通用户安排自动化任务,如定期备份、日志清理、系统维护等。...

    Linux调度命令2

    ### Linux Cron调度命令详解 #### 一、Cron简介 Cron是Linux系统中的一个非常重要的后台服务,它主要用于管理周期性的重复任务。通过cron,我们可以轻松地安排各种任务自动执行,比如定时备份数据、定时清理日志...

    linux 运维自动监测脚本(CPU,内存,磁盘,负载),自测成功

    通过crontab调度,系统将在设定的时间自动执行监控脚本,确保在资源异常时能及时通知运维人员,从而提高系统的稳定性和可用性。 记住,为了确保脚本的正常运行,需要给予执行权限,如`chmod +x monitor.sh`,并且...

    在linux下设置脚本自动运行的方法.

    crond是Linux系统中的定时任务调度工具,它读取位于`/var/spool/cron`目录下的cron文件,并按照其中的规则执行相应的命令或脚本。 为了配置crond任务,可以使用`crontab`命令编辑cron文件: ```bash crontab -e ```...

    Linux中crontab输出重定向不生效问题的解决方法

    在Linux系统中,`crontab`是一个强大的定时任务调度工具,它允许用户安排命令或脚本在特定的时间点执行。然而,在实际使用中,有时会遇到`crontab`命令的输出重定向不生效的问题,这可能会导致无法正确记录和分析...

    Linux下清理数据库shell脚本

    综上所述,"Linux下清理数据库shell脚本"涉及了Linux系统管理、数据库备份策略、shell脚本编程、任务调度和错误处理等多个方面。通过编写这样的脚本,我们可以实现自动化运维,提高工作效率,同时保障数据的安全性和...

    Linux Crontab 定时任务全攻略:从基础语法到高效运维实战

    本文全面讲解了 Linux 系统中 crontab 的使用方法,帮助用户快速掌握定时任务的配置和管理。首先,介绍了 crontab 的基本概念及其依赖的 cron 服务,并详细说明了时间调度字段的含义及其灵活用法,如星号、逗号、...

    Linxu、AIX系统下Crontab任务切换脚本.pdf

    Crontab是Unix类系统中用于自动化任务调度的一个强大工具,它允许用户按照预设的时间间隔运行命令或脚本。 1. **Crontab基础** - Crontab允许用户定义定时任务,格式包括分钟、小时、日期、月份和星期,以决定何时...

Global site tag (gtag.js) - Google Analytics