Postgresデータベースを使用するプログラムを作成し、そのためのsystemdサービスファイルを作成しました。現在、私のサービスは起動時に正常に開始され、Postgresがアップグレードのために停止されると(によりapt upgrade
)停止されます。ただし、アップグレードが完了してPostgresが再び起動すると、サービスが自動的に開始されません。
いくつかの依存関係を定義して、サービスを自動的に再開することはできますか?
これは、Postgresのアップグレード中に自動的に停止された後の私のサービスのステータスです。
● tabill.service - My service
Loaded: loaded (/srv/tabill/tabill.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2017-07-04 00:29:24 EEST; 44min ago
Main PID: 1048 (code=killed, signal=TERM)
サービスを手動で再開することもできます。
これが私のサービスファイルです:
[Unit]
Description=My service
Wants=nginx.service
Requires=postgresql.service
After=postgresql.service
[Service]
Type=simple
ExecStart=/srv/tabill/app/serve
Restart=always
TimeoutSec=60
[Install]
WantedBy=multi-user.target
私はとを追加してPartOf=postgresql.service
からBindsTo=postgresql.service
手動でPostgresを停止して起動しようとしましたが、どちらも役に立ちませんでした。
もちろん、を削除するRequires
こともできますが、両方が再開する場合は、両方のサービスを一緒に停止することをお勧めします。
Requires=
ましたが、役に立ちませんでした。問題はPartOf=
「ユニットの停止と再起動」のリンクにあると思いますが、Postgresはアップグレード中に再起動されません。停止、アップグレード、および開始されます。
systemctl restart postgresql
、そうすると、systemdは依存するサービスを再び再開することを覚えています。何らかの理由でstop
、のstart
代わりにの代わりにaptを行うように思われrestart
ます。
PartOf=
適切なソリューションのように聞こえます。Requires=
取り外して試してみましたか?