systemd Startscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dl3ad
Beiträge: 133
Registriert: 25.02.2014 11:01:33

systemd Startscript

Beitrag von dl3ad » 30.12.2019 12:37:43

Hallo,
folgendes Senario:
Auf einem Raspi läuft ein USBIP Server der mir USB-Geräte tunnelt.
Auf dem Debian PC kann ich die Geräte dann entsprechen verbinden

Code: Alles auswählen

usbip attach -r 192.168.2.224 -b 1-1.3
oder trennen

Code: Alles auswählen

usbip detach -p 00
mit dem Einzug von systemd hat sich das Startscripting ja verändert - unter anderem sollen ja ereignissbedingte Aktionen möglich sein.

Ist folgendes möglich?
In einem Script z.B. myusb.service wird die Server ip überwacht (keep alive ping)
Wenn der Server erreichbar ist =>

Code: Alles auswählen

usbip attach -r 192.168.2.224 -b 1-1.3
und wenn der Server ausgeschaltet wird dann =>

Code: Alles auswählen

usbip detach -p 00
Gruß Frank

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: systemd Startscript

Beitrag von jph » 30.12.2019 14:33:49

Du könntest dein Skript über eine Timer-Unit regelmäßig starten (genau genommen startet die Timer-Unit die Service-Unit und die Service-Unit das Skript). Das Skript schaut, ob der Server da ist, dann läuft es (und somit die Service-Unit) weiter, ansonsten beendet es sich wieder.

dl3ad
Beiträge: 133
Registriert: 25.02.2014 11:01:33

Re: systemd Startscript

Beitrag von dl3ad » 30.12.2019 14:46:46

Wo kann ich nachlesen was eine Timer-Unit / Service-Unit ist ?
Wie kann das Skript nachschauen ob der Server da ist ?

Gruß Frank

TomL

Re: systemd Startscript

Beitrag von TomL » 30.12.2019 16:06:08

dl3ad hat geschrieben: ↑ zum Beitrag ↑
30.12.2019 12:37:43
Ist folgendes möglich?
Nein, das ist nicht möglich. systemd ist ein Startsystem für lokale Services und Dienste und kein Überwachungssystem für entfernte Server.

Mit systemd-Service-Units kannst Du sowohl als Daemons konzipierte Programme oder Scripte starten, oder auch Startscripte, die wiederum einen Daemon starten oder einfach nur Scripte/Programme, die kurzzeitig einen bestimmten Job durchführen. Ein solches eigenes Script, welches von einer Service-Unit gestartet wurde, kann sich selber in den Hintergrund forken und dann durchaus zyklisch die Existenz eines fremden Servers prüfen. In Abhängigkeit vom Ergebnis dieser Prüfung kann es dann auch andere Service-Units starten oder auch wieder stoppen.

All das wäre aber eine von dir zu implementierende persönlich gewünschte Logik, die jedoch nix mit systemd zu tun hat und auch mit jedem anderen Startsystem zu lösen wäre. Mit Hilfe von systemd kannst Du nur den Startzeitpunkt Deiner Service-Unit festlegen und wann bzw. unter welchen Bedingungen sie wieder beendet wird.... und Du kannst sie von systemd auf "tot" überwachen lassen und Schritte bestimmen, was dann damit passieren soll.
dl3ad hat geschrieben: ↑ zum Beitrag ↑
30.12.2019 14:46:46
Wo kann ich nachlesen was eine Timer-Unit / Service-Unit ist ?
Bei google.
dl3ad hat geschrieben: ↑ zum Beitrag ↑
30.12.2019 14:46:46
Wie kann das Skript nachschauen ob der Server da ist ?
In dem Du im Script die entsprechenden Befehle ausführst, z.B. ping in einem endlosen while-loop.

Antworten