通过PID号恢复进程

new*_*nux 9 process

我想要一个守护进程在启动时启动,所以我添加了一行以/etc/rc.local“&”结尾的行,我这样做是为了让它在后台运行。

守护程序已加载并运行良好,但是当守护程序运行时,您可以按下执行其他重要操作的键。

当我最终登录时,我想恢复进程或向其发送一个终端 (tty2),以便我可以做一些事情。

我是 linux 新手,不知道如何做到这一点。

我做了一个ps -aux |grep uox以确定它是哪个PID。但不确定如何恢复。

小智 9

您可以使用 kill 命令从任何 shell 通过 PID 号恢复进程。

kill -CONT <pid> 
Run Code Online (Sandbox Code Playgroud)

不要忘记 -CONT 部分,否则您将终止您的进程。

PS David Purdue 是正确的,fg并且bg仅适用于同一流程树上的流程。他的解决方案似乎更适合您的需求。但是,因为标题是“通过 PID 号恢复进程”,我认为确实需要它的其他人可能想要找到它。


Dav*_*due 8

jobs将仅列出与jobs运行命令的 shell 相关联的作业,类似地fgbg仅与当前 shell 位于同一进程树上的进程一起工作。在此问题的上下文中,您要附加到的作业以 开头/etc/rc.local,因此该 shell 不是您当前所在的 shell。

您可以/etc/rc.local使用screen命令(https://help.ubuntu.com/community/Screen)启动该过程- 这将启动它附加到伪终端,然后您可以稍后screen再次使用附加到该终端并输入字符在运行的程序中。

screen使用安装apt-get,然后键入man screen以查看所有选项。我不确定您应该输入什么rc.local,现在没有时间进行实验,但稍后可能会更新此答案。


Sto*_*rux 5

借用Vijay
使用该jobs命令查找由您启动的后台进程列表。例如:有一个脚本在 5 次迭代中只休眠 10 秒。我在后台运行了 4 次。

>jobs
[1]  + Running                       ./temp.sh
[2]  - Running                       ./temp.sh
[3]    Running                       ./temp.sh
[4]    Running                       ./temp.sh
Run Code Online (Sandbox Code Playgroud)

fg 是将其带回前台的命令,如下所示。

>fg 1
[CTRL -c]
Run Code Online (Sandbox Code Playgroud)

如上所示,我已经结束了这个过程,它不再存在。现在如果我再跑jobs

>jobs
[2]  + Running                       ./temp.sh
[3]    Running                       ./temp.sh
[4]  - Running                       ./temp.sh
>
Run Code Online (Sandbox Code Playgroud)

你也可以在这里查看更多