ハードリブート後に常に何らかのコマンドを実行する方法 (Ubuntu サーバー)

ハードリブート後に常に何らかのコマンドを実行する方法 (Ubuntu サーバー)

サーバーをハードリスタートするたびに (メモリ不足や DDOS などで異常終了した可能性があります)、スーパーバイザーの実行が失敗するという問題に直面しています。その理由は特定されており、/var/run/supervisor ディレクトリが削除されるだけです。

/var/run フォルダーはハードリブート時に削除されることを知りました (たとえば、ec2 パネルで強制停止してから起動するなど)。そこで、次のような質問があります。

ハードリブートのたびにこれを実行するにはどうすればよいですかmkdir /var/run/supervisor?このようなロジックを追加するのに最適な場所はどこですか。/etc/profileではないことは確かだと思います。

(残りは正常に動作し、スーパーバイザーはサービスとして構成され、var/run/supervisor/supervisor.sock で unix sock を使用します)

私のUbuntuバージョン:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

答え1

Ubuntu 20 では、スーパーバイザーが systemd サービス ユニットとして起動されることを期待します。

スーパーバイザーのサービス ユニットでは、ディレクトリが作成されるように指定する必要があります (ユニット名は異なる場合があります)。

https://serverfault.com/a/779648https://serverfault.com/a/840999

sudo systemctl edit --full supervisor

ディレクティブを追加します:

RuntimeDirectory=supervisor 

関連情報