eigene Timer mit SYSTEMD

Hinweis: In dem Thema eigene Timer mit SYSTEMD gibt es 16 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Heute, Januar 2016, glauben noch mache, dass openSUSE keine systemd.timer könne.
    Das ist falsch.
    Es wurden lediglich noch nicht alle Services implementiert, die regelmäßig laufen sollen.


    systemd Timer kann man jederzeit verwenden.


    Es braucht dazu drei Dinge:

    • Ein ausführbares Etwas.
    • Ein systemd.service File für dieses ausführbare Etwas
    • Ein systemd.timer File für diesen systemd.service für das ausführbare Etwas.


    Das sei hier exemplarisch gezeigt anhand eines ganz schlichten Shellscriptes.
    Das Shellscript schreibt lediglich das aktuelle Datum in eine Datei:


    ( der date Befehl wird verkettet mit ||. Falls er also fehlschlägt, wird : die NOP Anweisung ausgeführt. Damit muss man STERR nicht umleiten. Es ist sichergestellt, dass im Fehlerfalle dann die NoOPeration ausgeführt wird, die immer erfolgreich ist. Man hätte auch einfach stattdessen STDERR nach null umleiten können: 2>/dev/null)


    Dieses selten dämliche Script nennen wir im systemd Jargon den "Service".
    Und dafür brauchen wir nun ein Servicefile und ein Timerfile.


    Leider sind die Manpages bei openSUSE nicht vollständig. Es gibt sie nur für: systemd-system.conf(5), locale.conf(5), systemctl(1), journalctl(1), systemd-notify(1), daemon(7), sd-daemon(3), systemd.unit(5), systemd.special(5), pkg-config(1), kernel-command- line(7), bootup(7), systemd.directives(7)
    (die Zahlen in Klammern geben die jeweiligen Kapitel/Sections in den Manpages an. ein (7) wäre also z.B. mit man 7 systemd.directives aufzurufen.)
    Bessere Doku findet sich bei Freedesktop



    Im Prinzip sind Servicefiles nichts anderes als die alten LSB (LinuxSandardBase) gemäßen init.d Scripte: Die haben ein paar Beschreibungen, die später angezeigt werden, sagen, in welchem Runlevel es laufen soll und dergleichen mehr. Kurz eine Konfigurationsdatei.
    Für unseren tumben Service ist es schlicht das hier:

    Der Platz für dieses Conf- File ist am besten /etc/systemd/{system|user}, je nachdem, wie der Service das braucht. Wir nehmen /etc/systemd/system.
    Und wir benennen das, wie es sich gehört:
    /etc/systemd/system/stupid_timer.service Er Name ist frei wählbar, die Extension .service nicht.
    (Ich bin mir nicht sicher, ob man auch andere namen.Extension verwenden kann, ich denke es ist nur eine Konvention. Habe das aber gar nicht ausprobiert, da ja solche Konventionen die Sache einfacher les- und nachvollziehbar machen.)


    Haben wir dort das obige Script und in /user/local/bin unseren "Service", also das billige Shellscript, könnten wir den Service schon einmal testen:

    Code
    # Weil wir keine [install] section haben, führt das hier zu einem Fehler:
    systemctl enable stupid_timer.service
    
    
    # aber wir können ihn laufen lassen:
    systemctl start stupid_timer.service


    Damit nun systemd für uns das doofe Script periodisch ausführt, brauchen wir lediglich ein .timer file.
    Das speichern wir ebenfalls in /etc/systemd/system (oder halt in user....)

    Für den Namen gilt dasselbe, wie für .service.
    Wir nennen das Timerfile also /etc/systemd/system/stupid_timer.timer
    Und damit haben wir alles erledigt


    Wir müssen lediglich noch diesen Timer aktivieren:

    Code
    systemctl enable stupid_timer.timer
    
    
    # Da wir ja keinen Service aktiviert haben, und systemd die Timer nur bei Systemstart einliest,
    # müssen wir, falls wir stupid_timer.timer ändern, den Krempel manuell neu einlesen lassen:
    systemctl daemon-reload


    Have fun!


    13.01.2016 daemon-reload verbessert

    3 Mal editiert, zuletzt von Sauerland () aus folgendem Grund: Zwecks besserer Auffindung nach "wichtig" transferiert...

    Für den Inhalt des Beitrages 90072 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Schliesse mich gerne an. Prima Beitrag :thumbup: .
    Hinweis (hat nur bedingt was mit diesen Beitrag zu tun): Systemd bietet erst ab Version 212 die vollständige Implementierung auch cron-skripte auszuführen. In openSUSE 13.2 werkelt zumindest bei mir noch Version 210. Wen es interessiert, dem sei dieser Link empfohlen: hier

    be tolerant - not ignorant
    Alle Hunde sind schwarz.
    Es gibt einen Hund der nicht weiß ist.

    Für den Inhalt des Beitrages 90112 haftet ausdrücklich der jeweilige Autor: Boreas

  • umso mehr ein Grund gleich systemd.timer zu nehmen.
    Is ja nicht so schwer.
    8)

    Für den Inhalt des Beitrages 90113 haftet ausdrücklich der jeweilige Autor: LinuPia

  • muss mich dem Lob anschließen - ein prima Beitrag.


    Stell ihn doch in die Rubrik 'howtos' ein .. dann verschwindet er nicht der Masse der Forenbeiträge!

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 90114 haftet ausdrücklich der jeweilige Autor: wurzel99

  • Na, dann will ich dich doch gleich noch mehr verwirren:
    Es geht trotzdem unter.
    Wir werden halt künftig einfacher mit einem Link dorthin antworten.
    8)


    Foren sind ja dazu da, dass man Fragen stellt.
    Von Lösungen selber suchen, oder gar ein paar Stickypost lesen, am Ende gar die ganze Unterforenliste verstehen,
    hat ja nie jemand geredet.
    Wozu auch?
    Die sollen sich ruhig ein wenig anstrengen, wenn sie mir schon kostenlos helfen.

    Für den Inhalt des Beitrages 90118 haftet ausdrücklich der jeweilige Autor: LinuPia

  • Zitat

    Wir werden halt künftig einfacher mit einem Link dorthin antworten.

    hab ich schon häufig gemacht (und natürlich nicht nur ich) - für viele Suchende (dazu zähle ich mich auch) ist die Suchmaschine des jeweiligen Vertrauens oft eine Qual. Nicht weil der Suchende faul ist sondern weil er einfach in dem Wust der unpassenden Treffer ertrinkt.


    Ein Link von hier auf eine genauer passende Quelle wirkt vielfach Wunder - nicht immer ..

    There's no place like 127.0.0.1

    Für den Inhalt des Beitrages 90120 haftet ausdrücklich der jeweilige Autor: wurzel99

  • Solch nützliche Links haben ja einige User hier in ihrer Signatur zusammengefasst.
    Nur werden die leider zu oft ignoriert.
    Man muss eben auch bereit sein, da mal draufzuklicken und zwei Sätze mehr zu lesen.