[gelöst] Skript als User postgres automatisch täglich ausführen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

[gelöst] Skript als User postgres automatisch täglich ausführen

Beitrag von homer65 » 03.10.2023 13:30:07

Guten Tag,
habe ein Skript, das ein Backup einer Postgres Datenbank macht.
Damit es funktioniert muss man es als User postgres starten.
Kann ich das per Timer Unit machen? Und falls ja wie?
Gruß Christian
Zuletzt geändert von homer65 am 04.10.2023 10:05:12, insgesamt 1-mal geändert.

Benutzeravatar
whisper
Beiträge: 3193
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von whisper » 03.10.2023 13:35:33

Ich benutze Debianautopostgresqlbackup
Das läuft per cron als root.
Warum nimmst du das nicht?

homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von homer65 » 03.10.2023 14:16:00

Danke für den Hinweis. Wie funktioniert es denn? Also in die ROOT Crontab eintragen. Und dann? Was sichert es wohin?
Gruß Christian

mat6937
Beiträge: 2953
Registriert: 09.12.2014 10:44:00

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von mat6937 » 03.10.2023 14:33:43

homer65 hat geschrieben: ↑ zum Beitrag ↑
03.10.2023 13:30:07
habe ein Skript, das ein Backup einer Postgres Datenbank macht.
Damit es funktioniert muss man es als User postgres starten.
timer-unit oder mit einer crontab (usereigen oder die systemweite).

Code: Alles auswählen

@daily	postgres	</pfad/zum/script>  > /dev/null 2>&1
# - - - -

homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von homer65 » 03.10.2023 16:48:25

Habs selber hingekriegt mit folgender Service Unit (/etc/systemd/system/backup.service):

[Unit]
Description=Postgres Backup
[Service]
Type=simple
ExecStart=/home/postgres/backup.sh
User=postgres
WorkingDirectory=/home/postgres
[Install]
WantedBy=multi-user.target

und folgender Timer Unit (/etc/systemd/system/backup-timer.timer):

[Unit]
Description=Postgres Backup Timer
[Timer]
OnCalendar=Mon-Sun *-*-* 16:00:00
Unit=backup.service
[Install}
WantedBy=multi-user.target

Befehle zum scharfmachen (als ROOT):

systemctl enable backup.service
systemctl enable backup-timer.timer
systemctl start backup-timer.timer

Gruß Christian

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von JTH » 03.10.2023 17:16:58

homer65 hat geschrieben: ↑ zum Beitrag ↑
03.10.2023 16:48:25
/etc/systemd/system/backup.service:

[Install]
WantedBy=multi-user.target


Befehle zum scharfmachen (als ROOT):

systemctl enable backup.service
Die zitierten drei Zeilen sorgen dafür, dass auch bei/während jedem Booten des Rechners ein Backup gemacht wird.

Falls das nicht gewünscht ist, schalte den Service wieder ab

Code: Alles auswählen

systemctl disable backup.service
und entferne anschließend die obigen beiden Zeilen aus der backup.service.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
whisper
Beiträge: 3193
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von whisper » 03.10.2023 17:22:45

homer65 hat geschrieben: ↑ zum Beitrag ↑
03.10.2023 14:16:00
Danke für den Hinweis. Wie funktioniert es denn? Also in die ROOT Crontab eintragen. Und dann? Was sichert es wohin?
Gruß Christian
das stellst du in /etc/default/autopostgresqlbackup ein
Das Script ist ähnlich dem von mysql, deshalb nehme ich praktisch den selben pfad.
Ok, wenn du nur eine DB sichern willst vielleicht auch zuviel Aufwand

homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von homer65 » 03.10.2023 18:13:55

Habe die beiden letzten Zeilen aus dem backup.service Skript entfernt. Beim Versuch diese zu enablen kommen nun folgende (Fehler?) Meldungen:

The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von JTH » 03.10.2023 18:18:33

homer65 hat geschrieben: ↑ zum Beitrag ↑
03.10.2023 18:13:55
Habe die beiden letzten Zeilen aus dem backup.service Skript entfernt. Beim Versuch diese zu enablen kommen nun folgende (Fehler?) Meldungen:
disablen solltest du sie, vor dem Entfernen der beiden Zeilen. enablen muss du danach nichts mehr, das ist für den .timer ja schon erledigt.
Manchmal bekannt als Just (another) Terminal Hacker.

homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

Re: Skript als User postgres automatisch täglich ausführen

Beitrag von homer65 » 03.10.2023 18:34:03

@JTH
Super, das war wohl der passende Hinweis. Ich denke jetzt funktioniert es richtig. Nochmal vielen Dank.

Antworten