我有一个专门为端口转发而打开的 SSH 会话,因此它的命令行上有-N
或。-NT
我想知道告诉这个会话“正常退出”的正确方法是什么。我知道点击抄送 ( SIGINT
) 会终止客户端,但退出代码不为零。我尝试了“换行符后的波浪号”转义序列,但它似乎没有被识别。控制台仅回显波浪号和点,没有观察到 ssh(1) 的行为。
另外,我找不到退出的方法ssh -Nt
。我必须打开另一个终端会话并执行类似的操作killall ssh
。
我正在运行 OpenSSH 8.6p1。
答案1
killall ssh
非常规范 - 它发送信号SIGTERM
,这就是您通常告诉 Unix/Linux 中的应用程序退出的方式。
kill -l
有很多选项,其中例如SIGQUIT
也SIGINT
可以使用。
或者规范的 glibc 文档:https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html
$ ssh -N localhost; echo $?
birdie@localhost's password:
0
(在另一个终端)
$ killall ssh
最终,您需要查阅源代码,因为应用程序之间的信号处理有所不同。由于显而易见的原因,他们不能只处理SIGKILL
和SIGSTOP
信号。