小编Cly*_*ost的帖子

即使连接失败,SSH 进程仍保持活动状态?

当尝试建立 ssh 隧道时,我注意到即使连接失败,进程也会保持活动状态。例如,如果我尝试在hostname关闭时运行此命令:

/usr/bin/ssh -f -i /home/user/.ssh/id_rsa -N -R 3000:localhost:22 user@hostname
Run Code Online (Sandbox Code Playgroud)

有时我会得到这样的回应:

Warning: remote port forwarding failed for listen port 3000
Run Code Online (Sandbox Code Playgroud)

仅当原始进程(在本地计算机上运行)终止但远程服务器尚未意识到时,我才会收到此错误消息。该进程尝试重新启动,但服务器认为它仍然有 3000 上的连接,并且不会排除新连接,从而导致出现上述警告。

但如果我这样做,pgrep -x ssh我可以看到该进程仍然存在。我想在 cronjob 中运行此 ssh 命令作为 bash 脚本的一部分,该命令首先检查隧道是否已建立,如果没有则重新建立它,但是我设置脚本的方式 a) 看到隧道是关闭并尝试创建一个新进程(这会秘密失败),或者 b) 看到失败的进程仍然存在并且不执行任何操作。结果是,只要失败的进程仍然存在,隧道就永远不会重新建立。

如果连接失败,有没有办法直接终止进程而不是收到警告?

bash ssh cron

4
推荐指数
1
解决办法
2191
查看次数

文件 glob 匹配“version”和“version.h”

我试图用来find识别我的存储库中名为“version”或“version.h”的所有文件,但是我无法想出一个有效的 glob 来匹配。

使用正则表达式,我相信这会起作用: .*/version\.*h*

但是我无法想出 glob 语法中的等价物。

find regular-expression wildcards

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

标签 统计

bash ×1

cron ×1

find ×1

regular-expression ×1

ssh ×1

wildcards ×1