Dies ist meine erste Frage bei Ask Ubuntu, daher möchte ich Ihnen im Voraus für Ihre Geduld danken.
Meine Situation ist folgende: Ich habe eine *.desktop
Datei (die ich geschrieben habe), die ein Shell-Skript ausführen soll. Ursprünglich wollte ich diese Datei ~/.config/autostart
so platzieren, dass sie beim Start automatisch ausgeführt wird. Dies führt jedoch dazu, dass Ubuntu den Desktop für den Bruchteil einer Sekunde aufblinkt und mich dann wieder abmeldet. Ich kann auf meinem Desktop auf die Datei doppelklicken und das Skript wird wie vorgesehen gestartet. Wenn ich die Datei *.desktop
aus dem ~/Desktop
Verzeichnis nehme und sie buchstäblich irgendwo anders ablege, führt ein Doppelklick in Nautilus ebenfalls dazu, dass ich sofort abgemeldet werde.
Die *.desktop
Datei ist so eingestellt, dass sie ein Shell-Skript ausführt, das bash
in startet gnome-terminal
. Meine Gründe dafür sind nicht unbedingt wichtig, also gehen Sie bitte davon aus, dass es so sein muss. Wenn ich sleep 10
am Anfang des ersten Shell-Skripts etwas hinzufüge, werde ich 10 Sekunden nach dem Starten der Datei abgemeldet *.desktop
, unabhängig davon, wie sie gestartet wird. Das Problem scheint darin zu liegen, dass gnome-terminal
vom zweiten Skript aus ein neues Fenster gestartet wird, aber ich verstehe nicht, wie oder warum das so ist. Desktop-Eintrag:
[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application
InitSystem:
#!/bin/bash
nohup gnome-terminal --title=Autocapture --maximize -e "bash -c 'bash /Autocapture/Startup/StartAutocap.sh';bash"
wmctrl -a "Autocapture" # Give focus to new terminal window
kill -9 $PPID # Close this terminal
StartAutocap.sh:
#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py
Dies soll (und tut dies erfolgreich, wenn es vom Desktop aus gestartet wird) ein Vollbildfenster öffnen gnome-terminal
und bash
das module.py
Programm " " in dieser Bash-Sitzung starten. Es schließt auch das erste gnome-terminal
Fenster, das gestartet wurde, und trennt den untergeordneten Prozess.
Entschuldigen Sie den unglaublich langen ersten Beitrag. Ich möchte nur verstehen, was hier schief läuft und wie ich es beheben kann. Jede Hilfe ist sehr willkommen!
Antwort1
Obwohl ich meine Theorien habe, traue ich mich nicht zu behaupten, dass ich genau (oder auch nur annähernd) weiß, wie oder warum das funktioniert. Ich könnte mir vorstellen, dass es etwas mit der Art und Weise zu tun hat, wie ein *.desktop
Launcher sein Ziel ausführt. Vielleicht habe ich versucht, das Gnome-Terminal-Fenster zu beenden, nachdem es am Ende der Ausführung des Skripts bereits geschlossen war, und habe dadurch meine Sitzung beendet? Vielleicht umgekehrt? Ich behaupte nicht, es zu wissen, aber ich würde jeden, der es weiß, einladen,Bitte beantworten Sie diese Frage mit Ihrer Erklärungdamit andere aus meinen Fehlern lernen können.
Das Entfernen der Leitung kill -9 $PPID
löste das Problem
Wenn das Skript vom Launcher aus ausgeführt wird *.desktop
, wird das erste gnome-terminal
Fenster geschlossen und das zweite bleibt übrig. Wenn das Skript von der Befehlszeile aus ausgeführt wird (z. B. $ bash InitSystem
), wird das erste gnome-terminal
Fenster nicht geschlossen.