2013-05-13 112 views
0

我有500個PHP文件,我想打一個crontab自動運行他們(它們存儲在我的數據庫中的XML數據),我的問題是:crontab的運行問題

當我做一個crontab每個PHP文件,它工作正常。像這樣的命令:

* * * * * php /home/username/public_html/codes/php0.php 

但是當我要運行一個shell腳本,包括我所有的PHP文件是這樣的:

* * * * * bash /home/username/public_html/codes/php.sh 

它不運行。

php.sh:

#!/bin/sh 

php php0.php 
echo php0 
php php1.php 
echo php1 
php php2.php 
echo php2 
. 
. 
. 

是否有可能纏上bash腳本PHP文件?如果是的話爲什麼不工作我想念什麼?

回答

2

您可能未在您認爲自己的目錄中運行。

因此,與#!/bin/sh -vx 暫時#!/bin/sh更換,並在你的腳本的開頭添加

pwd 

(即2號線)

那麼也許添加

cd /home/username/public_html/codes 

或者可能定義一個變量並使用它:

mycodedir=/home/username/public_html/codes 
php $mycodedir/php0.php 
echo php0 

等等

我建議閱讀advanced bash scripting guide(即使它有弱點)。

+0

對不起,我不知道任何關於Linux命令,所以請問什麼是pwd,在哪裏添加它? – 2013-05-13 11:55:07

0

目前,您在php.sh中有相對路徑。下面一行

php php0.php 

意味着php將尋找php0.php文件在當前工作目錄。在cron作業中,工作目錄通常是/,即文件系統根目錄。要檢查工作目錄是什麼,可以使用pwd命令。

因此,您的php.sh腳本在您的文件系統根目錄中查找文件php0.php,但文件位於/home/username/public_html/codes/

如果在您的php.sh中使用絕對路徑,當前工作目錄無關緊要。因此,只需在您的php.sh中添加絕對路徑。該文件將看起來像這樣:

#!/bin/sh 

php /home/username/public_html/codes/php0.php 
echo php0 
php /home/username/public_html/codes/php1.php 
echo php1 
php /home/username/public_html/codes/php2.php 
echo php2 
. 
. 
.