„Ein Startjob wird für die /etc/rc.local-Kompatibilität ausgeführt“: Wie kann ich das Problem beheben?

„Ein Startjob wird für die /etc/rc.local-Kompatibilität ausgeführt“: Wie kann ich das Problem beheben?

Ich habe heute gerade ein Upgrade auf Ubuntu Vivid (15.04) durchgeführt und nach dem Neustart hatte ich einen sehr langen Startvorgang. Normalerweise bootet mein Laptop in 5 Sekunden oder weniger, aber jetzt war er auch nach ein paar Minuten noch nicht fertig.

Durch Drücken von Escwurde der folgende Bildschirm angezeigt:

Bildbeschreibung hier eingeben

Die letzte Zeile lautet: „Ein Startjob wird für die Kompatibilität mit /etc/rc.local ausgeführt (7 Min. 24 Sek. / keine Begrenzung).“ Trotz des Teils „keine Begrenzung“ wurde nach genau 10 Minuten aufgegeben (oder abgeschlossen?) und der Startvorgang beendet.

Dies geschieht bei jedem Start.

Könnte es mit der Umstellung auf systemd zusammenhängen? Wie kann ich das beheben? (Im Moment überlege ich zweimal, bevor ich meinen Laptop herunterfahre). Soll ich einen Fehler melden? Und wenn ja, wo?

Meine /etc/rc.localDatei:

#!/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.
fstrim -v /
fstrim -v /home
exit 0

Die Datei ist ausführbar:

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 333 aug 14  2013 /etc/rc.local

Ich habe die 2 fstrimZeilen vor fast 2 Jahren hinzugefügt, als ich eine SSD installiert habe, gemäß den Anweisungen vonEinfaches Linux-Tipps-Projekt.

Anscheinend sind diese die Ursache meines Problems (ich habe sie entfernt und neu gestartet – das Problem war behoben), aber ich denke trotzdem, dass das System nicht 10 Minuten lang so hängen bleiben sollte. Und wie kann ich es fstrimjetzt beim Booten ausführen?

Antwort1

Wenn Sie Befehle mit langer Laufzeit in eingeben rc.local, verzögert sich Ihr Start. Sie sollten diese in den Hintergrund senden:

( fstrim -v /; fstrim -v /home ) &

Allerdings müssen Sie dies wahrscheinlich nicht selbst tun. Ubuntu 14.10 hinzugefügtein wöchentlicher Job fürfstrim.

Antwort2

Seltsam, dass dies unter Ubuntu 15.04 plötzlich ein Problem darstellt, während es unter Ubuntu 14.04 immer gut funktioniert hat...

Sie können vor dem Trimmen auch einen Sleep-Parameter hinzufügen, sodass die beiden Trim-Befehle nach einer festgelegten Anzahl von Sekunden ausgeführt werden. Dadurch sollte der Startvorgang abgeschlossen werden können, sodass die Trim-Befehle im Hintergrund ausgeführt werden.

So (40 Sekunden Verzögerung):

#!/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.
sleep 40
fstrim /
fstrim /home
exit 0

Der Parameter -v (verbose) für trim ist in diesem Fall übrigens nutzlos, da es im Hintergrund ausgeführt wird. Das habe ich auch in meinem Easylinuxtips-How-to geändert.

Notiz:Ich habe einen solchen Sleep-Parameter in rc.local nur in Ubuntu 14.04 und Linux Mint 17.x getestet (für einen anderen Zweck als Trim), daher bin ich nicht sicher, ob dies in Ubuntu 15.04 ähnlich funktionieren wird.

Antwort3

Ich hatte das gleiche Problem. Im Grunde passiert das, wenn etwas in rc.local nicht normal beendet wird, beispielsweise ein Daemon irgendeiner Art. Um herauszufinden, welcher Befehl in rc.local der Übeltäter ist, geben Sie einfach den Befehl killall -9/from/etc.local ein. Der Neustart erfolgt, sobald alle Befehle von rc.local beendet sind.

verwandte Informationen