Redirecionando stdin para java sem bash

0

Estou criando um sistema semelhante a um quiosque, que lê dados de um leitor de código de barras, e um programa em java o lê no console e o interpreta. Liguei o autologin e usei o crontab para executá-lo como

* * * * * /home/name/script.sh < /dev/tty1 > /dev/tty1

enquanto o script em si também inclui

exec sudo /usr/bin/java -jar '/home/name/reader/dist/reader.jar' </dev/tty1

(Existem outras partes do script, mas elas apenas verificam outros programas em execução ...)

O que eu espero é que, após o login, o crontab o execute como se eu estivesse simplesmente executando-o a partir do console. No entanto, os resultados são bem malucos.

  • Às vezes, ele é executado corretamente por um tempo. No entanto, após algumas leituras, o bash entra e começa a interpretar a entrada tty1, em vez de redirecioná-la para java.

  • Às vezes, ele mostra que está em execução, mas nunca envia informações para o java.

  • Às vezes, depois de receber um comando kill, o crontab o reinicia sem redirecionar a entrada para o java.

Nesse meio tempo, ele se comunica com outros computadores, que também enviam comandos. Coisas como está tentando atualizar, respostas, verifica se tudo ainda está rodando, e elas são redirecionadas para a saída tty1, mas elas sempre aparecem corretamente, mesmo quando o bash está lendo o stdin.

Embora eu realmente não tenha uso para o bash (eu o controle do SSH), ele se comunica com os outros computadores via ttyS0 e ttyAMA0, então eles não devem ser bloqueados.

Execute o aplicativo do console java lendo a entrada padrão após a inicialização

É mais ou menos como esse problema. Eu também tentei rodar o java como um serviço, mas nesse caso, ele constantemente lia 'null's da entrada, tornando impossível extrair qualquer dado útil dele.

Obrigado antecipadamente.

(Eu usei um título errado? Quase ninguém lê esta pergunta.)

Agora, estou pensando que deveria ser 0< /dev/tty1 , mas outros tutoriais e perguntas são muito vagos sobre redirecionamento de entrada. Há toneladas de redirecionamento de saída e entrada de arquivo, mas nada sobre entrada de tty ...

Tem uma solução, sim! Iniciar um processo em um tty diferente

    
por kry 19.02.2018 / 14:46

0 respostas