Daemon
如何找到使用 startproc 啟動的程序的 PID?
我的理解是,為守護程序創建一個 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
,但它可以工作並且避免了比較正在執行的程序的命令行的繁瑣任務。