Linux
使用 sudo 分離守護程序?
我注意到
sudo
在執行以下任何行後繼續執行。有什麼辦法可以完全分離守護程序,這樣sudo
就不會繼續執行?sudo -u user daemon & sudo -u user -b daemon
您可以像這樣在一張照片中將其作為背景:
sudo -u user sh -c "daemon & disown %1"
查看 with
ps
將顯示daemon
執行為user
. 不會有任何sudo
關聯。
sudo
在執行您要求它執行的程序後不會繼續執行;實際上,它使用exec()
系統呼叫將自己替換為您指定的程序,以便該程序具有與sudo
所做的相同的 PID。您可以通過執行以下命令來驗證這一點:sudo -u user -b sleep 60 ps aux | grep sudo ps aux | grep sleep
您會看到 sleep 仍在執行,但 sudo 沒有。
如果您要求 shell 使用
&
操作員將 sudo 置於後台,那麼如果必須提示您輸入密碼,sudo 將無限期地在後台阻塞並等待。如果它沒有提示您輸入密碼,那麼您指定的程序正在執行並且sudo
不再執行。由於可能會被阻止,因此 -b 開關sudo
是首選方法,因此它可以在需要時提示您輸入密碼,然後它將分叉到後台執行請求的程序。