如何将 upstart 启动的进程置于前台?

如何将 upstart 启动的进程置于前台?

是否有可能将 upstart 启动的进程置于前台?

root@me:~# ps aux | grep my-app
root      2208  0.2  0.0   1456   480 ?        S    17:38   0:01 /opt/me/my-app
root@me:~# fg 2208
-bash: fg: 2208: no such job
root@me:~# fg $(pidof my-app)
-bash: fg: 2208: no such job

答案1

fg需要作业编号,而不是 PID。没有可用的作业编号,因为由 启动的任何进程upstart都不是 shell 的子进程。它不会出现在jobs输出中。

尝试reptyr,例如:

reptyr 2208

它的手册页

reptyr是一个用于获取现有正在运行的程序并将其附加到新终端的实用程序。

请不要错过以下提示:

reptyr取决于ptrace(2)附加到远程程序的系统调用。在 Ubuntu Maverick 及更高版本中,出于安全原因,此功能默认被禁用。您可以通过执行以下操作暂时启用它

echo 0 > /proc/sys/kernel/yama/ptrace_scope

以 root 身份进行设置,或者通过编辑文件来永久更改/etc/sysctl.d/10-ptrace.conf,该文件还包含有关此设置的更多信息。

(阅读更多这是我的另一个答案

还请注意,这reptyr仅将进程附加到另一个终端。这并不意味着该进程成为当前 shell 的子进程。

答案2

fg命令需要job_id而不是进程id,您需要运行该jobs命令并获取进程的job_id

相关内容