Ich habe einen einzelnen Befehl in meinem /etc/rc.local
Skript, der den Update-Daemon für Tiny Tiny RSS während des Starts starten soll , aber das Skript wird während des Starts nicht ausgeführt. Warum?
Die gesamte Datei /etc/rc.local:
#!/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.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
ist ausführbar:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
existiert und ist ausführbar:
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
soll beim Start für dieses Runlevel ausgeführt werden:
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
Wenn ich manuell /etc/rc.local von der Kommandozeile aus aufrufe, wird der update_daemon geladen ...
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
... was ich bei jedem Neustart meines Servers tun muss, bis dieses Problem behoben ist.
Ähnliche Fragen gibt es bereits , aber bisher konnte ich die Informationen nicht auf mein spezifisches Problem anwenden.
Warum wird der Befehl in rc.local beim Start nicht ausgeführt?
requiretty
Einstellung liegen. Wenn Sie angemeldet sind, führen Sie das Skript in TTY aus, aber während des Systemstarts nicht in TTY. Dieser Link kann Ihnen helfen, shell-tips.com/2014/09/08/… Danke.Antworten:
rc.local
Das Skript wird beendet, wenn beim Ausführen eines Befehls ein Fehler auftritt (erwähnen Sie das-e
Flag in#!/bin/sh -e
).Es ist möglich, dass einige Voraussetzungen nicht erfüllt sind, wenn Sie versuchen, Ihre Befehle auszuführen, während die
rc.local
Ausführung stattfindet, sodass Ihre Befehlsausführung fehlschlägt.Ich bin auf dasselbe gestoßen, als ich den CPU-Gouverneur manuell eingestellt habe und dies nicht getan habe
rc.local
. Hier ist meine benutzerdefinierte Problemumgehung, mit derupdate-rc.d
Ihre Befehle beim Start ausgeführt werden:myscript.sh
in einem Verzeichnis/etc/init.d
mit einer Überschrift:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Sie können auch
/etc/network/if-up.d
Skripte überprüfen und feststellen, ob Sie Ihre Befehle beim Start des Netzwerks auslösen können.quelle
update-rc.d
Ich hatte ein ähnliches Problem in rc.local nicht beim Start ausgeführt
sshades gab mir folgende Antwort:
Obwohl ich seine Lösung nicht getestet habe, denke ich, dass es logisch klingt und funktionieren wird. Jedoch :
Ich habe auch eine Lösung gefunden, mit der ein Skript zu ./.config/autostart-scripts/ hinzugefügt werden kann
quelle
rc.local
deaktiviert ist, was ist die Alternative?Probieren
sudo sysv-rc-conf
Sie aus, obrc.local
aktiviert istquelle
sudo apt install sysv-rc-conf
rc.local
ist nicht einmal in meiner Liste der Dienstleistungen!Stellen Sie sicher, dass das Skript rc.local ausführbar ist:
Aktivieren Sie es dann:
Starten Sie das System neu oder starten Sie das Skript manuell, indem Sie Folgendes ausführen:
Der Dienststatus kann angezeigt werden, indem Sie Folgendes ausführen:
quelle
rc-local
Dienst automatisch .Wir hatten dieses Problem auf einigen gehosteten Servern, die FW-Regeln laden.
Auf diesen Boxen werden sie SEHR schnell neu gestartet und wir haben gerade festgestellt, dass in rc.local eine "sleep 1" eingefügt wurde, bevor die load-Anweisungen das Problem zu beheben scheinen. Ich denke, es gab ein wenig Zeit, bis sich die Schnittstellen eingerichtet hatten, bevor die FW-Regeln geladen wurden.
quelle
sleep 1
mein problem gelöst. Interessant Ich habe viele Server, aber nur einer hat dieses Problem.Ich habe einmal
rc.local
mit Notepad in Windows bearbeitet und es begann dieses Problem zu haben.In diesem Fall unterstützt die Verwendung eines Texteditors die EOL-Konvertierung, z. B. Notepad ++, um den EOL-Stil in "Unix" zu konvertieren.
Sie können dies auch
:set ff=unix
in Vim tun .quelle
Ich habe in Ubuntu lxc Containern festgestellt, dass wenn rc.local einen vollkommen korrekten shebang hat zB
es schlägt fehl, aber wenn Sie den shebang entfernen, funktioniert es.
Ich bin nicht auf den Grund gekommen, warum oder welche Shell es verwendet. Ich denke, es bombardiert auch zuerst, wenn es nicht Null ist. (In anderen Ubuntu-Installationen ist einwandfreies shebang kein Problem)
quelle
Sie müssen sicherstellen, dass dies
/etc/rc.local
während des Serverstarts mit dem folgenden Befehl ausgeführt wird:sudo systemctl enable rc-local.service
quelle