我在我的用戶的crontab中使用@reboot ~/www/example.com/bin/server
...但是當我重新啓動服務器時,Web服務器(此腳本)沒有出現。 (腳本從命令行工作正常)。crontab @reboot在服務器重新啓動時不執行bash腳本
我的猜測是/home/user
目錄尚未安裝...有誰知道是否有可能使用此crontab @reboot
方法獲取腳本運行出主目錄?
我在我的用戶的crontab中使用@reboot ~/www/example.com/bin/server
...但是當我重新啓動服務器時,Web服務器(此腳本)沒有出現。 (腳本從命令行工作正常)。crontab @reboot在服務器重新啓動時不執行bash腳本
我的猜測是/home/user
目錄尚未安裝...有誰知道是否有可能使用此crontab @reboot
方法獲取腳本運行出主目錄?
我的問題是,crontab沒有一個完整的環境。我製作了指向源代碼的腳本。
@reboot /home/user/www/example.com/bin/server
./server
確實. /home/user/.bashrc
得到一個工作環境。
它肯定是由於評論中給出的環境情況。嘗試以下操作並重新執行一次檢查
@reboot (date > /tmp/date-check.txt)
確保cron能夠運行作業。
如果你認爲/ home/user中尚未安裝(或一些必需的系統沒有運行),然而,在crontab行,你總是可以像執行命令前等待:
@reboot sleep 60; /home/user/www/example.com/bin/server
在Ubuntu中,如果您正在使用啓用的主目錄加密功能,那麼您的crontab文件中的@reboot將不起作用,因爲文件系統在系統啓動時仍然被加密,並且cron運行它的@reboot作業。
您的選擇是將您的文件置於未加密的位置(/usr/local/bin
或其他?)或在主目錄上禁用主目錄加密。
從CRON運行命令的一個常見問題是環境與登錄shell中的環境不同。通常,解決這個問題的一個簡單方法是編寫一個bash腳本來源,例如〜/ .bashrc,然後調用所需的程序並將該腳本的調用放入CRON表中。然而,另一個問題是:從CRON工作開始像Web服務器那樣複雜的事情的具體原因是什麼?爲什麼不使用init服務? –
根據@MarcusRickert的註釋,嘗試指示腳本的整個路徑而不是'〜'。 – fedorqui
整個路徑也沒有工作。 – chovy