サーバーには、完全なスタンドアロン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
アプリケーションからサービスを作成します。