rc.local wird nicht "abgearbeitet"

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 11:27:47

Ich habe meinen HomeServer auf die aktuelle Version endlich mal umgestellt und es funktioniert soweit alles wieder. Leider stehe ich mit der Datei rc.local auf den Kriegsfuß. Ich habe die Datei nur als Sicherungsdatei vom alten Debian rüberkopiert, aber irgendwie wird die Datei beim Starten des Servers nicht mit ausgeführt bzw. die Programme/Scripts nicht gestartet :( Manueller Start der Programme geht bzw. funktioniert (es wurde nichts in der rc.local geändert). Vielleicht kann mir Jemand weiterhelfen.

Code: Alles auswählen

ls -dl /etc/init.d/rc.local
-rwxr-xr-x 1 root root 820 Apr  6  2015 /etc/init.d/rc.local
Auch habe ich die /usr/lib/systemd/system/rc-local.service schon geändert:

Code: Alles auswählen

[Unit]
Description=/etc/rc.local compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
und

Code: Alles auswählen

systemctl enable rc-local.service
ausgeführt.

Leider keinen Erfolg.

Danke für einen Tip.

Wie gesagt, wenn ich die Startbefehle selber ausführer funktioniert es.

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 11:48:36

Ich bin ziemlich sicher, dass die rc.local korrekt gestartet wurde. Ich vermute viel mehr, dass Deine Befehle von systemd gekillt werden... wahrscheinlich auf Grund von Fehlern, die Du (vermutlich unwissend) mit eingeplant hast. Kontrolliere einfach, ob die rc.local wirklich nicht gestartet wurde:

Code: Alles auswählen

systemctl status rc-local.service
      ● rc-local.service - /etc/rc.local Compatibility
      Loaded: loaded (/lib/systemd/system/rc-local.service; static)
      Active: active (exited) since So 2016-12-04 10:56:28 CET; 50min ago
      Process: 495 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

      Dez 04 10:56:28 thomaspc systemd[1]: Starting /etc/rc.local Compatibility...
      Dez 04 10:56:28 thomaspc systemd[1]: Started /etc/rc.local Compatibility.

 journalctl -b | grep rc.local
      Dez 04 10:56:28 thomaspc systemd[1]: Starting /etc/rc.local Compatibility...
      Dez 04 10:56:28 thomaspc systemd[1]: Started /etc/rc.local Compatibility.
Wenn sie gestartet wurde, poste mal den Inhalt der rc.local

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 12:26:12

Danke für deine Antwort.

Code: Alles auswählen

systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; enabled)
   Active: inactive (dead)
           start condition failed at So 2016-12-04 11:06:32 CET; 1h 17min ago

journalctl -b | grep rc.local
Dez 04 11:06:32 omv systemd[1]: Started /etc/rc.local Compatibility.

Kann es sein, das es doch nicht gestartet wird ?

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 12:33:16

Code: Alles auswählen

start condition failed at So 2016-12-04 11:06:32 CET; 1h 17min ago
Dez 04 11:06:32 omv systemd[1]: Started /etc/rc.local Compatibility.
Die wurde gestartet, aber anscheinend wegen Fehler in der rc.local abgebrochen oder gestoppt. Poste mal den Inhalt der rc.local.... dann sieht man das. Ganz nebenbei bemerkt würde ich in /usr/lib/systemd/system definitiv keine Systemd-Units verändern. Warum erzeugst Du keine eigene Unit in /etc/systemd/system?

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 12:40:01

Code: Alles auswählen

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/local/bin/watch.watchdog &

vbetool dpms off

exit 0
Also das mit dem Eintrag

Code: Alles auswählen

[Install]
WantedBy=multi-user.target
habe ich peer Google gefunden.

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 13:54:51

Slowman hat geschrieben:Also das mit dem Eintrag

Code: Alles auswählen

[Install]
WantedBy=multi-user.target
habe ich peer Google gefunden.
Das meinte ich nicht. Der Unit-Type von rc-local.service ist normalerweise "forking" und anscheinend hast Du den auf "oneshot" geändert. Aber 'oneshot' unterstützt kein forking, insofern vermute ich , dass der Daemon-Start von watchdog zwar erfolgt, aber nach 90 Sekunden einfach wieder entfernt wird. Ich würde dafür eine eigene Unit mit "Type=simple" erstellen, weil anscheinend der Prozess selber der fork ist bzw. er selber als Daemon läuft.

Am Aufruf vbetool kann ich nix besonderes finden... ich denke, der setzt doch nur nen Switch oder so. Kommentiere mal Watchdog aus und füge folgende Zeile als erste Code-Zeile (vor watchdog) ein, dann kannst Du im Journal nachsehen, ob das Script gestartet wurde:

Code: Alles auswählen

echo "active/running   Action=$1" | systemd-cat -t "slowman:`basename $0`" -p "info"
Der Aufruf um nachzusehen wäre dann:

Code: Alles auswählen

journalctl -b | grep slowman

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 15:08:11

Ja, wird ausgeführt. :(

Code: Alles auswählen

Dez 04 15:02:39 omv slowman:rc.local[945]: active/running   Action=start

Aber wenn ich watch.watchdog in der Console aufrufe funktioniert es :?:
Jetzt weiss ich noch weniger :oops:

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 15:43:59

Entspann Dich... alles wird gut :D

Das Verhalten ist völlig normal. Du kannst sicher sein, dass Watchdog ordentlich gestartet wird... nur... und das ist die Falle... der Unit-Typ-Oneshot unterstütz keine "Forks"... das bedeutet, nach 90 Sec. werden der Prozess und seine Childs einfach wieder beendet. Bevor wir hier weitermachen, kontrolliere bitte zuerst einmal, ob nicht sowieso ein watchdog.service vorhanden ist... oder ggf. auch ein init.d-Script. Wenn das wäre, müssten eigentlich die für den Programmstart genutzt werden und nicht ein Aufruf über rc.local

Code: Alles auswählen

find /etc -path /media -prune -o -iname "*watchdog*" -print
find /usr -path /media -prune -o -iname "*watchdog*" -print

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 16:03:30

  • find /etc -path /media -prune -o -iname "*watchdog*" -print
    /etc/rc6.d/K01watchdog
    /etc/default/watchdog
    /etc/rc5.d/S05watchdog
    /etc/rc1.d/K01watchdog
    /etc/rc2.d/S05watchdog
    /etc/rc3.d/S05watchdog
    /etc/rc0.d/K01watchdog
    /etc/rc4.d/S05watchdog
    /etc/watchdog.conf
    /etc/init.d/watchdog
  • find /usr -path /media -prune -o -iname "*watchdog*" -print
    /usr/local/bin/watch.watchdog
    /usr/share/openmediavault/mkconf/watchdog
    /usr/share/man/man5/watchdog.conf.5.gz
    /usr/share/man/man8/watchdog.8.gz
    /usr/share/doc/watchdog
    /usr/share/doc/watchdog/README.watchdog.ipmi.gz
    /usr/share/doc/watchdog/watchdog.lsm
    /usr/include/linux/watchdog.h
    /usr/sbin/watchdog
Den Namen ändern ?

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 16:41:28

An der Stelle bin ich jetzt ein wenig hilflos.... denn wie Du siehst, wird der Watchdog bereits in den Runlevels
/etc/rc2.d/S05watchdog
/etc/rc3.d/S05watchdog
/etc/rc4.d/S05watchdog
/etc/rc5.d/S05watchdog

gestartet (oder soll gestartet werden) und in den folgenden wird er beim Shutdown wieder geschlossen:
/etc/rc0.d/K01watchdog
/etc/rc1.d/K01watchdog
/etc/rc6.d/K01watchdog

Also eigentlich würde ich jetzt sagen, dass Programm ist bereits gestartet oder sollte über die Runlevels gestartet sein. Ich weiss auch momentan gar nicht, ob "dieser" watchdog das gleiche Programm ist, wie der watchdog, den Du starten möchtest. Bevor das jetzt weitergeht, muss jetzt erst genau unterschieden werden, was mit diesen beiden Varianten ist, ob es überhaupt 2 Varianten sind, oder ob es nur 1 ist, deren Start über die Runlevels wegen eines Fehler failed.

Der richtige manuelle Start für die init.d-Version müsste so (oder so ähnlich) aussehen:
service watchdog start
oder
/etc/init.d/watchdog start

Und man müsste auch den Status erfragen können
service watchdog status
oder
/etc/init.d/watchdog status

Schau mal nach, ob es einen laufenden Prozess "watchdog" gibt:

Code: Alles auswählen

 ps -aux | grep watchdog -i
Vermutlich brauchen wir jetzt hier Unterstützung von jemand, der das Programm kennt....ich bin da jetzt im Moment überfordert.... hellohello... is anybody out there...?

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 17:00:51

Nicht so an den Dateinamen festmachen ! Habe den Namen jetzt mal in blau.script umgeändert, aber kein Erfolg beim Starten, nur bei manuelle Ausführung.

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 18:12:37

Nee, es geht nicht um Dateinamen.... es geht darum, dass anscheinend über die runlevels 'ein' watchdog gestartet wird. Kannst Du das mal überprüfen? Wie das mit der Status-Abfrage geht und wie man feststellt, ob schon so ein Prozess aktiv ist, hatte ich zuvor beschrieben.

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 18:35:09

Meinst du das hier:

Code: Alles auswählen

 ps -aux | grep watchdog -i
root        11  0.0  0.0      0     0 ?        S    18:01   0:00 [watchdog/0]
root        14  0.0  0.0      0     0 ?        S    18:01   0:00 [watchdog/1]
root        33  0.0  0.0      0     0 ?        S<   18:01   0:00 [watchdogd]
root     21829  0.0  0.0  12752  2092 pts/0    S+   18:34   0:00 grep watchdog -i

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 18:55:38

Ja, das meinte ich.... und wie du siehst, gibt es bereits 3 aktive Prozesse. Und da stellt sich jetzt die Frage, was das für welche sind ... .. und was das für einer ist, den Du in der rc.local starten möchtest.

Mach doch mal nen test.... und starte das Programm aus der rc.local wie zuvor von Hand und sende dann noch mal die ps-aux -Ausgabe... mal sehen, was sich da verändert, ob es bei den 3 Jobs bleibt oder ob was hinzukommt.

dufty2
Beiträge: 1711
Registriert: 22.12.2013 16:41:16

Re: rc.local wird nicht "abgearbeitet"

Beitrag von dufty2 » 04.12.2016 19:07:42

Eine Anmerkung am Rande:
Prozesse in eckigen Klammern sind keine Prozesse (im strengen Sinne), sondern sog. kernel-threads.
=> Mami ist nicht Prozess 1 (init bzw. systemd), sondern Papi: Prozess 2 (kthreadd).

TomL

Re: rc.local wird nicht "abgearbeitet"

Beitrag von TomL » 04.12.2016 19:17:49

Shit, das wusste ich auch nicht.... aber man erkennt den Unterschied sofort, wenn man die volle Liste sieht. Aber ich habe trotzdem keine Ahnung, was er da starten möchte....

@slowmann
Bitte kläre mich/uns mal auf, was dieses Programm in der rc.local überhaupt ist. Ich kenne es leider nicht. Anscheinend ist da mehr hinter, als nur mal eben ein Programm zu starten, wobei ich mal eben schnell helfen wollte. Was tut das Programm? Was kann es? Wie sieht man, dass es was tut? Was passiert, wenn Du es von Hand startest? Welches Debian-Paket ist das?

Slowman
Beiträge: 39
Registriert: 04.04.2005 19:51:40
Wohnort: Berlin

Re: rc.local wird nicht "abgearbeitet"

Beitrag von Slowman » 04.12.2016 19:57:55

Nix geändert :?

Code: Alles auswählen

ps -aux | grep watchdog -i
root        11  0.0  0.0      0     0 ?        S    18:01   0:00 [watchdog/0]
root        14  0.0  0.0      0     0 ?        S    18:01   0:00 [watchdog/1]
root        33  0.0  0.0      0     0 ?        S<   18:01   0:00 [watchdogd]
root      4213  0.0  0.0  12752  2260 pts/0    S+   19:57   0:00 grep watchdog -i

Antworten