我有一个应用程序,它在启动时从数据库中读取,该数据库由单独的 updater每天更新,由以下systemd
单元描述:
application.service
:
[Unit]
Description=Application reading database
Wants=network-online.target
After=local-fs.target network-online.target nss-lookup.target
[Service]
User=application
Group=application
WorkingDirectory=/var/lib/application
ExecStart=/var/lib/application/application-exec --database /var/db/database.db
StandardOutput=file:/var/lib/application/application.stdout.log
StandardError=file:/var/lib/application/application.stderr.log
StartLimitInterval=60
StartLimitBurst=10
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
updater.service
:
[Unit]
Description=Database updater
Wants=network-online.target
After=local-fs.target network-online.target nss-lookup.target
[Service]
Type=oneshot
User=updater
Group=updater
WorkingDirectory=/var/lib/updater
ExecStart=/var/lib/updater/updater-exec --database /var/db/database.db
StandardOutput=file:/var/lib/updater/updater.stdout.log
StandardError=file:/var/lib/updater/updater.stderr.log
[Install]
WantedBy=multi-user.target
updater.timer
:
[Unit]
Description=Timer for database updater
[Timer]
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=900
Persistent=true
[Install]
WantedBy=timers.target
我的问题:
如果更新成功执行,如何让更新服务重新启动应用服务(以便应用重新读取现在更新的数据库;成功/失败由更新的退出代码指示)?
这个关于serverfault的问题类似,但遗憾的是没有适用于我的用例的答案。