2
我有一個程序,在子進程中ssh進入一個服務器並執行一個命令並返回。父母通過信號處理孩子(SIGCHLD,SIG_IGN)。有沒有一種方式,如果ssh服務器沒有響應,並且從命令行輸入SSH並永遠等待另一臺服務器,孩子會超時?fork execlp調用中的子進程超時
我有一個程序,在子進程中ssh進入一個服務器並執行一個命令並返回。父母通過信號處理孩子(SIGCHLD,SIG_IGN)。有沒有一種方式,如果ssh服務器沒有響應,並且從命令行輸入SSH並永遠等待另一臺服務器,孩子會超時?fork execlp調用中的子進程超時
從ssh_config(5)
:
ConnectTimeout
Specifies the timeout (in seconds) used when
connecting to the SSH server, instead of using the
default system TCP timeout. This value is used only
when the target is down or really unreachable, not
when it refuses the connection.
你可以看到它工作得很好,以縮短延遲:
$ time ssh -oConnectTimeout=1 ehrlichman
ssh: connect to host ehrlichman port 22: Connection timed out
real 0m1.038s
user 0m0.000s
sys 0m0.000s
$
但它可能不會增加對永遠延遲工作;允許TCP握手花費的時間比內核被配置爲等待時間似乎不太可能。