Como iniciar o aplicativo GUI com o upstart?

4

Eu tenho lutado com esse problema por três dias e tentei muitas maneiras de resolvê-lo, mas ainda não obtive sucesso. Espero que vocês possam me ajudar ...

Eu tenho um aplicativo GUI. Eu quero começar esta aplicação automaticamente. E quando ele desce ou fecha inesperadamente, quero reabrir este aplicativo.

Eu tentei usar o script upstart, no entanto, embora não haja problemas com serviços com o upstart, o aplicativo GUI não está iniciando com o script upstart. Ele diz que não pode conectar o servidor X.

Devo adicionar ou alterar algumas configurações para abrir com o upstart ou há alguma maneira de abrir o aplicativo da GUI automaticamente quando ocorre uma saída ou desligamento inesperado (não apenas uma vez após o login, não estou com a inicialização)?

    
por goGud 06.08.2014 / 09:47

2 respostas

4

O problema que você está enfrentando é que quando upstart (ou systemd , ou os scripts em /etc/rc.d/ ) são executados, normalmente não há serviço gráfico ("o servidor X") em execução.

Além disso, a disponibilidade do subsistema gráfico no Unix é estritamente ligada ao conceito de que um usuário fez um login gráfico, e apenas esse usuário tem o direito de usar o ambiente gráfico. É costume NÃO iniciar um subsistema gráfico para raiz --- e os scripts iniciais são executados por raiz.

Para iniciar automaticamente uma aplicação gráfica no início do sistema, minha abordagem seria:

  1. crie um usuário para essa finalidade. Configure-o para que sua sessão seja iniciada automaticamente.

  2. configureumaplicativodeinicializaçãoparaesseusuáriocomoprogramadesejado;escolha"aplicativo de inicialização" no painel:

  3. parareiniciaroaplicativoquandoelesai/falha,vocêpodesimplesmenteincorporá-loemumscript:

    #!/bin/bash#whiletrue;do/full/path/to/start_myapp.sh#NObackground(&)!#ifwelandhereitexitedsleep5done

Sevocêusaressescript,émuitoimportantequeocomandostart_myapp.shnãoinicieoaplicativoemsegundoplano.Casocontrário, são necessárias estratégias mais complexas para reiniciar automaticamente ...

Observe que você também pode usar seu usuário normal em paralelo; basta escolher "trocar usuário" do painel (adaptar-se ao seu sabor do Ubuntu) e você terá outra tela de login gráfica; você pode alternar entre as teclas CTRL-ALT-F7 e CTRL-ALT-F8 ...

    
por Rmano 06.08.2014 / 10:14
5

Crie um arquivo $HOME/.config/upstart/myGuiStart.conf

Conteúdo:

start on desktop-start
stop on desktop-end

respawn

exec firefox

ou outro exemplo com um atraso:

start on desktop-start
stop on desktop-end

respawn

script
    sleep 30
    firefox 
end script

descrição do respawn:

 respawn
         A service or task with this stanza will be automatically started
         if it should stop abnormally.  All reasons for a service stopping,
         except the stop(8) command itself, are considered abnormal.  Tasks
         may exit with a zero exit status to prevent being respawned.

Mais informações:

link

link

Respawn bug? - > link

    
por TuKsn 06.08.2014 / 14:40