複数のサーバーに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

おすすめ記事