複数のサーバーにsshを接続するbash sciptを作成し、そこからアプリケーションを起動しますが、sshが切断されても終了しないスクリプトを実行します。

複数のサーバーにsshを接続するbash sciptを作成し、そこからアプリケーションを起動しますが、sshが切断されても終了しないスクリプトを実行します。

これが私のスクリプトの外観です。リモートサーバーでアプリケーションを起動し、上部からプロセスを表示できるため、機能しますが、スクリプトが完了するとプロセスは消えます。このようなリモートサーバーでプロセスを無期限の実行状態に保つ方法が必要です。この方法では、リモートサーバーでコマンドを実行できます。リモートサーバーでプロセスを開始するスクリプトを実行しようとした場合にのみ問題が発生します。

#!/bin/bash
for HOST in $(cat servers.txt); do
   ssh user@$HOST nohup /opt/app.sh
done
#

答え1

screenリモートホストで次を使用します。

for host in $(cat hostlist.txt); do
   ssh user@${host} 'screen -dmS MyProcess /path/to/job.sh'
done

答え2

使用を検討してくださいパフパフまたはGNUパラレルリモートコンピュータでタスクを実行します。

スクリプトが使用するすべてのリモートシステムで実行することを検討してください。batchまたはat

だからあなたは実行することができますpssh -H host1 -H host2 batch -f remotescript.sh

たぶん、このような分散ビルド自動化システムがあるかもしれません。アイスクリーム役に立つかもしれません。

関連情報