2014-01-29 126 views
2

我正在嘗試在CentOS 6.4上的crontab文件中使用相對路徑,以便我不必一遍又一遍地重複相同的絕對路徑。在我的crontab文件的頂部,設在這裏:/etc/crontab,我有:在Crontab中使用相對路徑

SHELL=/bin/bash 
PATH=/var/www/html/crons 
MAILTO="" 
HOME=/ 

而且我的每個命令的樣子:

*/2 * * * * root /usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log" 

我期待它會運行cronfile.php PHP文件在/var/www/html/crons目錄中,並將其輸出保存到/var/www/html/crons/logs/cronfile.log。但是,該文件未運行且日誌文件未被創建。 cd荷蘭國際集團進入/var/www/html/crons目錄後

/usr/bin/php "cronfile.php" >> "logs/cronfile_"`date +\%Y\%m\%d`".log" 
命令行

:如果我只是運行

命令工作正常。

請指教,謝謝。

+0

將目錄放在env路徑中(如果您必須的話) - 在這裏沒有真正看到問題,使用絕對路徑很有意義,如果不能複製和粘貼幾次 - 沒有希望。 – 2014-01-29 03:04:04

+0

你能解釋一下如何使用env路徑嗎?另外,這並不是我無法複製和粘貼,而是我想避免冗餘,因爲我知道有很多行,並且會因爲我的需要而頻繁更改。 –

回答

1

許多試驗和研究之後,我發現該解決方案是使用HOME=變量,而不是PATH=變量,像這樣:

SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO="" 
HOME=/var/www/html/crons 

然後對每行只是看起來像:

*/2 * * * * root /usr/bin/php cronfile.php >> logs/cronfile_`date +\%Y\%m\%d`.log 

希望這可以幫助別人解決與我未來相同的問題。

1

/usr/bin已經在PATH在默認情況下大多數系統中,所以你應該能夠從你的crontab的頂部去除PATH聲明。

你的工作是在bash shell中運行,所以你可以這樣做:

*/2 * * * * root cd /var/www/html/crons && php cronfile.php >> cronfile_`date +\%Y\%m\%d`.log 
+0

感謝您的回答。我其實只想在文件中包含一次絕對路徑(而不是每行),而我只是找到了解決方案,所以我發佈瞭解決問題的方法。 –