Oder, wie kann man das konfigurieren dass sie sich nicht überlappen, bzw. das Programm das sie ausführen. Und am liebsten so dass der zuletzt gestartete nachgeholt wird sobald möglich.
Ich weiss dass ich sowas auch im Skript codieren kann, aber ich dachte mir 💡sollte systemd hier nicht glänzen?
Meine Suchmaschinenbändigungskünste funktionieren grad nicht so gut.
Danke im voraus.
Zur Zeit habe ich das allersimpelste was es gibt:
[Unit]
Description=irgendwas
[Service]
ExecStart=/usr/bin/irgendwas
Normalerweise wird dieser Service über einen Timer gestartet, wird manchmal aber auch bei Dateiänderungen getriggert. Bzw. Das Skript. Das ist eben die Frage, was ist da besser: Das Skript direkt triggern und eine Lock-Funktion einbauen, oder kann man da auf systemd vertrauen?
Also wenn du schon einen systemd service erstellst, wrüde ich das immer darüber laufen lassen, weil:
Zum mehrfach starten: Systemd unterstützt sogenannte “templated services”. Dabei wird eine Dienstdatei mit einem Platzhalter (z. B. @) erstellt, z. B. [email protected]. Beim Starten des Dienstes kann dann eine Instanz angegeben werden, z. B. systemctl start myservice@instance1 und systemctl start myservice@instance2. Jede Instanz läuft dann unabhängig voneinander.
Agreed, aber genau da setzt meine Frage ja an:
Was genau geschieht wenn ich den starte während er gerade läuft? Und kann man das konfigurieren?
Ich will ja eben nicht dass die gleichzeitig laufen; am liebsten hintereinander.
Meine gestrigen Suchen haben da nicht weitergeholfen.
Nichts, es kann immer nur ein Lauf gleichzeitig starten.
Technisch korrekt, aber es geht mir ja letztendlich um den Prozess den der service aufruft; ich muss mal gucken was versch. Type= da tun können, aber um eine Lock-Funktion im Skript (warten bis alle anderen Instanzen desselben Skripts fertig sind) komme ich wohl nicht herum.
Wie anfangs schon gesagt, nur über den service starten, dann hast du das Problem nicht. Ansonsten wird halt einfach auch unübersichtlich.
Falls du mit einem Lock arbeiten willst, hab ich hier mal eingebaut: https://codeberg.org/Fedimins/mastodon-maintenance-tasks/src/commit/7bd1bd5b69928a806c5962fbeb7dadbcb6ab4512/cleanup_tasks.sh#L105