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

tar*_*yte 3 linux bash 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
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 6

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

尝试reptyr,例如:

reptyr 2208
Run Code Online (Sandbox Code Playgroud)

它的手册页

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

不要错过这个注意事项:

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

echo 0 > /proc/sys/kernel/yama/ptrace_scope
Run Code Online (Sandbox Code Playgroud)

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

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