저는 바코드 판독기에서 데이터를 읽고 Java 프로그램이 콘솔에서 데이터를 읽고 해석하는 키오스크와 같은 시스템을 만들고 있습니다. 자동 로그인을 활성화하고 crontab을 사용하여 실행했습니다.
* * * * * /home/name/script.sh < /dev/tty1 > /dev/tty1
스크립트 자체에도 포함됩니다.
exec sudo /usr/bin/java -jar '/home/name/reader/dist/reader.jar' </dev/tty1
(스크립트의 다른 부분도 있지만 실행중인 다른 프로그램만 확인합니다...)
내가 기대하는 것은 일단 로그인하면 마치 콘솔에서 실행하는 것처럼 crontab이 이를 실행한다는 것입니다. 그런데 결과가 이상했습니다.
때로는 잠시 동안 올바르게 작동하는 경우도 있습니다. 그러나 몇 번 읽은 후 bash가 들어와 tty1 입력을 java로 리디렉션하는 대신 해석을 시작합니다.
때로는 실행 중임을 표시하지만 java.lang에 정보를 보내지 않는 경우도 있습니다.
때때로 kill 명령을 받은 후 crontab은 입력을 java로 리디렉션하지 않고 이를 다시 시작합니다.
동시에 다른 컴퓨터와 통신하고 다른 컴퓨터도 명령을 보냅니다. 업데이트, 응답, 모든 것이 여전히 실행 중인지 확인하고 tty1 출력으로 리디렉션되는 것과 같은 작업은 bash가 표준 입력에서 읽는 경우에도 항상 올바르게 표시됩니다.
실제로 bash를 사용하지는 않지만(SSH를 통해 제어함) bash는 ttyS0 및 ttyAMA0을 통해 다른 시스템과 통신하므로 잠겨서는 안 됩니다.
또한 Java를 서비스로 실행해 보았지만 이 경우 입력에서 "null"을 계속 읽고 유용한 데이터를 추출할 수 없습니다.
이제는 그래야 한다고 생각 0< /dev/tty1
하지만 다른 튜토리얼과 질문은 입력 리디렉션에 대해 매우 모호합니다. 출력과 입력을 파일로 리디렉션하는 방법은 많지만 tty에 대한 입력은 아닙니다...
해결책을 찾았습니다. 예!다른 tty에서 프로세스 시작