
Linux Ubuntu 14.04 在 ~/app/serve.py 中有一個腳本
需要在該資料夾下運行。在外殼中我可以做
> cd ~/app && python serve.py
它運行一個伺服器
需要在伺服器啟動時在背景運行它。嘗試在etc/rc.local(和etc/init.d/rc.local)中新增此命令,cd ~/app && python serve.py ~
但它沒有啟動。
我究竟做錯了什麼?
答案1
不要新增 /etc/rc.local,而是cd ~/app && python serve.py
嘗試新增整個路徑。您期望 init 程序以某種方式知道 ~ 是您的主目錄,但 init 以 root 身分啟動。因為 init 以 root 身分啟動,所以它會尋找/
應用程式目錄而不是您的主目錄。透過使用主目錄的路徑來擺脫〜。
嘗試加入 /home/whitecolor/app/serve.py
到/etc/rc.local
. (找到您的路徑目錄。)透過在腳本頂部新增來pwd
刪除python
serve.py 腳本前面的。 #!/usr/bin/python
(輸入 awhich python
查找路徑,以防未安裝在正常位置)
編輯:你確實說過“在後台運行”,但我錯過了。若要在背景執行命令,請&
在命令後面新增 。因此,要將上面的命令設為後台: /home/whitecolor/app/serve.py &
Init 通常不需要後台符號來啟動作業並在後台運行它。
DrDR 的出色建議是,在 cron 啟動中的命令之後不需要&
像預設在後台運行的命令一樣進行相同的處理。
答案2
我從來沒有需要嘗試這個,但顯然腳本可以在系統啟動時透過 cron 運行,只需添加一行類似於下面以 @reboot 開頭的行。
#m h dom mon dow command
1 * * * * someHourlyCommand
@reboot python /home/<username>/app/serve.py
請注意,我稍微更改了命令以消除對目錄的 cd 操作。您的情況可能會有所不同,因此請做適合您的事情。