[gelöst] Debian 8 Jessie Systemd Shell Script startet nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
colognebeach
Beiträge: 5
Registriert: 02.03.2015 09:52:13

[gelöst] Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von colognebeach » 02.03.2015 10:06:51

Hallo,

ich habe ein Problem Debian 8 Jessie, wollte es mal ausprobieren ob alles funktioniert und siehe da, das erste Problem ist da.

Ich möchte ein Shell Script beim booten starten und beim shutdown beenden. Leider funktioniert es bei mir nicht.

meinshellscript.service
-------
[Unit]
Description=Shellscript

[Service]
ExecStart=/root/shellscript start
ExecStop=/root/shellscript stop

[Install]
WantedBy=multi-user.target
-----------
systemctl enable meinshellscript.service

habe auch schon probiert ExecStart=/bin/bash /root/shellscript start
... andere Verzeichnisse als /root oder /home
Type=forking und Type=simple probiert...
chmod 777 probiert...
...User=root...

Habt ihr eine Idee wieso mein billiges Shellscript mit Systemd nicht mehr startet ? Mit Wheezy war das identisch und einfach und es lief perfekt.
Systemd ist sowas von scheisse!

Vielen Dank
Zuletzt geändert von colognebeach am 02.03.2015 17:13:24, insgesamt 2-mal geändert.

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von catdog2 » 02.03.2015 11:42:32

Was sagt

Code: Alles auswählen

systemctl status meinshellscript.service
?

Hat es eine ordentliche shebang? Evtl mal /bin/sh -c oder /bin/bash -c davorsetzen.
Unix is user-friendly; it's just picky about who its friends are.

colognebeach
Beiträge: 5
Registriert: 02.03.2015 09:52:13

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von colognebeach » 02.03.2015 12:19:58

so sieht meine Ausgabe aus bei (ohne /bin/bash -c ):
systemctl status meinshellscript.service


root@www:/home/user# systemctl status meinshellscript.service
● meinshellscript.service - meinshellscript
Loaded: loaded (/lib/systemd/system/meinshellscript.service; enabled)
Active: inactive (dead) since Mo 2015-03-02 12:08:31 CET; 1min 3s ago
Process: 624 ExecStop=/etc/meinshellscript stop (code=exited, status=0/SUCCESS)
Process: 358 ExecStart=/etc/meinshellscript start (code=exited, status=0/SUCCESS)
Main PID: 358 (code=exited, status=0/SUCCESS)

Mär 02 12:08:30 www sec[358]: Starte Script
Mär 02 12:08:31 www sec[624]: Stoppe Script


Mit /bin/bash -c :

● meinshellscript.service - meinshellscript
Loaded: loaded (/lib/systemd/system/meinshellscript.service; enabled)
Active: failed (Result: exit-code) since Mo 2015-03-02 11:45:17 CET; 39s ago
Process: 392 ExecStop=/etc/meinshellscript stop (code=exited, status=0/SUCCESS)
Process: 360 ExecStart=/bin/bash -c /etc/meinshellscript start (code=exited, status=1/FAILURE)
Main PID: 360 (code=exited, status=1/FAILURE)
.
.
.
.

im groben sieht mein Shellscript so in etwa aus, natürlich mit mehr Inhalt:

#!/bin/bash

case "$1" in
start)
echo "Starte Meinshellscript"

Führt irgendein Befehl... blabla

;;

stop)
echo "Stoppe Meinshellscript"
Stoppt irgendein Befehl... blabla
;;

status)
echo "Bla bla"
;;

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac


Unter Wheezy klappte das super... und unter Jessie funktioniert das Script auch aus der Konsole ala :
# meinshellscript start

... Vielen dank

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von rendegast » 02.03.2015 12:25:31

Packe es doch mal (ohne unit/service-Skript) nach init.d/ (LSB-Header vorausgesetzt),
systemd sollte dann die Kompatibilitätsbehandlung machen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

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

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von JTH » 02.03.2015 12:53:36

colognebeach hat geschrieben: root@www:/home/user# systemctl status meinshellscript.service
● meinshellscript.service - meinshellscript
Loaded: loaded (/lib/systemd/system/meinshellscript.service; enabled)
Active: inactive (dead) since Mo 2015-03-02 12:08:31 CET; 1min 3s ago
Process: 624 ExecStop=/etc/meinshellscript stop (code=exited, status=0/SUCCESS)
Process: 358 ExecStart=/etc/meinshellscript start (code=exited, status=0/SUCCESS)
Main PID: 358 (code=exited, status=0/SUCCESS)

Mär 02 12:08:30 www sec[358]: Starte Script
Mär 02 12:08:31 www sec[624]: Stoppe Script
Dieser Ausgabe nach wurde das Skript aus Sicht von systemd richtig ausgeführt. Erwartest du in deinem Skript eventuell irgendwelche gesetzten Umgebungsvariablen, die bei der Ausführung durch systemd nicht gesetzt sind?

Da sich das Skript nach der Ausführung mit start direkt wieder beendet, wird es sofort auch mit stop aufgerufen. Du willst aber ja, dass die ExecStop-Zeile erst beim Herunterfahren ausgeführt wird. Dazu kannst du die Zeile

Code: Alles auswählen

RemainAfterExit=yes
in den [Service]-Abschnitt einfügen. systemd behandelt das Skript dann so, als ob es nach der Ausführung der ExecStart-Zeile weiterläuft und führt die ExecStop-Zeile kurz vor dem Herunterfahren aus.
Manchmal bekannt als Just (another) Terminal Hacker.

colognebeach
Beiträge: 5
Registriert: 02.03.2015 09:52:13

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von colognebeach » 02.03.2015 13:43:50

@rendegast

Viel dank für deinen Tipp, leider ist es in meinem Fall nicht hilfreich da Systemd wohl kaum das händeln kann.
Hierbei handelt es sich um mein Firewall Script auf iptables basis.

Beim stoppen soll nämlich folgendes passieren, alle Firewall Regeln sollen geflusht werden:

....
stop)
echo "Stoppe IP-Paketfilter"
# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Default-Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;
....

Ich weiss das das beim herunterfahren eh nicht sinnvoll ist, aber mit nur einem Befehl firewall stop oder firewall start kann man schöner arbeiten wenn man mal das Script um paar Regeln erweitern oder etc...


@JTH
Leider wird das Script noch nicht mal beim booten gestartet... ich könnte damit leben wenn es beim herunterfahren nicht beendet wird... jedoch würde ich schon gerne diese Befehle beibehalten.... firewall stop oder firewall start aus nur einem Shell Script ... ich weiss das ich daraus mehr Scripte bauen könnte aber sinnvoll ist das meiner Meinung nicht wenn es unter Wheezy... Squeeze usw... wunderbar klappte.

Vielen Dank euch...

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

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von JTH » 02.03.2015 14:00:35

Es wird ausgeführt. Eventuell aber zu früh? Ich kenn mich mit iptables leider nicht aus, musst du eventuell warten, bis die Netzwerkverbindungen bereit sind? Dann müsstest du ein

Code: Alles auswählen

After=network.target
im [Unit]-Abschnitt im Service-File ergänzen.

Wie/an welcher Stelle hast du das Skript denn vor Jessie beim Hochfahren aufgerufen?
Manchmal bekannt als Just (another) Terminal Hacker.

colognebeach
Beiträge: 5
Registriert: 02.03.2015 09:52:13

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von colognebeach » 02.03.2015 14:31:37

@JTH

Danke für den Tipp

Code: Alles auswählen

After=network.target
das macht sowieso Sinn und habe es ergänzt... aber auch leider das hat nicht funktioniert... Script startet nicht beim booten

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

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von JTH » 02.03.2015 15:01:42

Hast du das /bin/bash -c in den Exec-Zeilen wieder entfernt? Laut deiner Ausgabe von systemctl status oben wurde das Skript dann korrekt ausgeführt. Es hapert eher am Ausführungszeitpunkt oder so.
Hast du auch das RemainAfterExit wie erwähnt ergänzt? Ohne wird das Skript halt direkt nacheinander mit start und stop als Parameter aufgerufen – dann siehst du wahrscheinlich auch nicht den gewollten Effekt.
Manchmal bekannt als Just (another) Terminal Hacker.

colognebeach
Beiträge: 5
Registriert: 02.03.2015 09:52:13

Re: Debian 8 Jessie Systemd Shell Script startet nicht

Beitrag von colognebeach » 02.03.2015 15:46:40

@JTH vielen Dank, das war es :hail: ... ich wäre nicht drauf gekommen das die start und stop Parameter dadurch nacheinander ablaufen sich so gesehen dann aufheben...

so funktioniert es jetzt super bei mir, zusammen gefasst in gemeinsamer Arbeit :D:
---------
[Unit]
Description=MeinShellScript
After=network.target

[Service]
RemainAfterExit=yes
ExecStart=/root/meinshellscript start
ExecStop=/root/meinshellscript stop
User=root

[Install]
WantedBy=multi-user.target
----------

Antworten