Я написал этот скрипт для резервного копирования моих файлов 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.
OnCalendar
каждые 15 секунд (minutely
сопоставляется с*-*-* *:*:00
)? Разве это не должно быть*:0,15,30,45:0
? - person paxdiablo   schedule 05.02.2020*:
(например,*:*:0,15,30,45
). Возможно, попробуйтеOnUnitActiveSec=15min
и посмотрите, сработает ли это. - person l'L'l   schedule 05.02.2020RemainAfterExit=yes
. Это означает, что служба будет запущена до тех пор, пока не будет остановлена. Таймер не останавливает службу. Он просто запускается каждые 15 минут. Поэтому, поскольку служба уже запущена, она больше не идет. Попробуйте удалитьRemainAfterExit=yes
- person Stewart   schedule 05.02.2020