linux使用crondtab定时执行php脚本文件

本文是综合网上多篇文章,加上自己遇到的问题,进行的总结

因为需求需要,需要在linux下定时执行php文件,通过查资料了解到,在linux中一般是用crondtab服务来做定时任务的(类似于windows的定时任务)。crondtab是linux自带服务,如果没有安装自行安装就好。

1.安装crondtab服务(如果系统没有crondtab服务)

yum install crontabs

相关命令说明:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

2.配置定时服务  /var/spool/cron路径下,找到root配置文件,添加以下需要定时执行的服务

*/1 * * * * /bin/sh   /usr/share/nginx/html/a.sh > /dev/null 2>&1 &

添加完配置之后要重启crond服务才会生效     /sbin/service crond restart

这里是定时执行sh文件,注意前面的/bin/sh也要加上,如果不加上会遇到访问a.sh时,提示权限不足Permission denied

a.sh的内容是:/usr/bin/php /usr/share/nginx/html/index.php >> /a.log 2>&1


这样就会每分钟执行index.php文件。在调试过程中,最好用命令行先执行a.sh文件和cron配置文件的命令,如果在控制台能正常运行,一般定时脚本运行的时候,不会有什么问题。a.sh里面加了一个a.log文件,这个文件保存的是index.php的运行结果(包括错误输出),这样更方便调试



在工作上遇到一件极坑的事情,crondtab一直不执行sh文件,配置什么的都没有错 ,但是日志里面显示

PAM pam_end: NULL pam handle passed 

最后排查结果是,因为这行命令在配置文件里面是最后一行,但是这一行命令后面没有回车,就不执行,好坑。

后来加了回车就可以执行了。至于这个原因,没找到。






猜你喜欢

转载自blog.csdn.net/landylxy/article/details/79294179
今日推荐