Main /

Systemd

Systemd

Systemd

Eigentlich ist Systemd angetreten, um das leicht verwirrende sysvinit abzulösen, wo man irgendwann nicht mehr durchstieg.

Das alte Script-Basierte Sysvinit soll ersetzt werden durch etwas besseres, einfacheres, leichter verständliches. Aber systemd kann damit nicht gemeint sein, das ist per Default falsch gebaut worden. Unter Unix heißt es, ein Tool für genau eine Sache. Systemd will alles können.

Was ich will

Ich möchte den Cisco VPN Agent auf dem Rechner ständig im Hintergrund laufen lassen.

  # su -
  [geheimes Password]
  /opt/cisco/secureclient/bin/vpnagentd -execv_instance &
  # exit

Service erstellen

Das geht doch bestimmt auch als Service.

Legen wir uns einen einfachen Service an:

  [Unit]
  Description=vpnagentd starter

  [Service]
  Type=simple
  ExecStart=/opt/cisco/secureclient/bin/vpnagentd -execv_instance

  [Install]
  WantedBy=multi-user.target

In Unit muss Description gesetzt sein. In Service reicht eigentlich der absolute Pfad zum Programm, nebst Parameter. Type simple gibt an, das unser Process nicht forked. In Install sagen wir, in welchem Runlevel wir den Process laufen lassen wollen, in Multi-user.

Gespeichert wird die Datei in /etc/systemd/system/vpnagentd.service

starten

Gestartet wird der Service jetzt per systemctl start vpnagentd und hier liegt der erste Hacken. Es kommt nicht zurück und ich habe keine Ahnung, warum nicht. Eigentlich sollte sich Systemd darum kümmern, das Processe im Hintergrund gestartet werden. Macht es aber nicht.

Auch die Fehlermeldungen sind wenig aussagekräftig, man kommt nur per journalctl -xeu vpnagent da ran. Den Output will keiner sehen, den versteht auch niemand.

Hat man dann eine Änderung an der obigen Datei, muss systemctl daemon-reload gefeuert werden. Wozu?

Meine Lösung:

Ein kleines Bash-Script, das mir den Service selbst startet und mittels '&' in den Hintergrund legt. Das muss ich zwar selbst starten, aber damit erspare ich mir das Systemd-Geraffel, was scheinbar nicht funktioniert wie ich will.

wiederkehrende Aufgaben

Nächster Punkt sind cronjobs, also wiederkehrende Aufgaben.

Im guten alten cronie kann man dazu per crontab -e seine eigene Crontab editieren und einen Job anlegen, der nach einfachen Zeit-Regeln dann als User der man gerade selbst ist abgearbeitet wird. Perfekt und einfach.

In Systemd gibt es dazu Timer, die man nach wirklich komplizierten Zeit-Regeln aufsetzen darf, die dann einen Service starten. Nix mehr alles in einer Zeile, sondern kompliziert über mehrere Dateien verteilt und das muss man noch als Root-User machen.

Danke Nein!

"Alles was nicht einfach ist, ist entweder falsch oder zu kompliziert." Um mal V.Glazounov zu zitieren.

Frische Änderungen | Menü editieren
zuletzt geändert am 22.06.2023 09:29 Uhr von Lars
Edit Page | Page History