如何在不杀死其子进程的情况下关闭终端(不先运行“screen”)?

val*_*lya 36 bash process kill terminal job-control

有时我在 gnome-terminal 中运行一个应用程序,但后来我突然不得不重新启动 gnome 或其他东西。我想这个问题的答案也很有用,然后我想在发生某些事情的地方与 SSH 断开连接。

Gnome 的终端树如下所示:

gnome-terminal
    bash
        some-boring-process
Run Code Online (Sandbox Code Playgroud)

我可以bashgnome-terminal(或some-boring-process从 bash分离并将其输出重定向到某个地方)吗?如果我只是杀死gnome-terminalbash将被杀死以将其所有子进程

gle*_*man 51

如果some-boring-process正在您当前的 bash 会话中运行:

  1. 停止它ctrl-z给你 bash 提示
  2. 把它放在背景中 bg
  3. 记下作业号,或使用jobs命令
  4. 从这个 bash 会话中分离进程disown -h %1(替换那里的实际工作号)。

这对重定向输出没有任何作用——当您启动无聊的过程时,您必须考虑到这一点。[编辑] 似乎有一种方法可以重定向它https://gist.github.com/782263

但说真的,看着屏幕。我在已运行数月的远程服务器上安装了 shell。


看起来像这样:

$ sleep 999999
^Z
[1]+  Stopped                 sleep 999999
$ bg
[1]+ sleep 999999 &
$ disown -h %1
Run Code Online (Sandbox Code Playgroud)


jsb*_*ngs 9

这正是screentmux的创建目的。你在 screen/tmux 会话中运行 shell,你可以随意断开/重新连接。您还可以在一个 gnome 终端内运行多个 shell 会话。


Han*_*Gay 5

screentmux、 或dtach(可能与dvtm)都非常适合这一点,但如果您不认为要使用其中之一,您也许可以利用nohup.