Esta es mi primera pregunta con Ask Ubuntu, así que me gustaría agradecerles de antemano su paciencia.
Mi situación es la siguiente: tengo un *.desktop
archivo (que escribí) que se supone que debe ejecutar un script de shell. Mi intención inicial era colocar este archivo ~/.config/autostart
para que se ejecutara automáticamente al inicio; sin embargo, esto hace que Ubuntu muestre el escritorio por una fracción de segundo y luego vuelva a cerrar la sesión. Puedo hacer doble clic en el archivo en mi escritorio y se iniciará el script como se supone que debe hacerlo. Si saco el *.desktop
archivo del ~/Desktop
directorio y lo coloco literalmente en cualquier otro lugar, al hacer doble clic en Nautilus también cerraré mi sesión inmediatamente.
El *.desktop
archivo está configurado para ejecutar un script de shell que comienza bash
en gnome-terminal
. Mis razones para hacer esto no son necesariamente importantes, así que asuma que así es como necesito que sea. Si agrego sleep 10
al principio del primer script de shell, me desconecto 10 segundos después de iniciar el *.desktop
archivo, independientemente de cómo se inicie. Parece que el problema está en el hecho de que gnome-terminal
se inicia una nueva ventana desde el segundo script, pero no entiendo cómo ni por qué sería así. Entrada de escritorio:
[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application
Sistema de inicio:
#!/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
IniciarAutocap.sh:
#!/bin/bash
source /usr/local/bin/virtualenvwrapper.sh
workon Autocap
python /path/to/python/module.py
Se supone que esto (y lo hace con éxito, si se inicia desde el escritorio) inicia una gnome-terminal
ventana de pantalla completa en ejecución bash
e inicia el module.py
programa " " en esa sesión bash. También cierra la primera gnome-terminal
ventana que inició y desconectó el proceso hijo.
Perdón por la primera publicación increíblemente larga. Solo quiero entender qué está mal aquí y cómo podría solucionarlo. ¡Cualquier ayuda es muy apreciada!
Respuesta1
Si bien tengo mis teorías, tengo miedo de proclamar que sé exactamente (o incluso remotamente) cómo o por qué funciona esto. Me imagino que tiene algo que ver con la forma en que un *.desktop
lanzador ejecuta su objetivo. ¿Quizás estaba intentando cerrar la ventana de gnome-terminal después de que ya se había cerrado al final de la ejecución del script y terminé matando mi sesión? ¿Quizás al revés? No pretendo saberlo, pero invitaría a cualquiera que lo sepa apor favor responde esta pregunta con tu explicaciónpara que otros puedan aprender de mi error.
Quitar la línea kill -9 $PPID
resolvió el problema.
Si el script se ejecuta desde el *.desktop
lanzador, la gnome-terminal
ventana inicial se cerrará, dejando la segunda. Si el script se ejecuta desde la línea de comando (por ejemplo, $ bash InitSystem
), la ventana inicial gnome-terminal
no se cierra.