相关疑难解决方法(0)

SSH 会话丢失 - 命令是否继续执行?

如果我在断开 SSH 连接之前正在运行命令,该命令会继续执行吗?

ssh

33
推荐指数
4
解决办法
4万
查看次数

注销时后台进程是否会收到 SIGHUP?

这是这个问题的后续。

我还进行了一些测试;看起来这是在物理控制台上完成还是通过 SSH 完成并不重要,这也不仅仅发生在 SCP 上;我也用cat /dev/zero > /dev/null. 行为完全相同:

  • 在后台使用启动一个进程&(或者在它开始使用后把它放在后台使用CTRL-Zand bg);这是在不使用nohup.
  • 注销。
  • 重新登录。
  • 进程还在那里,愉快地运行着,现在是init.

如果发送,我可以确认 SCP 和 CAT 都立即退出SIGHUP;我使用kill -HUP.

因此,看起来 SIGHUP 确实不会在注销时发送,至少不会发送到后台进程(由于显而易见的原因,无法使用前台进程进行测试)。

这发生在我最初使用 VMware ESX 3.5(基于 RedHat)的服务控制台时,但我能够在 CentOS 5.4 上完全复制它。

问题再次出现:是否应该在注销时将 SIGHUP 发送到进程,即使它们在后台运行?为什么这没有发生?


编辑

strace根据凯尔的回答,我检查了。
正如我所期望的那样,从启动它的 shell 注销时,该进程没有收到任何信号。在使用服务器的控制台和通过 SSH 时都会发生这种情况。

linux bash signals process

22
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

linux ×1

process ×1

signals ×1

ssh ×1