Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
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.
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
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
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?
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.
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.