Linux

使用 sudo 分離守護程序?

  • January 9, 2014

我注意到sudo在執行以下任何行後繼續執行。有什麼辦法可以完全分離守護程序,這樣sudo就不會繼續執行?

sudo -u user daemon &
sudo -u user -b daemon

您可以像這樣在一張照片中將其作為背景:

sudo -u user sh -c "daemon & disown %1"

查看 withps將顯示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是首選方法,因此它可以在需要時提示您輸入密碼,然後它將分叉到後台執行請求的程序。

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