Execute o script ubuntu 14.04 no boot

0

Sou bem novo no script no Ubuntu. Eu tenho um aplicativo em C ++ que usa o processamento de vídeo OpenCV para Ipcamera, estou trabalhando no Ubuntu 14.04.

Vou tentar explicar o que fiz:

Primeiro, queria verificar se um script poderia ser chamado na inicialização, então criei este script simples que cria apenas um arquivo no mesmo diretório em que tenho meu script:

#!/bin/sh


RUTA_ENTORNO='dirname $0'

echo "Creando archivo de prueba..."
touch ${RUTA_ENTORNO}/ArchivoPrueba.txt
exit 0

Eu adiciono ao rc.local a próxima linha:

sh /home/myScript

E quando eu reinicio meu computador, o arquivo que ele criou é tão perfeito.

Depois, compilei meu aplicativo e movi o executável na mesma pasta do meu Script, e adicionei isso:

#!/bin/sh

/home/executable
RUTA_ENTORNO='dirname $0'

echo "Creando archivo de prueba..."
touch ${RUTA_ENTORNO}/ArchivoPrueba.txt
exit 0

Eu adicionei a linha /home/executable no meu Script para executá-la, e para verificar se após isso o arquivo.txt é criado.

Mas aqui está o que eu não entendo, quando eu reinicio meu sistema a câmera não está funcionando. Parece que o aplicativo não está jogando erros, mas o arquivo.txt é criado. No entanto, se no terminal eu executar sh /home/myScript , o aplicativo será iniciado e eu poderei ver a câmera, mas o arquivo.txt não será criado.

Como posso executar meu aplicativo automaticamente quando reinicializo meu sistema?

    
por user3766585 28.10.2014 / 20:09

1 resposta

0

Vou especular um pouco sobre isso:

  1. /home/executable provavelmente depende dos gráficos que estão sendo inicializados, o que eu acho que significaria após a execução da GUI.
  2. Se a GUI não estiver em execução, ela provavelmente sairá com um erro e seu script continuará para a parte restante (e é por isso que o arquivo não é criado). saída de rc.local é descartada, então você não saberia se ele gerou um erro.
  3. Se a GUI estiver em execução, seu programa continuará a ser executado, portanto, o script não alcançará a seção restante até você fechá-la.

Considere o uso de um trabalho de sessão do Upstart . Crie um arquivo .conf em ~/.config/upstart (digamos camera.conf ) contendo:

description "My OpenCV-based camera app"
start on startup
stop on session-end

exec /home/executable

Agora ele deve iniciar automaticamente quando você efetuar login. Você pode usar os seguintes comandos para iniciar e interromper seu aplicativo ( camera é o nome do arquivo .conf que você criou):

start camera
stop camera

Você também pode adicionar respawn ao arquivo de configuração, se quiser que o Upstart inicie o programa novamente se você fechá-lo.

    
por muru 28.10.2014 / 20:51