有时我在 gnome 终端中运行一个应用程序,但随后我突然必须重新启动 gnome 或其他东西。我想这个问题的答案也很有用,然后我想在发生某些事情时断开与 SSH 的连接。
Gnome 的终端树如下所示:
gnome-terminal
bash
some-boring-process
我可以“分离” bash
(gnome-terminal
或some-boring-process
从 bash 分离并将其输出重定向到某处)吗?如果我只是杀死gnome-terminal
,bash
将被杀死以将其所有子进程
答案1
如果some-boring-process
在当前的 bash 会话中运行:
- 停止它,
ctrl-z
给你 bash 提示符 - 把它放在后台
bg
- 记下作业编号,或使用
jobs
命令 - 将进程与此 bash 会话分离
disown -h %1
(替换那里的实际作业号)。
这对重定向输出没有任何作用——当你启动无聊的过程时,你必须考虑到这一点。 [编辑]似乎有一种方法可以重定向它https://gist.github.com/782263
但说真的,看看屏幕。我的远程服务器上有 shell,已经运行了几个月。
看起来像这样:
$ sleep 999999
^Z
[1]+ Stopped sleep 999999
$ bg
[1]+ sleep 999999 &
$ disown -h %1
答案2
答案3
答案4
如果我启动了一些我无论如何都想完成的东西(除了系统重新启动),我会nohup
在后台使用并运行它。与 screen 等不同,您无法重新连接到进程。然而,除非在其他地方进行重定向,否则任何输出都可以在 中找到nohup.out
。
screen
当我希望能够切换进程的终端时,我确实会使用它。例如从家庭/工作开始一个流程并切换到另一个。与任何其他终端会话输出一样,最终将滚动到缓冲区顶部。
编辑:如果您已经启动了该进程,则可以使用disown
该进程来防止HUP
在进程关闭时发送信号。