Executando um programa na inicialização sem login, usando a tela

0

Prefácio: Eu tenho um servidor em execução em um laptop antigo. A tela está sempre ligada com um prompt de login, mas como seu teclado está em péssimo estado, eu o uso exclusivamente via ssh. A tela está em uma boa posição; Eu quero usá-lo para exibir um relógio e algumas estatísticas sobre o que meu servidor está fazendo. Tenho scripts para exibir todas essas coisas, mas quero sempre mostrá-las na tela do monitor.

Minha pergunta é: como faço para que meu script (chamado HUD) seja executado em / dev / tty1, em vez do prompt de login. Espera-se que seja possível aceitar a entrada do teclado, bem como exibir sua saída, para que ele possa usar o teclado para mostrar mais informações onde for necessário em uma versão futura. Eu também gostaria que tty2 etc. permanecessem ativos como telas de login, na verdade eu preciso fazer o login localmente.

Para começar, tentei criar um script que eu possa executar a partir do ssh para iniciar o HUD. É algo assim:

(
    flock -n 9
    watch --interval 0.2 --precise --color --notitle --exec /path/to/script & disown
) 9> /var/lock/hud > /dev/tty1 2> /dev/tty1 < /dev/tty1

(Eu tive que usar & disown em vez de nohup porque nohup reconheceu o tty e redirecionou a saída para nohup.out .)

Esse tipo de trabalho. No entanto, tem alguns problemas:

  • Ele não rouba a entrada de teclado do terminal, então você não pode usar ctrl + c para sair dele (nem alterar o script para realmente usar a entrada do teclado), e se você pressionar enter, mostra e rola a entrada do teclado. exibir, nunca atualizá-lo corretamente depois.
  • Curiosamente, se eu desconectar a sessão ssh que a criou, ela parará de funcionar e mostrará uma mensagem: exec: No such file or directory . Se eu me reconectar ao ssh, ele continuará funcionando corretamente.
  • Parece hackish.

Existe uma maneira melhor de fazer isso? Como?

    
por configurator 01.09.2012 / 23:01

1 resposta

0

Descobri que, de fato, há um jeito simples. Você pode facilmente usar um script de inicialização para criar um serviço que seja executado no console. Aqui está um exemplo.

$ cat /etc/init/hud.conf

console owner

pre-start script
    setterm -powerdown 0 -blank 0
end script

exec /home/configurator/bin/hud-display

post-stop script
    clear
    setterm -blank 2
end script

O pré-início e o pós-parada são usados apenas para que a tela não desligue enquanto este serviço estiver em execução e serão limpos e redefinidos para meus padrões quando o serviço for concluído.

    
por configurator 07.09.2012 / 22:04