在centos7可以利用crontab设置计划任务,centos7默认自带crontab可以直接使用,centos7计划任务的目录为:var/spool/cron/下的文件,下面是设置计划任务的方法:

创建入口程序

在项目的index.php同级目录下创建cron.php作为入口程序,文件内容如下:

<?php 
#!/bin/env php
$cur_dir = dirname(__FILE__);
chdir($cur_dir);
define('MODE_NAME', 'cli');                    // 采用CLI运行模式运行
define('BIND_MODULE', 'Cron');
// 引入ThinkPHP入口文件
require './index.php';
?>

采用CLI运行模式运行运行此文件,并绑定计划任务模块,此例中绑定的模块为“Cron”模块,直接运行此文件会在Application下自动生成Cron模块(最好在配置文件中设置不可外部访问)

创建执行脚本

在Cron模块下的Controller中创建自己的计划任务脚本(和其他的模块一样可以自定义Controller类),该步骤不在分享示例代码,可以自己去创建

创建计划任务

创建好自己的计划任务脚本以后,最后就是创建计划任务了。

创建计划任务命令如下:crontab -e

使用该命令会弹出编辑窗口(该命令类似vim模式)在编辑窗口中输入计划任务命令,代码如下:

#执行日志文件
0 1 * * * /usr/local/php/bin/php -q /home/wwwroot/web/cron.php Test/index

该命令的含义如下:

0 1 * * *:意思为每天凌晨1点开始执行

/usr/local/php/bin/php:php的安装目录备注:不同的安装程序php的安装目录不同,具体可参考安装程序说明,如使用lnmp一键安装包安装后的php目录为上面的目录

/home/wwwroot/web/cron.php Test/index:执行的thinkphp的脚本说明:/home/wwwroot/web/cron.php为创建的入口程序的绝对路径

Test/index:为绑定模块的TestController中的index方法

保存创建的计划任务文件,保存成功以后会在var/spool/cron/目录下生成一个计划任务文件(我的计划任务文件是root),如下图所示:

centos7 定时任务 sh centos7计划任务_计划任务

启动计划任务

启动计划任务的命令如下:systemctl enable crond (设为开机启动)

systemctl start crond(启动crond服务)

systemctl status crond (查看状态)

crontab 配置文件格式说明:

基本格式 :

*   *   *   *     *  command

分   时  日  月  周   命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

除了数字还有几个个特殊的符号就是”*”、”/”和”-“、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/apache restart  #每晚的21:30 重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/apache restart  #每月1、10、22日的4 : 45重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/apache restart #每周六、周日的1 : 10重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/apache restart  #每天18 : 00至23 : 00之间每隔30分钟重启apache
0 23 * * 6 /usr/local/etc/rc.d/apache restart  #每星期六的11 : 00 pm重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/apache restart  #晚上11点到早上7点之间,每隔一小时重启  apache
* */1 * * * /usr/local/etc/rc.d/apache restart  #每一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/apache restart #每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/apache restart  #一月一号的4点重启apache
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44  #每半小时同步一下时间
0 */2 * * * www /usr/bin/somecommand  >>  /dev/null 2>&1 #以用户www的身份每两小时就运行某个程序:

其他任务调度

cron默认配置了调度任务,分别为:hourly、daily、weekly、mouthly,默认配置文件为/etc/anacrontab

将需要执行的脚本放到相应的目录下即可,目录分别为:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/ect/cron.mouthly

cron 的主配置文件是 /etc/crontab,它包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

希望本篇文章能够帮助到你!