Ssh

在 bg 中執行遠端程序時 ssh 不返回

  • October 20, 2016

我正在嘗試通過 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

&最後將程序發送到後台。

引用自:https://unix.stackexchange.com/questions/317751