如何理解 bash 脚本中“ssh -O check”的输出?

如何理解 bash 脚本中“ssh -O check”的输出?

我想检查正在监听的主进程ssh.sock是否仍然存在。目前我正在检查返回的退出代码是否ssh -S ssh.sock -O check <my-server>为零,但我不确定这是否是处理此问题的正确方法,并且我找不到任何文档。 master进程应该有ServerAliveInterval=20,这样如果连接失败它就会死掉。是否存在返回码非零但进程本身仍处于活动状态的情况?

答案1

最简单的尝试方法是启动进程(ssh -MS ssh.sock <my-server>),删除套接字并尝试它的行为方式。与工作连接:

$ ssh -S ssh.sock -O check <my-server>
Master running (pid=24314)
$ echo $?
0

当没有套接字时,你会得到这样的结果:

$ ssh -S ssh.sock -O check <my-server>
Control socket connect(ssh.sock): No such file or directory
$echo $?
255

我相信处理返回码是正确的方法。

是否存在返回码非零但进程本身仍处于活动状态的情况?

与前面的示例一样,当套接字因某种原因被删除时,您的连接仍处于活动状态,但您无法从“外部”检查它,也无法将新会话连接到它。

相关内容