Inicia o programa na tela após a reinicialização

3

Estou executando várias caixas do Ubuntu 12.04 sem cabeça. Meu uso típico envolve o login em cada máquina através de uma sessão putty e executar um script usando a tela.

Após o login via putty, eu executo o seguinte a partir da linha de comando: screen /home/user/"script"

Minha pergunta é:

Existe alguma maneira de executar meu script / programa automaticamente após uma reinicialização? Estou tentando evitar uma perda de produtividade em uma situação de perda de energia / reinicialização automática.

    
por user142219 21.03.2013 / 10:30

5 respostas

4

Você pode usar o cron para fazer isso por você.

  • Basta fazer crontab -e no terminal
  • Ele será aberto em seu editor selecionado, onde você pode digitar @reboot <your command>
    (certifique-se de fornecer o caminho completo para todos os executáveis)
  • Salve o arquivo e saia do

Ref: link

    
por Vishnu Kumar 21.03.2013 / 11:05
1

A maneira oficial de fazer isso é criar scripts de inicialização. Esses scripts têm um comando start, stop, restart e status e podem ser configurados para executar esses comandos em horários específicos. Então, quando você muda para o nível 6 (reinicialização), ele irá parar o serviço antes de reinicializar e, se configurado corretamente, iniciará automaticamente este script ao alternar para o nível de execução 3. Você pode encontrar esses scripts em /etc/init.d. Se você criar o arquivo corretamente (por isso, deve ser capaz de manipular um parâmetro start e stop) você pode executar os padrões update-rc.d script.sh para configurá-lo para inicialização automática. Certifique-se de ter feito chmod + x no script primeiro para torná-lo executável. A pasta /etc/init.d contém vários exemplos de como isso é feito.

Existe também o arquivo /etc/rc.local, este arquivo é executado depois que o sistema foi completamente inicializado, e você pode simplesmente adicionar seus próprios comandos.

Pessoalmente, prefiro os scripts init.d porque você pode ter certeza de que o programa fecha normalmente, evitando possíveis erros de dataloss ou outros erros. Mas para um comando, ou algo que não pode realmente quebrar / etc / rc.local vai fazer muito bem.

    
por Cheiron 21.03.2013 / 11:10
1

Modifique seu script de tal forma que ele possa ser chamado como um script de inicialização ou, melhor ainda, um trabalho iniciante. Com alguma sorte, você pode mantê-lo praticamente como está e executá-lo na inicialização simplesmente adicionando uma configuração inicial a /etc/init . (Pegue qualquer pequeno arquivo .conf lá como modelo.)

Duas coisas que você precisa saber:

  1. Seu script é chamado com privilégios de root. Solte-os, para que seu script seja executado com os privilégios de usuário apropriados (sua identidade de usuário, neste caso). Faça isso invocando o comando screen final no script usando su

    su -c "screen ..." - username .

  2. Quando iniciado na inicialização, seu script é executado sem um terminal de controle, enquanto você o executa atualmente a partir de um shell. Como você usa screen , presumo que deseja anexar novamente ao terminal que está executando script no seu próximo login. Nesse caso, isso pode exigir a aprovação de opções extras quando você invocar screen .

por zwets 21.03.2013 / 11:11
1

Eu tenho isso no script para iniciar o rtorrent em uma tela no momento da inicialização:

#!/bin/sh

case  in
     start)
        su - johan -c "screen -dm rtorrent"
       ;;
     stop)
        killall rtorrent
        killall screen
        ;;
esac
exit 0

Você pode combinar isso com a resposta Vishnus se você preferir crontab, <your command> = screen -dm /usr/home/"script" .

    
por McNisse 21.03.2013 / 11:18
0

Eu tentei todos os itens acima, sem sorte. O script que estou executando precisa do X para ser iniciado.

O que finalmente funcionou, embora possa ter sido o caminho mais fácil, foi criar um pequeno script chamado launch.sh no meu diretório home e adicioná-lo à lista de aplicativos de inicialização do Ubuntu.

launch.sh contém o seguinte e executa meu script de dentro de:

#!/bin/sh
screen -dmS 051 /home/{user}/{myscript} 

Descobri que o arquivo de configuração para o aplicativo de inicialização launch.sh estava contido no arquivo /home/{user}/.config/autostart/launch.sh.desktop e consegui recriar os dois arquivos nos mesmos locais nas minhas outras caixas e recriar o sucesso. Obrigado a todos que tentaram ajudar. Estou suando algumas balas a menos tendo descoberto uma solução para isso.

    
por user142219 23.03.2013 / 03:40