文LINUX 定时脚本
2016年10月07日编辑
一、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
以上定时任务就可以执行了!