Hallo, ich habe mal eine nicht ubuntu-spezifische Frage zum Thema "wie beende ich einen laufenden Prozess" und hoffe trotz nicht-ubuntu-Gerät auf Unterstützung der Experten.
Das Betriebssystem ist nicht Ubuntu, die Angabe beim Post habe ich nur gemacht weil ich eine Ubuntu-Version auwählen musste. Ich denke, dass dies kein Problem ist, da die Frage doch vermutlich nicht speziell eine Ubuntu-release sondern allgemein Linux Shell betrifft.
Ich habe einen BananaPi als Bilderrahmen mit Bananian (= Debian Derivat) aufgesetzt. Als Imageviewer wird fbi verwendet, da die Kiste nur mit der Konsole laufen soll. Außerdem ist ein Webserver am laufen.
Beim Systemstart wird die Diashow mit einem automatisch gestarteten Script mit diesem Inhalt gestartet:
#!/bin/bash # fbi -d /dev/fb0 - readahead -m "1920x1080-60" -v -a -t 20 -blend 1000 -u `find /home/tom/bilder -iname "*.*"`
Wenn ich auf der Tastatur ESC oder Q drücke beendet sich fbi.
Wenn ich mit SSH verbunden bin und eine der folgenden Zeilen eingebe, beendet sich fbi ebenfalls:
sudo kill $(pidof fbi) sudo killall fbi
So weit, so gut. Wenn ich über SSH (bei laufender Disahow) ein
sudo reboot
schicke, bekomme ich ein
Broadcast message from root@bananapi (pts/0) (Sat Jan 31 21:07:15 2015): The system is going down for reboot NOW!
und der Pi bootot neu. Wie gewünscht.
Nun möchte ich aber z.B. den BananaPi über ein Webinterface neu starten. Dazu drücke ich in einem PHP-Script auf einen Button, der ein Shell-Script mit sudo-Rechten Startet
if(isset($_REQUEST['reboot'])) { exec('sudo /var/sudowebscript.sh REBOOT', $output, $return_var); echo "BananaPi wird neu gestartet."; }
Hier das script:
#!/bin/bash # # sudo web script allowing user www-data to run commands with root privilegs case "$1" in .... REBOOT) killall fbi reboot ;; ..... *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
Wenn fbi nicht läuft, ist das kein Problem und der Pi startet neu.
Mit laufendem fbi: das Script wird ausgeführt, aber die Diashow läuft weiter und der Pi wird erstmal nicht heruntergefahren.
Wenn ich parallel auf SSH mit eingeloggt bin, sieht die Ausgabe dazu aus wie oben bei "reboot", nur dass der Pi weiterhin die Diashow anzgeigt und die SSH Verbindung nicht beendet. Ich kann zwar nichts mehr schicken aber die
Connection to 192.168.5.195 closed by remote host.
Nachricht kommt nicht.
Erst wenn ich an der Tastatur des Pi ESC oder Q drücke beendet er die Diashow und die SSH Verbindung und macht den reboot.
Nun die große Frage: wie bekomme ich das Ding dazu, die Diashow zu beenden, wenn das Kommando übers Webinterface kommt?
Grüße
Tom