web-dev-qa-db-ja.com

bgでリモートプロセスを実行するとsshが返らない

Sshを介してリモートでコマンドを実行することにより、ローカルマシンからリモートサーバー上のトンネルを開こうとしています。私もsshpassを使っています。

sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &'

このdo_stuff.shには、次の1行しか含まれていません。

ssh -f -N -L 8888:hostname:9999 user@Host &

しかし、呼び出し(最初のコマンド)は返されません。一重引用符の外に置くと、強制終了されないプロセスが生成されます。これは非常に小さなメモリリークですが、これをきれいに行う方法があるかどうかを知っておくとよいでしょう。

ありがとう!

3
Nirmal

I/Oストリームをnullにリダイレクトします。 記述子が開いているBGプロセスでは、SSHが閉じない可能性があります

sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &> /dev/null < /dev/null &'

説明

&> /dev/null stdoutとstderrを取得し、nullにリダイレクトします

< /dev/null stdinを受け取り、それをnullにリダイレクトします

&最後に、プロセスをバックグラウンドに送信します。

2
Zachary Brady