Sshを使用してUnixマシンでコマンドを実行し、コマンドが完了する前に終了するにはどうすればよいですか?
たとえば、
ssh localhost 'sleep 60 &'
sshは、スリープがバックグラウンドで実行されている場合でも、スリープが完了するまで端末でハングします。
SSHには、クライアントでNohupを使用するのとまったく同じように機能する-fスイッチがありますが、sshがパスワードを要求することを可能にします。そのように使用してください:
ssh localhost -f 'command'
But:SSHは引き続きバックグラウンドで実行されるため、サーバーのコマンドが完了する前にクライアントをシャットダウンすると、クライアントは中止されます。コマンドの実行後にssh接続を閉じたい場合は、サーバー側でscreenを使用できます。
ssh localhost -f 'screen -d -m sleep 60'
Nohup、stdout/stderrリダイレクトを使用して、コマンドをバックグラウンドで実行します。
Nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &
編集:またはさらに良いことに、sshの-fパラメーターを使用するだけです。
ssh -f localhost 'sleep 60'
または、ssh
を使用してログインした後、開始して screen
後で戻って進捗状況や出力を確認することもできます。