web-dev-qa-db-ja.com

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

複数のサーバーで問題が発生し(月に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サービスを停止しますが、このサービスは停止したままになります。

そして、これがOdoo11サービスのsystemdconfigです。

[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-stopservice configに何か問題がありますか?そのサービスを自分で実行すると、意図したとおりに機能します。

1
Andrius

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

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

違いについて詳しくは、man systemd.unitをご覧ください。

1
Mark Stosberg