Su
如何獲取在那裡執行的 su –session-command 文件的 pid
此行在腳本中執行
su --session-command="$javaCommandLine & >>$serviceLogFile 2>&1 & echo \$! >$pidFile" $serviceUser || return 1 pid="$(<$pidFile)" echo $pid
Pid 比 su 執行的程序的實際 Pid 加一。
我如何獲得該程序的 pid?
我從 serverfault stackexchange 得到了答案。通過
Daniel t.
@ https://serverfault.com/questions/563087/sh-bash-script-ambiguous-redirect-pid-of-file-using-single-quotes引:
程序 ID 減一,因為您
&
在$javaCommandLine
. 換句話說,您在呼叫 之前已將兩個程序置於後台echo $!
,從而獲得了>>$serviceLogFile 2>&1
而不是的 PID$javaCommandLine
。正如舊的 2 行程式碼所示,這兩部分應該合二為一su --session-command="$javaCommandLine & >>$serviceLogFile 2>&1 & echo \$! >$pidFile" $serviceUser || return 1
您可能需要將其更改為 -
su --session-command="$javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" $serviceUser || return 1