对于想了解用crontab执行php的读者,本文将提供新的信息,我们将详细介绍crontabphp,并且为您提供关于CentOS7crontab执行python脚本失败解决办法(手动可以执行)、cen
对于想了解用crontab执行php的读者,本文将提供新的信息,我们将详细介绍crontab php,并且为您提供关于CentOS7 crontab执行python脚本失败解决办法(手动可以执行)、centos使用crontab定时执行php脚本、CentOS利用crontab执行计划任务、crontab 定时执行php文件的有价值信息。
本文目录一览:- 用crontab执行php(crontab php)
- CentOS7 crontab执行python脚本失败解决办法(手动可以执行)
- centos使用crontab定时执行php脚本
- CentOS利用crontab执行计划任务
- crontab 定时执行php文件
用crontab执行php(crontab php)
我正在尝试按计划运行php-
script。所以我认为crontab是个好主意。我正在使用的服务器在我不太熟悉的Linux上。所以我遇到的问题是,我不知道如何从php使脚本可执行。我需要引用该脚本,或将其放入可以从命令行运行php的文件夹中。所以我不知道给我的crontab提供什么路径,例如:
5 * * * * var/www/some/path/script.php
我发现有关此php可执行文件的一些模糊信息
/usr/bin/php
但是我在那里找不到任何php文件,也许我没有安装?我的php5和apache安装在:
/etc/php5
所以我的问题就变成了,是否有在任何其他文件夹中使用crontab执行php-script的脚本,还是我只缺少usr / bin /
php中的php可执行文件?
答案1
小编典典首先在命令行中输入:
whereis php
以运行cron作业的用户身份执行此操作。这将向您显示可执行文件的路径。然后,您可以在cron条目中使用该路径(如果尚未在PATH变量中使用):
5 * * * * /your/path/to/php /var/www/some/path/script.php
编辑:php5-cli
如果仅安装了Apache
PHP模块,则可能需要安装(Ubuntu软件包名称)软件包。这将为您提供可从命令行运行的二进制可执行文件。
CentOS7 crontab执行python脚本失败解决办法(手动可以执行)
记录一次python脚本在crontab中无法执行,处理过程,及解决办法
一、思路
python文件名:bkhq.py
文件目录:/opt/src/missions
日志目录:/opt/src/missions/logs
需求,每天下午15:41执行(需要python3执行)
那么,放到crontab中定期执行即可,由于是python文件,则写一个bkhq.sh的shell脚本
二、写脚本并放到计划
#vim bkhq.sh
#!/bin/bash
LogFile=/opt/src/missions/logs/bkhq$(date +"%Y-%m-%d").log
source /opt/py3/bin/activate
python /opt/src/missions/bkhq.py >> $LogFile 2>&1
脚本中“source /opt/py3/bin/activate”为封装了python3,执行后,python命令默认python3,非python2
#crontab -e
41 15 * sh /opt/src/missions/bkhq.sh
三、遇到问题
执行后,有错误日志生成,执行不成功,提示无法导入某模块
但是我确实是“source /opt/py3/bin/activate”使用该命令已经是使用python3来执行了,python2无法执行
另外,手动执行可以成功,说明脚本写的是没有问题的
那么,应该是别的问题:
原来 crontab 的运行环境和我们用 root 登录进去的环境都是不同的,需要在运行 Python 脚本前重新设定一下运行的环境变量
四、解决问题
既然手动执行脚本是可以成功的,而linux在启动时候,会调用/etc/profile文件,进行加载环境变量,那么我在脚本中是否也可以先调用下这个文件,开始行动:
我未使用shell脚本,应该都一样
下面“/opt/py3/bin/python”为python3命令(同“source /opt/py3/bin/activate”)
计划任务中,我是这样写:41 15 * * * source /etc/profile; /opt/py3/bin/python /opt/src/missions/bkhq.py > /opt/src/missions/logs/bkhq.log 2>&1
日志中没有再记录错误日志,而记录了执行过程日志,问题解决!
centos使用crontab定时执行php脚本
首先,找到PHP安装环境目录,
whereis PHP 得到目录:假设/opt/lampp/bin/PHP,记录下来
写好PHP脚本
require_once("/home/web/wxsq/config.PHP"); $link = MysqLi_connect($host,$user,$pwd,$dbname); if (!$link){ echo "Error: Unable to connect to MysqL." . PHP_EOL; echo "Debugging errno: " . MysqLi_connect_errno() . PHP_EOL; echo "Debugging error: " . MysqLi_connect_error() . PHP_EOL; die("Connection error: " . MysqLi_connect_error()); } MysqLi_query($link,"set character set 'utf8'");//è¯? MysqLi_query($link,"set names 'utf8'"); // $sql="DELETE FROM `weixin_flag` where nickname = '李中坤'"; // MysqLi_query($link,$sql) or die(MysqLi_error($link)); $sql="DELETE FROM `weixin_flag` where nickname is null and content is null"; MysqLi_query($link,$sql) or die(MysqLi_error($link));这里要注意:
尽量不要用require 和 include, 如果非要用,就要使用绝对路径,而且要保证require或include进来的PHP没有其他相对目录的引用
不要使用/**/这种注释
编辑crontab
centos 自带crontab。没有的话,要安装
crontab -e 进入编辑模式,点击i,可开始编辑
前面4行是第一次打开就有的,估计是其他定时启动服务,不用管它。
我们enter键另起一行,如图最后一行是我的脚本.
* * * * *5个星星大有学问,同学们可以自己查找使用方法,默认的5个星星就是每1分钟执行一次你配置的脚本。
/opt/lampp/bin/PHP 是你刚才记录的PHP环境目录
autoClearData.PHP是我写的脚本文件
>> /home/...../autoLog1.html 是autoClearData.PHP的log,这可以用来调试脚本。
crontab不需要重新启动,编辑完成保存好就生效了。
若已经编辑完成,按ESC,再shift+ZZ。完成了
2s频率的定时器自动执行一段小程序。
我的需求是:每秒钟去判断数据库的一个time是否过期,过期就要及时做出处理。
所以呢,crontab可以这么写
方案一:
* * * * * sleep(1) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP
* * * * * sleep(2) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP
* * * * * sleep(60) /opt/lampp/bin/PHP /home/web/funwall/xxxxx.PHP
这样就要写60次,当然你觉得ok,也可以这么写。但是一个优秀的程序员肯定是受不了这种写法的
方案二:
1,找个目录新建一个crontab.sh,假设我的在/home/web/funwall/crontab.sh
内容:
step=2 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(/opt/lampp/bin/PHP '/home/web/funwall/xxxxxx.PHP') sleep $step done exit 0
2,crontab就这么写
* * * * * /home/web/funwall/crontab.sh
3,在xxxxxx.PHP写你的程序
这个看代码也知道怎么回事,* * * * * 是1分钟执行一次,而crontab.sh里是一分钟执行30次(可以改的)。
CentOS利用crontab执行计划任务
walker的需求是每天1点钟的时候,执行一个shell脚本,下面记录walker用到的基本功能。
1、安装
2、服务相关
3、查看计划任务。基本命令行参数建议使用crontab --help查看,man crontab太繁琐。
4、查看任务执行日志。
5、/etc/crontab文件里面存放系统计划任务,/var/spool/cron/目录里面按用户存放计划任务。
6、编辑/etc/crontab配置计划任务。
/var/spool/cron/目录里面的计划任务文件内容格式与上面雷同。区别是,/var/spool/cron/必须指定用户;/etc/crontab是系统计划任务,可以不指定用户。
7、walker还遇到一个问题提,调用jar包失败。原因是crontab的环境变量问题,可参考Linux中crontab的坑爹环境变量问题。walker只在脚本中加了下面一句导入环境变量:
这时如果还是手动执行脚本OK,但是crontab死活不执行。可以尝试在crontab中直接引入环境变量解决问题。如:
*** walker ***
crontab 定时执行php文件
1.先是测试crontab对于普通任务能否执行:crontab -e
*/1 * * * * date >> /usr/local/mydate.log
保存后重启crontab :
service crond restart
过一分钟后发现/usr/local下生成了mydate.log,说明对普通的定时任务可以执行。
2.现在php脚本不能定时执行,应该是脚本的路径问题或者php的路径问题,于是,手工执行了/usr/local/bin/php /usr/he/website/call.php
发现可以正常执行。于是想到把相关的log打出来
*/1 * * * * /usr/local/bin/php /usr/he/website/call.php >>mylog.log 2>&1
过一分钟后打开mylog.log文件,发现提示的错误是:file_get_contents(./view/....)这个错误,至此错误很明显了,是相对路径的问题,把他改为绝对路径后,可以执行了。
如何使用Linux的Crontab定时执行PHP脚本的方法
一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:
# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php
/usr/local/bin/php为PHP程序的路径。
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是 源码天空,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。
00 * * * * lynx -dump http://www.codesky.net/myscript.php
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用”curl -o”选项,你也可以把脚本的输出转储到临时文件。
*/5 * * * * /usr/bin/curl -o temp.txt http://www.codesky.net/myscript.php
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。”-O temp.txt”表示输出会发送到临时文件。
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.codesky.net/myscript.php
我们今天的关于用crontab执行php和crontab php的分享就到这里,谢谢您的阅读,如果想了解更多关于CentOS7 crontab执行python脚本失败解决办法(手动可以执行)、centos使用crontab定时执行php脚本、CentOS利用crontab执行计划任务、crontab 定时执行php文件的相关信息,可以在本站进行搜索。
本文标签: