外壳程序中挂起应用程序

外壳程序中挂起应用程序

有时当应用程序在 bash 会话中挂起时(例如网络滞后telnetssh等等),我无法使用 ^C 来杀死它,使用 ^D 来停止它,甚至无法使用 ^Z 将其发送到后台。

有没有办法不用打开另一个 shell 来杀死它kill?我猜有一个系统调用可以中断

答案1

如果您使用的是 SSH,请尝试两个键组合:~ ^z(波浪号,然后是 control-z)。这将退出 SSH 会话。对于 telnet,也可以通过按 ^](ctrl 然后是 ])执行相同操作。

现在您可以启动一个新会话并终止有问题的进程或整个会话。这是您想要的吗?

答案2

SIGQUIT您可以使用 Ctrl-\ 向进程发送 a,如果进程具有SIGTERM(Ctrl-c) 或SIGSTOP(Ctrl-z) 的信号处理程序,这种方法有时可以奏效。

如果您的进程在 I/O 系统调用上阻塞(ps 显示它处于状态 D),那么它处于不可中断的睡眠状态,您将不得不等到它等待的资源开始响应。

相关内容