毎日のaptアップグレードとクリーンアクティビティの後に特定のsystemctlサービスが停止されます

毎日のaptアップグレードとクリーンアクティビティの後に特定のsystemctlサービスが停止されます

複数のサーバーで問題が発生しています (月に 1 回、2 回発生)。Daily apt upgrade and clean activities何らかの理由で起動すると特定のサービスが停止し、その後起動しなくなるため、サーバーをオフにして手動で起動する必要があります。

syslog には次のように表示されます:

Mar  7 06:59:24 server systemd[1]: Starting Daily apt upgrade and clean activities...
Mar  7 06:59:38 server systemd[1]: Reloading.
Mar  7 06:59:38 server systemd[1]: Started ACPI event daemon.
Mar  7 06:59:38 server systemd[1]: Stopping Odoo 11...
Mar  7 06:59:39 server systemd[1]: Stopped Odoo 11.
Mar  7 06:59:39 server systemd[1]: Stopped PostgreSQL RDBMS.
Mar  7 06:59:39 server systemd[1]: Stopping PostgreSQL Cluster 9.5-main...
Mar  7 06:59:41 server systemd[1]: Stopped PostgreSQL Cluster 9.5-main.
Mar  7 06:59:42 server systemd[1]: Reloading.
Mar  7 06:59:42 server systemd[1]: Starting Daily apt download activities...
Mar  7 06:59:42 server systemd[1]: Started ACPI event daemon.
Mar  7 06:59:42 server systemd[1]: Reloading.
Mar  7 06:59:42 server systemd[1]: Started ACPI event daemon.
Mar  7 06:59:42 server systemd[1]: Starting PostgreSQL Cluster 9.5-main...
Mar  7 06:59:45 server systemd[1]: Started PostgreSQL Cluster 9.5-main.
Mar  7 06:59:45 server systemd[1]: Starting PostgreSQL RDBMS...
Mar  7 06:59:45 server systemd[1]: Started PostgreSQL RDBMS.
Mar  7 06:59:51 server systemd[1]: Started Daily apt upgrade and clean activities.
Mar  7 06:59:59 server systemd[1]: Started Daily apt download activities.

ログからわかるように、これを起動すると、ACPI イベント デーモンも起動し、Odoo 11サービスが停止しますが、このサービスは停止したままになります。

Odoo 11 サービスの systemd 設定は次のとおりです。

[Unit]
Description=Odoo 11
Requires=postgresql.service
After=postgresql.service

[Service]
Type=simple
PermissionsStartOnly=true
User=odoo
Group=odoo
SyslogIdentifier=odoo11
ExecStart=/opt/odoo/venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo11.conf

[Install]
WantedBy=multi-user.target

systemd の start-stop サービス設定に問題があるのか​​もしれません。ただし、そのサービスを自分で実行すると、意図したとおりに動作します。

答え1

おそらく、Wants=の代わりに PostgreSQL サービス依存関係で を使用することになるでしょうRequires=

を使用するとWants=、ソフトウェアのアップグレードのために PostgreSQL が停止/起動されたからといって、アプリが停止されることはありません。

この違いの詳細については、 をご覧くださいman systemd.unit

関連情報