Ich versuche, ein Programm automatisch innerhalb eines Bash-Skripts auszuführen, nachdem die LXDE-Sitzung beendet wurde. Mein Skript besteht aus:
#!/bin/sh
pkill lxsession;
sh /home/pi/RetroPie/EmulationStation/emulationstation
Ich habe auch Folgendes versucht:
#!/bin/sh
nohup & pkill lxsession &
writevt /dev/tty1 'emulationstation'
Mein Ziel ist es, mich von der LXDE-Sitzung abzumelden und EmulationStation mit einem Bash-Skript auf meinem Raspberry Pi auszuführen. Ich verwende es, pkill lxsession;
um den Abmeldebestätigungsdialog von lxsession zu umgehen.
So wie es aussieht, bringt mich dieses Skript von einem funktionierenden LXDE-Desktop zur Befehlszeile. Danke fürs Lesen.
Antwort1
Ich glaube nicht, dass das möglich ist. Sie führen dieses Skript von einem Terminalemulator aus aus, der selbst innerhalb der LXDE-Sitzung ausgeführt wird. Wenn Sie die LXDE-Sitzung beenden, beenden Sie auch das Terminal und damit Ihr Skript.
Eine mögliche Problemumgehung wäre, sich über ein anderes TTY anzumelden und Ihr Skript dort auszuführen. Was genau versuchen Sie zu tun? Würde ein Root-Cronjob funktionieren?
Antwort2
Das writevt
ist hier nicht verfügbar, aber ich nehme an, es emuliert nur die TTY-Eingabe.
Sie könnten versuchen, einen Befehl im tty zu startenVordie X-Sitzung beenden und warten lassen, bis die X-Sitzung beendet wird. Wie wäre es mit
#!/bin/sh
writevt /dev/tty1 'sleep 20s; emulationstation'` &
pkill lxsession
Antwort3
Versuchen Sie, „screen“ zu verwenden, wenn Sie das Skript vom Terminal aus ausführen oder einen Launcher erstellen:
screen ./emu-script.sh
screen hält Ihre Terminalsitzung aufrecht, selbst wenn LXDE beendet wird oder was auch immer Sie heruntergefahren haben. Auf diese Weise kann Ihr Skript ordnungsgemäß beendet werden