当前位置: 首页 > Linux

使用Linux的crontab定时执行PHP脚本的方法

时间:2023-04-06 22:04:35 Linux

先说cron,它是Linux下的一个定时执行工具。root以外的用户可以使用crontab实用程序来配置cron作业。所有用户定义的crontab都存储在/var/spool/cron目录中,并作为创建它们的用户执行。要以用户身份创建crontab条目,请以该用户身份登录,然后键入命令crontab-e以编辑用户的crontab。此文件使用与/etc/crontab相同的格式。当对crontab所做的更改被保存时,crontab文件将根据用户名保存并写入文件/var/spool/cron/username。cron守护程序每分钟检查一次/etc/crontab文件、etc/cron.d/目录和/var/spool/cron目录是否有更改。如果发现更改,则将它们加载到内存中。这样,当crontab文件更改时不必重新启动守护进程。安装crontab:yuminstallcrontabs指令:/sbin/servicecrondstart//启动服务/sbin/servicecrondstop//关闭服务/sbin/servicecrondrestart//重启服务/sbin/servicecrondreload//重新加载配置检查crontab服务状态:servicecrondstatus手动启动crontab服务:servicecrondstart查看crontab服务是否设置开机自启动,执行命令:ntsysvjoinbootautomaticallystart:chkconfig–level35crondon执行myscript。php每隔一小时执行如下:#crontab-e00****/usr/local/bin/php/home/john/myscript.php如果你的PHP脚本可以通过URL触发,你可以使用lynx或者curl或者wget来配置你的Crontab。以下示例通过使用Lynx文本浏览器访问URL每小时执行一个PHP脚本。Lynx文本浏览器默认以对话方式打开URL。但是,如下所示,我们在lynx命令行上使用-dump选项将URL的输出转换为标准输出。00****lynx-dumphttp://www.jb51.net/myscript.php以下示例使用CURL访问URL,每5分钟执行一个PHP脚本。默认情况下,Curl在标准输出上显示输出。使用“curl-o”选项,您还可以将脚本的输出转储到一个临时文件中。*/5****/usr/bin/curl-otemp.txthttp://www.jb51.net/myscript.php下面的例子使用WGET访问URL,每10分钟执行一次PHP脚本。-q选项表示安静模式。“-Otemp.txt”表示输出将被发送到一个临时文件。*/10****/usr/bin/wget-q-Otemp.txthttp://www.jb51.net/myscript.phpParameters  :-e Edittimerforthisusersetup.-l 列出该用户的计时器设置。-r 删除该用户的定时器设置。-u<用户名> 指定设置定时器的用户名。crontab格式:基本格式:分时日月星期命令******第一列表示分钟1~59每一分钟,用*或*/1表示第二列表示小时1~23(0表示0o'clock)3列代表日期1~31,第4列代表1~12月,第5列标识第0~6周(0代表星期日),第6列是要执行的命令。记住几个特殊符号的含义:“*”表示取值范围内的数字,“/”表示“每一个”,“-”表示从某个数到某个数,“,”分隔几个离散数的一些例子crontabfiles:3021***/usr/local/etc/rc.d/lighttpdrestart上面的例子是指每晚21:30重启apache。4541,10,22**/usr/local/etc/rc.d/lighttpdrestart上面的例子是指在每个月的1号、10号和22号的4点45分重启apache。101**6,0/usr/local/etc/rc.d/lighttpdrestart上面的例子是指每周六、周日凌晨1点10分重启apache。0,3018-23***/usr/local/etc/rc.d/lighttpdrestart上面的例子是指每天18:00到23:00之间每隔30分钟重启apache。023**6/usr/local/etc/rc.d/lighttpdrestart上面的例子是指每周六晚上11点重启apache。0*/1***/usr/local/etc/rc.d/lighttpdrestart每隔一小时重新启动apache023-7/1***/usr/local/etc/rc.d/lighttpdrestart11pm每隔一小时重新启动apache早上7点到0点之间的小时114*mon-wed/usr/local/etc/rc.d/lighttpdrestart重启apache04在每个月的4和每周一到周三的11点1月1日*/usr/本地/etc/rc.d/lighttpd重启