Ubuntu Crontab 或 init 腳本啟動
我在啟動時使用 cron 做錯了什麼?
例子:
手動啟動:screen -S example ./script.sh
手動恢復:screen -x example
現在,我只是嘗試在啟動時使用 cron 做同樣的事情(好吧,啟動部分)
@reboot cd /home/administrator/script && screen -S example ./script.sh
我認為它可以在沒有螢幕的情況下工作。例如:
@reboot cd /home/administrator/script && ./script.sh
但我也需要它在後台執行,獨立於終端。我已經嘗試過其他選項,例如 init、init.d,但是對於它們在哪些版本的 linux 上如何工作似乎存在很多困惑。如果您可以解決我上面的錯誤或向我展示更好的解決方案,那就太好了。
我正在使用 Ubuntu 12.04.2 LTS
謝謝
*** 更新 ***
因此,作為對 Jan Wikholm 的回應,我嘗試了絕對路徑,但完全失敗了。
例子
如果我在控制台中對此進行測試:
screen -S 範例 /home/administrator/script/script.sh
腳本不執行。我在這裡錯過了一些概念性的東西嗎?
我收到螢幕錯誤消息
$$ screen is terminating $$立即地 *** 解決方案 ***
終於想通了。screen 的問題是執行檔的路徑。
這是最終的 crontab 條目,它就像一個魅力
@reboot cd /home/administrator/script && /usr/bin/screen -dmS 範例 ./script.sh
感謝一月的幫助
終於想通了。screen 的問題是執行檔的路徑。
這是最終的 crontab 條目,它就像一個魅力
@reboot cd /home/administrator/script && /usr/bin/screen -dmS 範例 ./script.sh
感謝一月的幫助
PS,是的,我試圖回答它,但它不會讓我等待 8 個小時,所以我暫時在原帖中發布了答案。
您是否嘗試過使用以下方法啟動它:
nohup /path/to/script/script.sh &> /output/goes/here &
這將啟動腳本,將 STDOUT 和 STDERR 重定向到文件,將其啟動到後台並告訴它忽略掛斷信號(因為它的父程序正在死亡)。
**編輯:**另外,最好總是包裝 init/cron 腳本,這樣 cron 必須呼叫的行本身就是一個腳本,而不是 ‘cd /somewhere && ./script.sh’。所以如果你只有 /path/to/launcher.sh 然後包含’cd /somewhere && screen foobar’等會更好。