Ssh
在 bg 中執行遠端程序時 ssh 不返回
我正在嘗試通過 ssh 遠端執行命令,從本地電腦打開遠端伺服器上的隧道。我也在使用 sshpass。
sshpass -fpw_file.txt ssh user@host.com 'bash /home/username/do_stuff.sh &'
這個 do_stuff.sh 只包含一行:
ssh -f -N -L 8888:hostname:9999 user@host &
但是呼叫(第一個命令)沒有返回。如果我將 & 放在單引號之外,它會產生一個不會被殺死的程序。雖然這是一個非常小的記憶體洩漏,但如果有辦法乾淨地做到這一點,那就太好了。
謝謝!
將 i/o 流重定向到 null。具有開放描述符的 BG 程序可能會導致 SSH 無法關閉。
sshpass -fpw_file.txt ssh user@host.com 'bash /home/username/do_stuff.sh &> /dev/null < /dev/null &'
解釋
&> /dev/null
獲取 stdout 和 stderr 並將其重定向到 null
< /dev/null
接受標準輸入並將其重定向到 null
&
最後將程序發送到後台。