Bash Script beim Booten starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
s837ubc
Beiträge: 133
Registriert: 23.07.2013 14:17:01

Bash Script beim Booten starten

Beitrag von s837ubc » 16.05.2019 17:48:49

Verwendetes System: Debian 9 Stretch- 64 Bit

Hallo,

ein Script soll als Service auf Start, Stop, etc. reagieren. Dazu wurde ein Bash-Script in /etc/init.d eingestellt und mit 'chmod 755' mit den notwendigen Berechtigungen versehen. Mit update-rc.d ist das Script auch ordnungsgemäß im "Boot-Vorgang" bekannt gemacht worden.

Beim Booten wird das Script auch ausgeführt.

Für eine fehlerfreie Ausführung darf das Script erst ausgeführt werden, nachdem der Dienst "OpenVPN" gestartet wurde.

Aktuell wird es bereits ausgeführt, wenn der Dienst "OpenVPN" noch gar nicht gestartet wurde. Daher treten auch entsprechende Folgefehler auf, weil die VPN-Verbindungen noch nicht existieren.

Im Script sind folgende Initialisierungs-Parameter enthalten:

### BEGIN INIT INFO
# Provides: autossh
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop a autossh tunnel
# Description: Creates a SSH Tunnel
### END INIT INFO

Kann mir jemand erläutern, welche Angaben bei "Required-Start", "Required-Stop", "Should-Start" und "Should-Stop" eingetragen werden müssen?

TomL

Re: Bash Script beim Booten starten

Beitrag von TomL » 16.05.2019 17:56:12

s837ubc hat geschrieben: ↑ zum Beitrag ↑
16.05.2019 17:48:49
Kann mir jemand erläutern, welche Angaben bei "Required-Start", "Required-Stop", "Should-Start" und "Should-Stop" eingetragen werden müssen?
Gar keine. Start-Up-Scripts im sysvinit-Style sind seit 2015 quasi tot und werden nur noch im Kompatibilitätsmodus über einen Autogenerator gehandhabt, also mehr oder weniger zufällig, wenns um spezielle Abhängigkeiten geht.

Der richtige Weg sind service-units, mit denen in Debian das eigene Script durch systemd gestartet wird. Dafür gibts unzählige Beispiele im Web:
https://linuxconfig.org/how-to-automati ... temd-linux
https://schroeffu.ch/2017/05/einfache-s ... amspeak-3/
https://askubuntu.com/questions/919054/ ... ng-systemd

Dazu kann natürlich der ganze update-rc.d-Header aus dem Script als Müll entfernt werden. Sofern es für den Job besondere Abhängigkeiten gibt, kann man das z.B. mit After- und Before-Statements vorgeben.
Zuletzt geändert von TomL am 16.05.2019 21:58:37, insgesamt 1-mal geändert.

s837ubc
Beiträge: 133
Registriert: 23.07.2013 14:17:01

Re: Bash Script beim Booten starten

Beitrag von s837ubc » 16.05.2019 18:20:59

Hallo,

eine mögliche Lösung habe ich zwischenzeitlich herausgekommen:

### BEGIN INIT INFO
# Provides: autossh
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Should-Start: network-manager
# Should-Stop: network-manager
# X-Start-After: openvpn
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop a autossh tunnel
# Description: Creates a SSH Tunnel
### END INIT INFO

Durch diese Init-Parameter wird das Script zumindest direkt nach openvpn gestartet.

Ich bin mir nicht sicher, ob es überhaupt einen Init-Parameter "X-Start-After" gibt. In einem anderen Script ist ein Init-Parameter "X-Start-Before" angegeben worden. Folge dessen muss es auch einen "X-Start-After" geben. Oder liege ich da falsch?

----------------------

Nachtrag:

Habe erst später gesehen, dass zwischenzeitlich eine Antwort geschrieben wurde. Daher ist diese Antwort hinfällig.
TomL hat geschrieben: ↑ zum Beitrag ↑
16.05.2019 17:56:12
Start-Up-Scripts im sysvinit-Style sind seit 2015 quasi tot
Vielen Dank an TomL für die Hinweise auf systemd.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Bash Script beim Booten starten

Beitrag von JTH » 16.05.2019 23:52:16

Um harte Abhängigkeiten zu anderen Diensten anzugeben, sind doch genau die Zeilen Required-Start: und Required-Stop: gedacht.

Wenn du zwingend den laufenden OpenVPN voraussetzt, sollten dir folgende Zeilen reichen:

Code: Alles auswählen

Required-Start: […] openvpn
Required-Stop: […] openvpn
X-Start-Before und X-Stop-After sind denk ich nicht das, was du suchst. Die erzeugen eine andere Art Abhängigkeit. – Und gibt es das X-Start-After, wie du geschrieben hast, überhaupt?

(Ohne 100%ige Gewähr, mein Initscript-Wissen ist etwa eingerostet, aus den von Thomas erwähnten Gründen.)
Manchmal bekannt als Just (another) Terminal Hacker.

s837ubc
Beiträge: 133
Registriert: 23.07.2013 14:17:01

Re: Bash Script beim Booten starten

Beitrag von s837ubc » 28.05.2019 18:16:44

Hallo,

verzeih meine verspätete Antwort.

Die Angabe X-Start-After und X-Stop-Before habe ich in einer anderen Datei im Pfad /etc/init.d entdeckt.

Von daher gehe ich davon aus, dass dieser Parameter schon existieren.

Antworten