我希望守护进程在启动时启动,因此我添加了一行以/etc/rc.local
“&”结尾的行,这样做是为了让它在后台运行。
守护进程已加载并运行良好,但当守护进程运行时,您可以按下键来执行其他重要的事情。
当我最终登录时,我想恢复进程或向其发送一个终端(tty2),以便我可以做几件事。
我是 Linux 新手,不清楚该如何操作。
我做了一个实验ps -aux |grep uox
来找出它是哪个 PID。但不确定如何恢复。
答案1
您可以使用 kill 命令从任何 shell 通过 PID 号恢复进程。
kill -CONT <pid>
不要忘记 -CONT 部分,否则您将终止您的进程。
PS David Purdue 的说法是正确的,fg
他bg
只对同一进程树上的进程起作用。他的解决方案似乎更适合您的需求。但是,由于标题是“通过 PID 号恢复进程”,我认为其他需要此解决方案的人可能会想要找到它。
答案2
jobs
jobs
只会列出与运行命令的 shell 关联的作业,同样,fg
和 也bg
只适用于与当前 shell 位于同一进程树上的进程。在这个问题的上下文中,您要附加的作业是用 启动的/etc/rc.local
,因此该 shell 不是您当前所在的 shell。
您可以/etc/rc.local
使用screen
命令(https://help.ubuntu.com/community/Screen) - 这将启动它并附加到伪终端,然后您以后可以screen
再次使用它来附加到该终端并在正在运行的程序中键入字符。
screen
使用安装apt-get
,然后键入man screen
以查看所有选项。我不确定您应该输入什么rc.local
,现在也没有时间进行实验,但可能会在以后更新此答案。
答案3
借自维杰
使用该jobs
命令查找您启动的后台进程列表。例如:有一个脚本在 5 次迭代中简单地休眠 10 秒。我在后台运行了它 4 次。
>jobs
[1] + Running ./temp.sh
[2] - Running ./temp.sh
[3] Running ./temp.sh
[4] Running ./temp.sh
fg
是将其带回前台的命令,如下所示。
>fg 1
[CTRL -c]
如上所示,我已结束该进程,它不再存在。现在如果我再次运行jobs
>jobs
[2] + Running ./temp.sh
[3] Running ./temp.sh
[4] - Running ./temp.sh
>
您还可以检查这里更多