小编pet*_*arp的帖子

究竟是什么决定了后台作业是在退出 shell 时被杀死还是被杀死?

这个问题已经拿出了相当 一个 不少真的 很多),但我发现答案是一般不完整。一般的问题是“当我退出/杀死 ssh 时,为什么我的工作会/不会被杀死?”,这就是我发现的。第一个问题是:以下信息的一般性如何?以下似乎适用于现代 Debian linux,但我遗漏了一些内容;其他人需要知道什么?

  1. 当 ssh 连接关闭时,所有通过 ssh 连接打开的 shell 的后台或非后台子进程都会被 SIGHUP 杀死,仅当huponexit设置了该选项时:运行shopt huponexit以查看这是否为真。

  2. 如果huponexit为 true,则您可以使用nohupdisown将进程与外壳分离,以便在退出时不会被杀死。或者,使用screen.

  3. 如果huponexit为 false,这至少是目前某些 linux 上的默认值,那么在正常注销时不会终止后台作业。

  4. 即使huponexit是假的,那么如果 ssh 连接被杀死或断开(与正常注销不同),那么后台进程仍然会被杀死。这可以通过disownnohup如 (2) 中那样避免。

  5. (a) 父进程是终端的进程和 (b) 具有连接到终端的stdin、stdout 或 stderr 的进程之间存在一些区别。我不知道 (a) 而非 (b) 的进程会发生什么,反之亦然。

最后一个问题:我怎样才能避免行为(3)?换句话说,默认情况下,在 Debian 后台进程在注销后自行运行,而不是在 ssh …

linux ssh process

16
推荐指数
1
解决办法
4179
查看次数

标签 统计

linux ×1

process ×1

ssh ×1