【发布时间】:2020-02-05 07:50:20
【问题描述】:
我编写了这个脚本来备份我的 sql 文件,包括物理备份(复制数据库)和逻辑备份(pg_dumpall)。
#!/bin/bash
# Backup-Skript für Postgresql
# Dump aller Datenbanken.
/opt/postgresql/bin/pg_dumpall > /mnt/backup/postgresql/pg_backup.bak
# "Physisches" Kopieren des Datenbankverzeichnises.
/opt/rsync/bin/rsync -avu /mnt/evc/postgresql/var/data /mnt/backup/postgresql/
# Dieser Ordner enthält auch die Konfigurationsdateien.
# Daher müssen diese nicht separat kopiert werden.
以下 systemd 单元使用此脚本。
[Unit]
Description=Sicherung der Datenbanken (Postgresql)
DefaultDependencies=no
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=postgresql
Group=postgresql
ExecStart=/opt/postgresql/Scripts/backup.sh
[Install]
WantedBy=multi-user.target
未启用。
那么下面启用的计时器单元应该每 15 分钟运行一次服务。
[Unit]
Description=Backup des Postgresql-Servers alle 15 Minuten
Requires=backup-postgresql.service
[Timer]
# Alle 15 Minuten.
OnCalendar=*:0,15,30,45
Persistent=true
Unit=backup-postgresql.service
[Install]
WantedBy=timers.target
但计时器不会触发。一旦第一次命中为零,服务就会被执行
sudo systemd list-timers --all
显示:
NEXT LEFT LAST PASSED UNIT ACTIVATES
Thu 2020-02-06 00:00:00 CET 15h left Wed 2020-02-05 08:25:59 CET 20min ago shadow.timer shadow.service
Thu 2020-02-06 08:40:57 CET 23h left Wed 2020-02-05 08:40:57 CET 5min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
n/a n/a Wed 2020-02-05 08:45:00 CET 1min 32s ago backup-postgresql.timer backup-postgresql.service
附加信息:我使用的是内核 5.5.1-arch1-1 的 arch。
【问题讨论】:
-
我可能是错的(这不会是第一次或最后一次)但不是
OnCalendar每 15 秒输入一次(minutely映射到*-*-* *:*:00)?不应该是*:0,15,30,45:0吗? -
@paxdiablo:我认为每 15 秒触发一次它需要一个额外的
*:(例如*:*:0,15,30,45)。也许试试OnUnitActiveSec=15min看看是否可行。 -
一个好主意,但不幸的是没有任何改变。即使在重新启动后。
-
你启用 timer 单元,是吗?
-
我认为
RemainAfterExit=yes是问题所在。这意味着服务将保持启动直到停止。计时器不会停止服务。它只是每 15 分钟启动一次。因此,由于该服务已经启动,它不会再次启动。尝试删除RemainAfterExit=yes
标签: bash timer systemd archlinux