我遇到这样一个问题,无法在Linux RHEL 6.6中运行nohup -p <processid>
,它会提示此选项不受支持。我阅读了man手册,在Linux中只有--help
和--version
作为选项。
是否有其他替代方法可以使已经运行的进程在退出运行终端后仍能存活?
其中一部分很容易:要从shell的进程表中删除作业,您可以使用disown
命令。
不容易的部分是将stdout和stderr重定向到TTY之外。为此,您可以使用gdb
来控制进程并告诉它替换stdin、stdout和stderr(请注意,您需要确保这也适用于其他子进程或线程,它们同样需要在退出操作后继续存在):
# for an instance of /path/to/program with PID 1234
# note that this is intended to be a transcript of content typed at a prompt -- it isn't a
# working shell script, since the commands after "gdb" are to be run *by gdb*, not the
# shell.
gdb /path/to/program
attach 1234
p dup2(open("/dev/null", 1), 0)
p dup2(open("stdout-file", 1), 1)
p dup2(open("stderr-file", 1), 2)
detach
quit
dupx
的工具,它已经被自动化了。
nohup
中完成? - Krzysztof Krasońnohup
”则有一个完全愚蠢的nohup.out
重定向目标默认值。 - Charles Duffy