详细的Linux Ubuntu定时执行Php脚本及Shell脚本笔记

时间:2022-08-10 07:57:44

LINUX 定时脚本

20161007日编辑

 一、Crontab命令解析                   

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

 

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

 

例如:

每1分钟执行一次command命令

* * * * * command

在上午8点到11点的第3和第15分钟执行命令:

3,15 8-11 * * * command

每一小时重启smb 命令:

* */1 * * * /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本命令:

01   *   *   *   *     root run-parts /etc/cron.hourly

 

二、 定时执行php脚本

1.确认系统中安装PHP-cli

安装命令:

apt-getinstall php5-cli

2.查看phpinfo()

若phpinfo()中"Server API"为"Apache2.0 Handler"则为apache模块安装模式,若为"CGI"则为cgi模块安装模式

2.1 如果安装模块为Apache,则进行以下步骤(一般情况下为Apache,看之前自己安装的是哪个模块)

安装Lynx浏览器,以便进行相应的php执行

sudoapt-get install lynx

安装完后,执行

crontab –e

若初次执行会出现以下

Select aneditor.  To change later, run

 ‘select-editor’.

1. /bin/ed

2. /bin/nano        <—- easiest

3. /usr/bin/vim.tiny

4. /usr/bin/vim.basic

选择一个Vim编辑器就行,关于Vim的用法自行百度

 

进入编辑界面后,如下:

# m h  dom mon dow  command

在下面添加定时执行命令:

*/1 * ** * lynx -dump http://xxxxx.xx/cron.php  

//代表每一分钟执行http://xxxxx.xx/cron.PHP的脚本文件一次

在此之前要确认cron.php的权限为可执行("chmod 755/var/www/html/cron.php")

 

2.2如果安装模块为CGI安装模式

相较上面不同的是,不需要安装lynx浏览器,直接输入php就行

*/1 * ** * php /var/www/crontab.php  

 

3. crontab命令:

crontab -e

在crontab内容文件下:

# m h  dom mondow   command

假定需要定时执行的php脚本文件放在主文件夹下(默认为/var/www/html)

加上

 

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/1 * ** * lynx -dump http://localhost/crontab.php
*/1 * * * * date >> /home/ubuntu/test.txt

表示每一分钟执行相应的SHELL脚本

每一分钟把当前日期时间输出到相应的txt中

到相应的文件夹下看txt文件里面的内容,若有相应的执行时间,则证明日期输出可定时执行


三、定时执行Shell脚本             

 

设置相应的Shell脚本,这样子,以后要定时执行哪些文件,只需要在脚本里面编辑 就行。

执行命令crontab -e

进行编辑

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/1 * ** * /home/ubuntu/Myshell/time1.sh

 

相应的tme1.sh文件内容如下

#!/bin/sh

date >> /home/ubuntu/test.txt

lynx -dump http://localhost/crontab.php

以上定时任务就可以执行了!