Debian 9: rc.local service startet nicht mehr

Xep22

Member
ich habe wie hier beschrieben die rc.local unter debian 9 aktiviert: https://www.itechlounge.net/2017/10/linux-how-to-add-rc-local-in-debian-9/

Das lief auch immer, bis ich jetzt nach einem Neustart festgestellt habe, dass die Autostart Befehle nicht ausgeführt werden.

Code:
systemctl status rc-local.service
sagt mir:
Code:
● rc-local.service - /etc/rc.local
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: failed (Result: exit-code) since Sat 2020-03-07 10:55:38 CET; 23s ago
  Process: 1420 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE)

Mär 07 10:55:38 XXX su[1421]: + ??? root:root
Mär 07 10:55:38 XXX su[1421]: pam_unix(su:session): session opened for user root by (uid=0)
Mär 07 10:55:38 XXX su[1424]: Successful su for ts by root
Mär 07 10:55:38 XXX su[1424]: + ??? root:ts
Mär 07 10:55:38 XXX su[1424]: pam_unix(su:session): session opened for user ts by (uid=0)
Mär 07 10:55:38 XXX rc.local[1420]: The server is already running, try restart or stop
Mär 07 10:55:38 XXX systemd[1]: rc-local.service: Control process exited, code=exited status=1
Mär 07 10:55:38 XXX systemd[1]: Failed to start /etc/rc.local.
Mär 07 10:55:38 XXX systemd[1]: rc-local.service: Unit entered failed state.
Mär 07 10:55:38 XXX systemd[1]: rc-local.service: Failed with result 'exit-code'.
da sehe ich jetzt keine Ursache, wie finde ich den raus woran das liegt?

auf meinem 2. Server funktioniert es immer noch:
Code:
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Sat 2020-03-07 10:45:13 CET; 12min ago
  Process: 587 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/rc-local.service

Mär 07 10:45:11 vps systemd[1]: Starting /etc/rc.local Compatibility...
Mär 07 10:45:13 vps su[736]: Successful su for bot by root
Mär 07 10:45:13 vps su[736]: + ??? root:bot
Mär 07 10:45:13 vps su[736]: pam_unix(su:session): session opened for user bot by (uid=0)
Mär 07 10:45:13 vps systemd[1]: Started /etc/rc.local Compatibility.
 

danton

Debian User
Es kommt drauf an, was in deiner rc.local drin steht. Es ist ein Shell-Script und du musst in diesem Script Fehler der Befehle, die du ausführst abfangen. Mir fällt auch kein Grnd ein, die rc.local weiter zu verwenden, um etwas beim Systemstart zu starten. Da gibt es bessere Wege.
 

danton

Debian User
Das kommt drauf an. Wenn du einen Server-Dienst starten willst, dann (da du systemd verwendest) über eine eigene systemd Unit-Datei - die dann auch für das Neustarten eines Dienstes verwendet wird. Für die reine Ausführung eines Befehls beim Neustart bietet sich auch ein Cron-Job mit der Zeitangabe
Code:
@reboot
an.
 

Xep22

Member
nein, nur scripte die quasi in de Shell ausgeführt werden müssen.

Code:
su user1 -c '/home/user1/startscript.sh start'
 

danton

Debian User
Der o.g. Fall (habe deinen Edit erst später gesehen) lässt sich z.B. prima über den Cronjob von user1 abarbeiten, dann halt so:
Code:
@reboot  /bin/bash /home/user1/startscript.sh start
 

Xep22

Member
also crontab -e beim User und dann :

Code:
# m h  dom mon dow   command
@reboot /bin/bash /home/user1/startscript.sh start
?
 

Xep22

Member
hm funktioniert nicht. beides hier nicht.

Code:
@reboot /bin/bash screen -dmS musicbot /home/user1/MusikBot/sinusbot
@reboot /bin/bash mkdir /home/user1/test
 

danton

Debian User
Dir ist schon klar, was der Eintrag von oben macht? Also dieser hier:
Code:
@reboot  /bin/bash /home/user1/startscript.sh start
Beim Reboot rufe den Bash-Interpreter auf und übergebe ihm alles dahinterstehende als Parameter. Der erste Parameter ist dabei das Shell-Script, welches Bash ausführen soll, alle weiteren werden an das Script weitergereicht. Wenn ein Script eine passende Shebang-Zeile hat, kannst du auf den Interpreter-Befehl verzichten (ich schreibe sie zu Dokuzwecken immer in meine Crontab, da .z.B. PHP-Scripte nicht immer eine Shebang-Zeile haben).
Wobei ich das in diesem Beispiel genannte Script vermutlich ein wenig anpassen würde, so dass es als SysV-Init-Script genutzt werden kann (da kann Systemd ja auch noch mit umgehen) oder es direkt in eine Systemd Unit-Datei übersetzen.
 
Top