是否有一種機制可以讓非 root 使用者執行「服務」?

是否有一種機制可以讓非 root 使用者執行「服務」?

有沒有辦法讓我(一個普通的非 root 使用者)可以控制一個連續運行的後台進程?

我需要做的就是啟動、停止和重新啟動這個過程。透過 PID 進行監控並發送 SIGHUP 或 SIGINT 終止即可。我可以使用複雜的 bash 腳本,它不必是系統範圍內的腳本。只為我。

我也真的需要它在我從 ssh 註銷時不停止。

有沒有辦法在 RHEL 6.4 中做到這一點?

答案1

螢幕或 tmux

當然,您可以啟動進程,然後透過使用終端多工器(例如 screen 或 tmux)連續運行。進程可以繼續保留在 screen 或 tmux 會話中,並且您可以根據需要連接/斷開到(screen 或 tmux)。

背景

您可以運行您喜歡的任何進程,然後將其置於後台,然後使用命令將其與當前終端斷開連接disown

$ disown -a

此外,如果您只想啟動一個進程而不必將其置於後台,則disown可以使用該命令nohup

$ nohup myexec &

當退出shell時,myexec會繼續運作。

例子

啟動一個假進程。

$ sleep 12345 &
[1] 24339
$

確保我們可以看到它:

$ pgrep -f "sleep 12345"
24339

但它仍然連接到我們的終端:

$ jobs
[1]+  Running                 sleep 12345 &

那我們就disown這樣吧:

$ disown -a
$ jobs
$

看到它仍在運行:

$ pgrep -f "sleep 12345"
24339

現在讓我們登出並重新登入。

$ pgrep -f "sleep 12345"
24339

您可以隨時使用標準方法終止此程序:

$ pkill -HUP -f "sleep 12345"
$ pgrep -f "sleep 12345"
$ 

上面的程式碼會將訊號傳送HUP到與模式「sleep 12345」相符的進程名稱。仔細檢查後發現它現在已經消失了。

相關內容