2013-12-23 187 views
1

我在我的用戶的crontab中使用@reboot ~/www/example.com/bin/server ...但是當我重新啓動服務器時,Web服務器(此腳本)沒有出現。 (腳本從命令行工作正常)。crontab @reboot在服務器重新啓動時不執行bash腳本

我的猜測是/home/user目錄尚未安裝...有誰知道是否有可能使用此crontab @reboot方法獲取腳本運行出主目錄?

+0

從CRON運行命令的一個常見問題是環境與登錄shell中的環境不同。通常,解決這個問題的一個簡單方法是編寫一個bash腳本來源,例如〜/ .bashrc,然後調用所需的程序並將該腳本的調用放入CRON表中。然而,另一個問題是:從CRON工作開始像Web服務器那樣複雜的事情的具體原因是什麼?爲什麼不使用init服務? –

+0

根據@MarcusRickert的註釋,嘗試指示腳本的整個路徑而不是'〜'。 – fedorqui

+0

整個路徑也沒有工作。 – chovy

回答

0

我的問題是,crontab沒有一個完整的環境。我製作了指向源代碼的腳本。

@reboot /home/user/www/example.com/bin/server 

./server確實. /home/user/.bashrc得到一個工作環境。

0

它肯定是由於評論中給出的環境情況。嘗試以下操作並重新執行一次檢查

@reboot (date > /tmp/date-check.txt) 

確保cron能夠運行作業。

4

如果你認爲/ home/user中尚未安裝(或一些必需的系統沒有運行),然而,在crontab行,你總是可以像執行命令前等待:

@reboot sleep 60; /home/user/www/example.com/bin/server

0

在Ubuntu中,如果您正在使用啓用的主目錄加密功能,那麼您的crontab文件中的@reboot將不起作用,因爲文件系統在系統啓動時仍然被加密,並且cron運行它的@reboot作業。

您的選擇是將您的文件置於未加密的位置(/usr/local/bin或其他?)或在主目錄上禁用主目錄加密。

相關問題