ubuntuusers.de

systemd timer

Status: Gelöst | Ubuntu-Version: Ubuntu 24.04 (Noble Numbat)
Antworten |

micneu

Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 758

Wohnort: Hamburg

Moin, ich wollte diesmal einen Dienst regelmäßig laufenlassen (anstatt cronjob) Nach dem Erstellen der service & timer datei wird auch einmal der job abgearbeitet. Wenn ich warten sollte nach meiner Planung der dienst nach 5 Minuten wieder laufen. Leider macht er das nicht. Ich poste beide Dateien

/etc/systemd/system/update_nginx_ips_2.timer

[Unit]
Description=Run update_nginx_ips_2.sh every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=update_nginx_ips_2.service

[Install]
WantedBy=timers.target

/etc/systemd/system/update_nginx_ips_2.service (in der service datei habe ich es mit Type=oneshot und auch simple getestet)

[Unit]
Description=Run my command update_nginx_ips_2

[Service]
Type=oneshot
ExecStart=/opt/update_nginx_ips_2.sh /etc/nginx/allowed-domain.list /etc/nginx/allowed-ips-from-domains-active.conf
RemainAfterExit=true

ausgabe von status

root@tmp-srv:/etc/nginx# systemctl status update_nginx_ips_2.service
● update_nginx_ips_2.service - Run my command update_nginx_ips_2
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.service; static)
     Active: active (exited) since Wed 2024-08-07 17:52:46 CEST; 22min ago
TriggeredBy: ● update_nginx_ips_2.timer
    Process: 13124 ExecStart=/opt/update_nginx_ips_2.sh /etc/nginx/allowed-domain.list /etc/nginx/allowed-ips-from-domains-active.conf (code=exi>
   Main PID: 13124 (code=exited, status=0/SUCCESS)
        CPU: 1.213s

Aug 07 17:40:23 tmp-srv systemd[1]: Starting update_nginx_ips_2.service - Run my command update_nginx_ips_2...
Aug 07 17:52:46 tmp-srv systemd[1]: Finished update_nginx_ips_2.service - Run my command update_nginx_ips_2.
root@tmp-srv:/etc/nginx# systemctl status update_nginx_ips_2.timer
● update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.timer; enabled; preset: enabled)
     Active: active (running) since Wed 2024-08-07 17:07:24 CEST; 1h 8min ago
    Trigger: n/a
   Triggers: ● update_nginx_ips_2.service

Aug 07 17:07:24 tmp-srv systemd[1]: Started update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes.
root@tmp-srv:/etc/nginx# systemctl status update_nginx_ips_2.service
● update_nginx_ips_2.service - Run my command update_nginx_ips_2
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.service; static)
     Active: active (exited) since Wed 2024-08-07 17:52:46 CEST; 23min ago
TriggeredBy: ● update_nginx_ips_2.timer
    Process: 13124 ExecStart=/opt/update_nginx_ips_2.sh /etc/nginx/allowed-domain.list /etc/nginx/allowed-ips-from-domains-active.conf (code=exi>
   Main PID: 13124 (code=exited, status=0/SUCCESS)
        CPU: 1.213s

Aug 07 17:40:23 tmp-srv systemd[1]: Starting update_nginx_ips_2.service - Run my command update_nginx_ips_2...
Aug 07 17:52:46 tmp-srv systemd[1]: Finished update_nginx_ips_2.service - Run my command update_nginx_ips_2.

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Zwei Dinge sind mir in der Service Unit aufgefallen:

  • Zum einen hast du dort den Abschnitt

[Install]

nicht gesetzt. Ob das solche Auswirkungen hat, weiß ich allerdings nicht, bei mir ist er in allen von mir erstellten Units mit

[Install]
WantedBy=default.target

belegt.

  • Zum zweiten ist bei dir der Wert

RemainAfterExit=true

gesetzt. Wofür man so etwas benötigt, ist in der Dokumentation leider nicht beschrieben, und da du ihn aktiv auf true gesetzt hast, wirst du dir irgendetwas dabei gedacht haben; und ich wüsste gern, was.

Besonders in Verbindung mit

Type=oneshot

ergibt das aus meinem Verständnis heraus nämlich keinen Sinn: warum sollte ein Skript aktiv gehalten werden, wenn es nichts mehr tut? Besonders an diesem Punkt vermute ich, dass das Skript deswegen nicht mehr neu gestartet wird, weil es seit dem vorherigen Durchlauf noch aktiv ist.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

micneu schrieb:

ausgabe von status

root@tmp-srv:/etc/nginx# systemctl status update_nginx_ips_2.service
● update_nginx_ips_2.service - Run my command update_nginx_ips_2
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.service; static)
     Active: active (exited) since Wed 2024-08-07 17:52:46 CEST; 22min ago
TriggeredBy: ● update_nginx_ips_2.timer
    Process: 13124 ExecStart=/opt/update_nginx_ips_2.sh /etc/nginx/allowed-domain.list /etc/nginx/allowed-ips-from-domains-active.conf (code=exi>
   Main PID: 13124 (code=exited, status=0/SUCCESS)
        CPU: 1.213s

Aug 07 17:40:23 tmp-srv systemd[1]: Starting update_nginx_ips_2.service - Run my command update_nginx_ips_2...
Aug 07 17:52:46 tmp-srv systemd[1]: Finished update_nginx_ips_2.service - Run my command update_nginx_ips_2.

Wie sind die Ausgaben von:

systemctl is-active update_nginx_ips_2.service
pd -fp 13124

?

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

wxpte schrieb:

Zwei Dinge sind mir in der Service Unit aufgefallen:

  • Zum einen hast du dort den Abschnitt

[Install]

nicht gesetzt. Ob das solche Auswirkungen hat, weiß ich allerdings nicht, ...

Wenn die service-unit von einer timer-unit ausgeführt wird, ist die [Install]-Section in der service-unit, nicht erforderlich.

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

Ah, OK.

lubux schrieb:

...
pd -fp 13124

Meintest du hier evtl.

ps -fp 13124

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

wxpte schrieb:

Meintest du hier evtl.

ps -fp 13124

Ja.

micneu

(Themenstarter)
Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 758

Wohnort: Hamburg

lubux schrieb:

Wie sind die Ausgaben von:

systemctl is-active update_nginx_ips_2.service
pd -fp 13124

?

root@tmp-srv:/etc/nginx# systemctl is-active update_nginx_ips_2.service
active
root@tmp-srv:/etc/nginx# ps -fp 14110
UID          PID    PPID  C STIME TTY          TIME CMD

jetzt habe ich mal

RemainAfterExit=true

zu

RemainAfterExit=false

geändert (warum, kann ich nicht mehr sagen, ich glaube ich habe so viel geändert das ich es übersehen habe) danke das war die lösung. hier noch meine geänderten timer & service datei

root@srv:~# cat /etc/systemd/system/update_nginx_ips_2.timer
[Unit]
Description=Run update_nginx_ips_2.sh every 5 minutes

[Timer]
#OnBootSec=2min
#OnUnitActiveSec=5min
#OnCalendar=*:00/5:00
OnStartupSec=60
OnUnitInactiveSec=300
Unit=update_nginx_ips_2.service

[Install]
WantedBy=timers.target
[Unit]
Description=Run update_nginx_ips_2.sh every 5 minutes

[Timer]
#OnBootSec=2min
#OnUnitActiveSec=5min
#OnCalendar=*:00/5:00
OnStartupSec=60
OnUnitInactiveSec=300
Unit=update_nginx_ips_2.service

[Install]
WantedBy=timers.target
root@srv:~# cat /etc/systemd/system/update_nginx_ips_2.service
[Unit]
Description=Run my command update_nginx_ips_2

[Service]
Type=simple
ExecStart=/opt/update_nginx_ips_2.sh ...
RemainAfterExit=false

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

micneu schrieb:

danke das war die lösung. hier noch meine geänderten timer & service datei

OnUnitInactiveSec=300

Wenn das die Lösung war, warum benutzt Du jetzt "OnUnitInactiveSec=" statt "OnUnitActiveSec=", in deiner timer-unit?

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

micneu schrieb:

jetzt habe ich mal

RemainAfterExit=true

zu

RemainAfterExit=false

geändert (warum, kann ich nicht mehr sagen, ich glaube ich habe so viel geändert das ich es übersehen habe) danke das war die lösung.

Dann kannst du diese Option auch gleich ganz weglassen, denn laut 🇬🇧 Dokumentation ist das der Default-Wert.

micneu

(Themenstarter)
Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 758

Wohnort: Hamburg

lubux schrieb:

micneu schrieb:

danke das war die lösung. hier noch meine geänderten timer & service datei

OnUnitInactiveSec=300

Wenn das die Lösung war, warum benutzt Du jetzt "OnUnitInactiveSec=" statt "OnUnitActiveSec=", in deiner timer-unit?

für mich funktioniert es jetzt so gut, und da der Job auch mal länger laufen kann, verstehe ich es so und haben meine Tests auch so ergeben das dann halt 5 Minuten gewartet wird

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

micneu schrieb:

... das dann halt 5 Minuten gewartet wird

Wie sind jetzt die Ausgaben von:

systemctl is-active update_nginx_ips_2.service
systemctl status update_nginx_ips_2.service

?

micneu

(Themenstarter)
Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 758

Wohnort: Hamburg

hier die gewünschte ausgäbe

root@srv:~# systemctl status update_nginx_ips_2.{timer,service}
● update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.timer; enabled; preset: enabled)
     Active: active (waiting) since Wed 2024-08-07 07:03:48 CEST; 1 day 1h ago
    Trigger: Thu 2024-08-08 08:55:07 CEST; 2min 32s left
   Triggers: ● update_nginx_ips_2.service

Aug 07 07:03:48 srv systemd[1]: Stopped update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes.
Aug 07 07:03:48 srv systemd[1]: Stopping update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes...
Aug 07 07:03:48 srv systemd[1]: Started update_nginx_ips_2.timer - Run update_nginx_ips_2.sh every 5 minutes.

○ update_nginx_ips_2.service - Run my command update_nginx_ips_2
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.service; static)
     Active: inactive (dead) since Thu 2024-08-08 08:50:07 CEST; 2min 27s ago
   Duration: 7.339s
TriggeredBy: ● update_nginx_ips_2.timer
    Process: 180200 ExecStart=/opt/update_nginx_ips_2.sh... (code=exited, status=0/SUCCESS)
   Main PID: 180200 (code=exited, status=0/SUCCESS)
        CPU: 949ms

Aug 08 08:49:59 srv systemd[1]: Started update_nginx_ips_2.service - Run my command update_nginx_ips_2.
Aug 08 08:50:07 srv systemd[1]: update_nginx_ips_2.service: Deactivated successfully.
root@srv:~#

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

micneu schrieb:

hier die gewünschte ausgäbe

timer wollte ich nicht wissen. Wie ist die Ausgabe von:

systemctl is-active update_nginx_ips_2.service

?
Aber

Active: inactive (dead) since Thu 2024-08-08 08:50:07 CEST; 2min 27s ago

ist was anderes als:

root@tmp-srv:/etc/nginx# systemctl is-active update_nginx_ips_2.service
active

micneu

(Themenstarter)
Avatar von micneu

Anmeldungsdatum:
19. Januar 2021

Beiträge: 758

Wohnort: Hamburg

jetzt aber, für mich sieht es gut aus

root@srv:~# systemctl is-active update_nginx_ips_2.service
inactive
root@srv:~# systemctl status update_nginx_ips_2.service
○ update_nginx_ips_2.service - Run my command update_nginx_ips_2
     Loaded: loaded (/etc/systemd/system/update_nginx_ips_2.service; static)
     Active: inactive (dead) since Thu 2024-08-08 08:55:11 CEST; 4min 31s ago
   Duration: 1.189s
TriggeredBy: ● update_nginx_ips_2.timer
   Main PID: 180808 (code=exited, status=0/SUCCESS)
        CPU: 853ms

Aug 08 08:55:09 srv systemd[1]: Started update_nginx_ips_2.service - Run my command update_nginx_ips_2.
Aug 08 08:55:11 srv systemd[1]: update_nginx_ips_2.service: Deactivated successfully.

die ausgäbe ist von meinem live system

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14314

micneu schrieb:

..., für mich sieht es gut aus

Man will doch auch wissen, warum es jetzt "gut aussieht", oder? 😉

Antworten |