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?
Bash Script beim Booten starten
Re: Bash Script beim Booten starten
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.s837ubc hat geschrieben:16.05.2019 17:48:49Kann mir jemand erläutern, welche Angaben bei "Required-Start", "Required-Stop", "Should-Start" und "Should-Stop" eingetragen werden müssen?
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.
Re: Bash Script beim Booten starten
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.
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.
Vielen Dank an TomL für die Hinweise auf systemd.TomL hat geschrieben:16.05.2019 17:56:12Start-Up-Scripts im sysvinit-Style sind seit 2015 quasi tot
Re: Bash Script beim Booten starten
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:
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.)
Wenn du zwingend den laufenden OpenVPN voraussetzt, sollten dir folgende Zeilen reichen:
Code: Alles auswählen
Required-Start: […] openvpn
Required-Stop: […] openvpn
(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.
Re: Bash Script beim Booten starten
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.
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.