是否有一种机制可以让非 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”匹配的进程名称。仔细检查后发现它现在已经消失了。

相关内容