1. ホーム
  2. bash

[解決済み] ターゲットマシン上でsshがバックグラウンドでコマンドを実行するようにする

2022-03-17 21:35:09

質問

に続く質問です。 シェルスクリプトでsshを使用するには? の質問をします。 リモートマシンで、そのマシンのバックグラウンドで実行されるコマンドを実行したい場合、sshコマンドを返すようにするにはどうしたらいいでしょうか? コマンドの最後にアンパサンド(&)を入れるだけでは、ハングアップするだけです。 コマンドの正確な形は次のようなものです。

ssh user@target "cd /some/directory; program-to-execute &"

何かアイデアはありますか? ターゲットマシーンにログインすると、常にテキストバナーが表示されるのですが、その際に SSH キーが設定されているため、パスワードは必要ありません。

解決方法は?

私は1年前に書いたプログラムでこの問題に直面したのですが、その答えはかなり複雑であることがわかりました。のwikipediaの記事で説明されているように、出力のリダイレクトだけでなく、nohupを使う必要があります。 ノーアップ 便宜上、ここにコピーしておきます。

<ブロッククオート

バックグラウンドで実行されるジョブのノーハウ化は SSHでログインしている時などに便利です。 バックグラウンドのジョブは によりログアウト時にハングアップすることがあります。 条件[2]を満たす必要があります。この問題も の3つすべてをリダイレクトすることで克服できます。 I/Oストリーム。

nohup myprogram > foo.out 2> foo.err < /dev/null &