Executando scripts após iniciar o servidor X

0

Eu preciso executar um programa em lote de 24 por 7. Em falhas de energia eu já configurei o Ubuntu Server 14.04 para ligar assim que a energia estiver de volta, login automático e iniciar o programa.

O processo é baseado no poder da GPU e obtém melhores resultados com overclock. Consegui fazer isso configurando o xorg.conf e executando o xinit. Quando faço isso, a tela fica branca e a linha de comando desaparece. Eu usei um cliente SSH remoto para executar "overclock.sh" e iniciar o programa e funcionou.

Minha pergunta é que, como não poderei usar o cliente remoto todas as vezes, como posso executar outros scripts depois de executar o xinit?

CRTL + ALT + F1 retorna para a linha de comando, mas como usar isso no script de inicialização?

Eu gostaria de executar na inicialização:  - xinit;  - overclock.sh;  - start_program.sh;

Atualização 27/08/2017: No momento, estou entendendo mais o que está acontecendo:

  1. Estou no ambiente de console tty1.

  2. Quando executar "xinit", abra uma tela aproximada em tty7.

  3. Pressionando CRTL + ALT + F1, volto ao terminal tty1, mas estou preso no comando "xinit". É por isso que o script .bash-login não executa nenhum outro comando depois.

  4. Pressionando CTRL + C, ele para o ambiente tty7 e o overclock não funciona.

  5. Agora a parte mais estranha: se eu pressionar CTRL + Z, eu retorno o controle, o overclock funciona, mas quando eu executo o programa, apenas o GPU0 começa a funcionar.

  6. Também tentei "setsid xinit & amp; > / dev / null" e, novamente, tudo parece perfeito, mas apenas o GPU0 funciona.

7 Outra abordagem: na tela aproximada, tty7, clico com o mouse na linha de comando superior, tipo overclock.sh e funciona. Todos os 8 gpus funcionam bem. Esta parece ser a resposta mais próxima.

Como posso criar um arquivo de lote para executar comandos assim que o tty7 sobe?

Atualização 28/08/2017:

eu resolvi. A mágica foi estudar o xterm chamado de xinit. Ele recebe o parâmetro -e "command". Coloque o script como comando.

    
por Bruno Carneiro 24.08.2017 / 08:59

3 respostas

0

Adicione os scripts ao seu crontab usando crontab -e :

@reboot /path/to/overclock.sh; /path/to/start_program.sh

Se você quiser adicioná-lo ao crontab raiz ( sudo crontab -e ), você também precisará definir um usuário, e. g. root :

@reboot root /path/to/overclock.sh; /path/to/start_program.sh

Leia mais com man 5 crontab .

    
por dessert 24.08.2017 / 09:17
0

Eu posso ver três maneiras de fazer isso:

  • Em /etc/init.d : coloque os scripts que você deseja iniciar na inicialização. O script precisa ser estruturado como outros scripts do diretório (pode ser intimidante)
  • Use seu script como um serviço e inicie o serviço na inicialização .
  • Use crontab com o trabalho @reboot.
por Biggybi 24.08.2017 / 09:38
0

Eu tentei o que as outras duas respostas sugeriram e falharam. Descobri que a sua melhor aposta é definir um script para a inicialização automática nas configurações da sua área de trabalho.

    
por FutureBound QuantumEntaglement 27.08.2017 / 06:55