退出 `ssh -N` 的“规范”方式是什么

退出 `ssh -N` 的“规范”方式是什么

我有一个专门为端口转发而打开的 SSH 会话,因此它的命令行上有-N或。-NT我想知道告诉这个会话“正常退出”的正确方法是什么。我知道点击抄送 ( SIGINT) 会终止客户端,但退出代码不为零。我尝试了“换行符后的波浪号”转义序列,但它似乎没有被识别。控制台仅回显波浪号和点,没有观察到 ssh(1) 的行为。

另外,我找不到退出的方法ssh -Nt。我必须打开另一个终端会话并执行类似的操作killall ssh

我正在运行 OpenSSH 8.6p1。

答案1

killall ssh非常规范 - 它发送信号SIGTERM,这就是您通常告诉 Unix/Linux 中的应用程序退出的方式。

kill -l有很多选项,其中例如SIGQUITSIGINT可以使用。

检查此讨论以获取更多信息:https://stackoverflow.com/questions/4042201/how-does-sigint-relate-to-the-other-termination-signals-such-as-sigterm-sigquit

或者规范的 glibc 文档:https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

$ ssh -N localhost; echo $?
birdie@localhost's password: 
0

(在另一个终端)

$ killall ssh

最终,您需要查阅源代码,因为应用程序之间的信号处理有所不同。由于显而易见的原因,他们不能只处理SIGKILLSIGSTOP信号。

相关内容