Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux `nohup`通过PID调用已经运行的进程(类似于aixnohup-p)_Linux_Bash - Fatal编程技术网

Linux `nohup`通过PID调用已经运行的进程(类似于aixnohup-p)

Linux `nohup`通过PID调用已经运行的进程(类似于aixnohup-p),linux,bash,Linux,Bash,我遇到了一个无法在Linux RHEL 6.6中运行nohup-p的情况,它说不支持此选项。我阅读了手册页,在Linux中,它只有--help和--version作为Linux中的选项 对于nohup-p,是否还有其他替代方法,以允许已经运行的进程在运行的终端退出后继续运行?其中的一部分很简单:要从shell的进程表中删除作业,可以使用disown 不容易的部分是将stdout和stderr重定向到远离TTY的位置。要做到这一点,您可以使用gdb控制该进程,并告诉它替换stdin、stdout和

我遇到了一个无法在Linux RHEL 6.6中运行
nohup-p
的情况,它说不支持此选项。我阅读了手册页,在Linux中,它只有
--help
--version
作为Linux中的选项


对于
nohup-p
,是否还有其他替代方法,以允许已经运行的进程在运行的终端退出后继续运行?

其中的一部分很简单:要从shell的进程表中删除作业,可以使用
disown

不容易的部分是将stdout和stderr重定向到远离TTY的位置。要做到这一点,您可以使用
gdb
控制该进程,并告诉它替换stdin、stdout和stderr(请注意,您需要确保在其他同样需要在退出操作中生存的子进程或线程上也这样做):


这是一个名为
dupx

的工具。坦率地说,
nohup
通常是非常无用的。将stdin、stdout和stderr重定向到非TTY源;告诉shell将HUP信号设置为丢弃,使用
disown
内置命令从shell的进程表中删除作业,您就完成了
nohup
不需要使用该命令就可以完成的所有操作。@CharlesDuffy有3个步骤,可以在一个
nohup
中完成?啊,但是你的三个步骤迫使用户思考他们在做什么,并做出明确的决定,而你的“one
nohup
”的默认重定向目标完全是死气沉沉的。
# 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