実行可能ファイル(Webアプリケーション)を年中無休で24時間実行し、クラッシュ時に自動的に再起動するには? [閉鎖]

実行可能ファイル(Webアプリケーション)を年中無休で24時間実行し、クラッシュ時に自動的に再起動するには? [閉鎖]

サーバーには、完全なスタンドアロンWebアプリケーションである実行可能ファイルがあります。 SSH経由でサーバーにログインしてファイルを実行すると、Webサイトがインターネットに表示されます。明らかにSSH経由で私が実行しているので、切断するとサイトがクラッシュします。

このファイルを年中無休で24時間実行し、失敗した場合に再起動する慣用的で簡単な方法は何ですか?

これはUbuntu 15ですが、私の質問はそれに関するものではありません。

私はサードパーティのソリューションやWebサービスを使用したくなく、標準のLinuxツールとアプリケーションのみを使用したいと思います。

systemd用のサービスを作成する必要がありますか?

答え1

はい、完全なWebサーバー実行可能サービスを作成する必要があります。サービスを使用するには、ルートではなくアカウントを使用することをお勧めします。 Webサーバーが破損した場合に発生するダメージを制限するには必須と言いたいです。私考える1 systemd必要な手順を案内する適切な文書があります。


1systemd問題が起きたら走りません…

答え2

以前のinitシステムでは、プロセスの終了時に再起動するのに役立つ古いstart-stop-daemonアプリケーションを使用できます。以下を実行してください。

start-stop-daemon --start --background --exec /path/to/your/executable

また、実行中のプロセスの予約優先順位、IO優先順位などを設定できます。

systemdサポートシステムでは、前述のsystemdサービスユニットを作成することもできます(より良い場合)。同じことを行いますが、別々の起動 - 停止 - デーモン呼び出しの代わりにsystemd機能を使用します。詳しくはこちらをご覧ください。https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

答え3

  • 簡単な方法

/home/user/start_service.shたとえば、次のコンテンツでスクリプトを作成します。

#!/bin/sh
while true; do
    path/to/service/executable
done

そして/etc/rc.localに追加してください:

#!/bin/sh -e
su user -c '/home/user/start_service.sh' &
exit 0

その後、スクリプトを手動で起動します。

/home/user/start_service.sh

これにより、Webアプリケーションを忘れることができます。システムが起動すると自動的に起動します。

  • 正しい方法:

次のツールを使用してください。システムupstartアプリケーションからサービスを作成します。

関連情報