Esta é minha primeira pergunta com o Ask Ubuntu, então gostaria de agradecer antecipadamente pela sua paciência.
Minha situação é a seguinte: tenho um *.desktop
arquivo (que escrevi) que deveria executar um script de shell. Minha intenção inicial era colocar esse arquivo ~/.config/autostart
para que ele fosse executado automaticamente na inicialização; no entanto, isso faz com que o Ubuntu atualize a área de trabalho por uma fração de segundo e depois me desconecte novamente. Posso clicar duas vezes no arquivo na minha área de trabalho e ele iniciará o script como deveria. Se eu retirar o *.desktop
arquivo do ~/Desktop
diretório e colocá-lo literalmente em qualquer outro lugar, clicar duas vezes nele no Nautilus também fará com que eu seja desconectado imediatamente.
O *.desktop
arquivo está configurado para executar um script de shell que começa bash
em gnome-terminal
. Minhas razões para fazer isso não são necessariamente importantes, então, por favor, assuma que é assim que preciso que seja. Se eu adicionar sleep 10
ao início do primeiro script de shell, serei desconectado 10 segundos após iniciar o *.desktop
arquivo, independentemente de como ele foi iniciado. Parece que o problema está no fato de uma nova gnome-terminal
janela ser iniciada a partir do segundo script, mas não entendo como ou por que isso aconteceria. Entrada na área de trabalho:
[Desktop entry]
Name=Autocapture
Comment=Starts autocap program
Exec=/Autocapture/Startup/InitSystem
Terminal=false
Type=Application
Sistema inicial:
#!/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
Isto deveria (e faz com sucesso, se iniciado a partir do desktop) iniciar uma gnome-terminal
janela de tela inteira em execução bash
e iniciar o module.py
programa " " naquela sessão bash. Também fecha a primeira gnome-terminal
janela que iniciou e desanexou o processo filho.
Desculpe pelo primeiro post incrivelmente longo. Eu só quero entender o que está errado aqui e como posso consertar isso. Qualquer ajuda é muito apreciada!
Responder1
Embora tenha as minhas teorias, tenho medo de proclamar que sei exactamente (ou mesmo remotamente) como ou porquê isto funciona. Imagino que tenha algo a ver com a forma como um *.desktop
lançador executa seu alvo. Talvez eu estivesse tentando matar a janela do gnome-terminal depois que ela já havia sido fechada no final da execução do script e acabei matando minha sessão? Talvez vice-versa? Não tenho a pretensão de saber, mas convidaria qualquer um que soubessepor favor responda esta pergunta com sua explicaçãopara que outros possam aprender com meu erro.
Remover a linha kill -9 $PPID
resolveu o problema
Se o script for executado a partir do *.desktop
launcher, a janela inicial gnome-terminal
será fechada, deixando a segunda. Se o script for executado na linha de comando (por exemplo, $ bash InitSystem
), a janela inicial gnome-terminal
não fecha.