我有一個這樣安裝的服務:
install -m 755 init_script /etc/init.d/spacenavd
cd /etc/rc2.d
ln -s ../init.d/spacenavd S99spacenavd
init_script 的作用是啟動腳本:
/usr/local/bin/spacenavd -v
所有這些工作正常,並允許服務在啟動時自動啟動。但是,我在啟動時運行另一個使用 spacenavd 服務的腳本時遇到問題。當我登入後手動執行該腳本時,該腳本可以正常工作。
我在 rc.local 中執行以下操作:
cd /home/filedirec
sudo ./my_script &
這有時有效,有時無效。我似乎無法確定原因是什麼。有什麼好的方法可以解決問題呢?
答案1
似曾相識。
Sudo 是一個互動式程序,如果您最近沒有輸入憑證,則需要您提供密碼才能以 root(或其他使用者)身分執行命令。這本地文件腳本未附加到您的控制台,因此您永遠不會看到它要求輸入密碼。
這本地文件腳本也已經以 root 身份運行,因此您應該刪除須藤從中發出命令。
更好的方法是簡單地替換您添加的所有內容:/home/filedirec/my_script(或者/home/filedirec/my_script &如果需要的話)。使用絕對路徑可以更快、更輕鬆地查看到底是什麼本地文件如果稍後需要審查腳本正在執行的操作,光碟等等通常更適合互動式 shell。
答案2
您可以做的一件事就是在單獨的目錄中啟動腳本螢幕會議。
例如,您的 rc.local 檔案可能如下所示:
/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'
然後,您可以在啟動後輕鬆「重新連接」螢幕並查看腳本的情況。也可以將輸出記錄到文件中。
如果 screen 命令在您的系統上不可用:sudo apt-get install screen
有圖教學: screen:儘管連線斷開,仍保持進程運行