bgでリモートプロセスを実行してもsshは返されません。

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 &

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

ありがとうございます!

答え1

I/O ストリームを null にリダイレクトします。ディスクリプタが開いているBGプロセスによってSSHが閉じられないことがある

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

説明する

&> /dev/nullstdoutとstderrを取得してnullにリダイレクトする

< /dev/nullstdinを取得してnullにリダイレクト

&最後に、プロセスはバックグラウンドで送信されます。

関連情報