![実行可能ファイル(Webアプリケーション)を年中無休で24時間実行し、クラッシュ時に自動的に再起動するには? [閉鎖]](https://linux33.com/image/87662/%E5%AE%9F%E8%A1%8C%E5%8F%AF%E8%83%BD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%EF%BC%88Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%EF%BC%89%E3%82%92%E5%B9%B4%E4%B8%AD%E7%84%A1%E4%BC%91%E3%81%A724%E6%99%82%E9%96%93%E5%AE%9F%E8%A1%8C%E3%81%97%E3%80%81%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E6%99%82%E3%81%AB%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
サーバーには、完全なスタンドアロン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
アプリケーションからサービスを作成します。