Ein Script in /etc/init.d starten

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
wckl
Beiträge: 828
Registriert: 10.08.2007 15:26:28
Lizenz eigener Beiträge: GNU General Public License
Wohnort: St. Georges de Didonne

Ein Script in /etc/init.d starten

Beitrag von wckl » 21.03.2016 11:06:41

Hallo,
ich habe ein neues script für die firewall erstellt. Wenn ich es starten will, :

Code: Alles auswählen

sudo service firewall start
erhalte ich:
Failed to start firewall.service: Unit firewall.service not found.
Ich nuss zugeben, "früher" hat das auch immer mit

Code: Alles auswählen

sudo /etc/init.d/firewall start
funktioniert, jetzt erhalte ich den gleichen Fehler.
Muss ich das script irgendwie registrieren?

Vielen Dank für Hinweise.
wckl

Benutzeravatar
MSfree
Beiträge: 11748
Registriert: 25.09.2007 19:59:30

Re: Ein Script in /etc/init.d starten

Beitrag von MSfree » 21.03.2016 11:12:34

Erstelle eine service-Datei unter /lib/systemd/system, mit z.B. folgendem Inhalt:

Code: Alles auswählen

[Unit]
Description=Firewall
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/firewall start
ExecStop=/etc/init.d/firewall stop

[Install]
WantedBy=multi-user.target
Nenne die Datei z.B. firewall.service
Führe dann systemctl enable firewall aus.

Danach kannst du die Firewall mit systemctl stop/start/restart firewall steuern.

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Ein Script in /etc/init.d starten

Beitrag von smutbert » 21.03.2016 11:16:49

systemd erstellt aus den init-Skripten doch automatisch die eigenen service-Dateien. Ich vermute also, dass es nach dem nächsten Neustart funktionieren wird oder auch nachdem du

Code: Alles auswählen

# systemctl daemon-reload
ausgeführt hast. (Das ist auch notwendig, wenn du eine eigene .service-Datei selbst schreibst.)

Danach solltest du es auch so starten können

Code: Alles auswählen

# systemctl start firewall

wckl
Beiträge: 828
Registriert: 10.08.2007 15:26:28
Lizenz eigener Beiträge: GNU General Public License
Wohnort: St. Georges de Didonne

Re: Ein Script in /etc/init.d starten

Beitrag von wckl » 21.03.2016 13:20:36

Danach kannst du die Firewall mit systemctl stop/start/restart firewall steuern
Es funktioniert für start und stop, nicht aber für restart

Gibt es dafür entsprechende Einträge in firewall.service ?

Benutzeravatar
MSfree
Beiträge: 11748
Registriert: 25.09.2007 19:59:30

Re: Ein Script in /etc/init.d starten

Beitrag von MSfree » 21.03.2016 14:08:58

wckl hat geschrieben:Es funktioniert für start und stop, nicht aber für restart
Schreibfehler auf der kommandozeile?

Meine Firewall funktioniert nämlich mit genau der .service-Datei, auch systemctl restart firewall.

wckl
Beiträge: 828
Registriert: 10.08.2007 15:26:28
Lizenz eigener Beiträge: GNU General Public License
Wohnort: St. Georges de Didonne

Re: Ein Script in /etc/init.d starten

Beitrag von wckl » 21.03.2016 15:04:04

Ich habe allerdings den Eindruck, daß dann start verwendet wird?
Denn in der Datei firewall.service ist für restart ja kein Befehl eingetragen?

Ich kenne mich mit dem systemd eben gar nicht aus.

Benutzeravatar
MSfree
Beiträge: 11748
Registriert: 25.09.2007 19:59:30

Re: Ein Script in /etc/init.d starten

Beitrag von MSfree » 21.03.2016 15:13:40

wckl hat geschrieben:Ich habe allerdings den Eindruck, daß dann start verwendet wird?
Denn in der Datei firewall.service ist für restart ja kein Befehl eingetragen?
Es gibt keinen speziellen Restart-Eintrag, zumindest habe ich sowas bisher nicht im Manual gefunden.

systemctl restart <dienst> macht nichts anderes als die Befehle, die unter ExecStop und ExecStart eingetragen sind, nacheinander auszuführen. Du kannst mit journalctl selbst nachsehen, ob zuerst die Firewall gestoppt wurde und anschließend gestartet. In meinem Log ist das jedenfalls so.

Antworten