Wie kann ich einen kontinuierlichen Prozess beenden, der von rc.local gestartet wurde?

3

Ich arbeite an einem Raspberry Pi mit Raspbian (Debian-basiertem) Betriebssystem. Zum Testen habe ich einen solchen Befehl hinzugefügt in /etc/rc.local:

python /home/pi/test.py

Es funktioniert gut, dieses Skript zu starten. Aber das Problem ist, dass ich vergessen habe, dass es eine Endlosschleife im Skript gibt, so etwas wie:

while True:
    print 'Hello"
    time.sleep(5)

Diese Schleife blockiert den Systemstart, sodass ich nicht in das System eintreten kann, um das Skript zu bearbeiten. Strg + C funktioniert nicht, um es zu töten. Also frage ich mich, wie man einen kontinuierlichen Prozess beendet, von dem aus man rc.localanfängt?

Skyler
quelle

Antworten:

4

Sie können den Prozess nicht interaktiv von der Konsole aus beenden, aber Sie haben mehrere Möglichkeiten, wie Sie dessen Ausführung während des Startvorgangs vermeiden können.

a) Starten Sie in einem Einzelbenutzermodus

Fügen Sie san die Zeile cmdline.txtin der Startpartition (FAT) ein Leerzeichen an . Nach dem Booten können Sie entweder umbenennen /etc/rc.local, nicht ausführbar machen ( chmod a-x /etc/rc.local) oder bearbeiten.

b) Booten Sie mit einer Shell anstelle von init

init=/bin/shAn die Zeile in wird ein Leerzeichen angehängt cmdline.txt. Dadurch wird das Starten von Startskripten umgangen. Dann können Sie die gleichen Maßnahmen treffen /etc/rc.localwie oben.

c) Hängen Sie die Linux-Partition in ein anderes System ein

Legen Sie die SD-Karte in ein anderes System und hängen Sie dort die Partition /etc/rc.localein. Dann können Sie die gleichen Maßnahmen treffen /etc/rc.localwie oben.

Pabouk
quelle
0

Ich habe eine ähnliche Anwendung, die nach dem Neustart unendlich abgespielt wird. Bei Änderungen montiere ich das auf ein anderes System und nehme die Änderungen vor und stelle sie wieder auf mein Board. Dies ist der einfachste Weg.

NitinG
quelle