Ubuntu

Ubuntu Crontab 或 init 腳本啟動

  • July 22, 2013

我在啟動時使用 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’等會更好。

引用自:https://serverfault.com/questions/525191