Daemon

如何找到使用 startproc 啟動的程序的 PID?

  • May 9, 2017

我的理解是,為守護程序創建一個 PID 文件通常是一個好主意,這startproc是啟動這些守護程序的好方法。

我知道這startproc需要 -i 和 -p 引用 PID 文件的參數,但它不會創建 PID 文件或使用它啟動的守護程序的 ID 更新它。回顯在使用$!時也不會給出正確的程序標識符startproc

startproc有沒有人對如何引出守護程序的 PID 有任何建議?


對於它的價值,我正在編寫一個 rc 腳本並希望以非特權使用者身份啟動 JVM。我真的不想給這個使用者一個登錄shell(所以su -c "java ..." user不是一個選項),我也不想在守護程序執行時掛起一個根程序(這排除了sudo -Eu user java ...)。因此,雖然我承認這些是可能的解決方法,但我認為它們中的任何一個都不是理想的。但是,如果我對這些替代方案的假設是錯誤的,請隨時糾正我。

看起來沒有人知道這樣做的方法,那麼。

相反,我只是做了 Tomcat 基本做的事情;編寫一個 shell 腳本並從我的服務中呼叫它,而不是java直接呼叫。

這個 shell 腳本還負責echo $!在啟動 JVM 後創建 PID 文件。對於關機,我編寫了一個類似的腳本來檢查這個 PID 文件並在成功關機後將其刪除。這兩個腳本都是sudo -Eu $USER script_name.sh從服務中呼叫的。

從技術上講,這並不能回答我的問題,因為該解決方案根本不使用startproc,但它可以工作並且避免了比較正在執行的程序的命令行的繁瑣任務。

引用自:https://unix.stackexchange.com/questions/79078