하나의 Raspberry Pi에서만 실행되지만 SSH를 통해 다른 여러 컴퓨터에서 실행할 수 있는 프로그램이 있습니다.
Pi에서 프로그램을 실행하면 예상대로 실행됩니다.
crontab 또는 SSH에서 실행할 수 있도록 일부 bash 스크립트를 만들었지만(음, 함께 잘라서) 예상대로 실행되지 않았습니다.
첫 번째는 이렇습니다.
exec sudo /usr/bin/java \
-Djava.library.path=/usr/lib/jni \
-cp /usr/share/java/RXTXcomm.jar \
-jar '/home/pi/forgokapu/dist/forgokapu.jar' < /dev/tty1
그러나 Pi에서 읽는 것은 허용되지 않습니다.tty1
. (내 생각에 &는 백그라운드에서 실행되는 것을 의미합니다.)
그러나 그렇지 않은 경우에도 &
실행 중인 컴퓨터( )에 출력을 제공 pts/0
하지만 어디서든 입력을 받지 않습니다. 추가해 보았습니다
exec sudo /usr/bin/java \
-Djava.library.path=/usr/lib/jni \
-cp /usr/share/java/RXTXcomm.jar \
-jar '/home/pi/forgokapu/dist/forgokapu.jar' < /dev/tty1 >/dev/tty1
입력 및 출력을 강제로 실행 tty1
했지만 이제 출력이 어디에도 나타나지 않고 ps -A
실행 중임을 표시합니다 pts/0
.아니요tty1
.
< /dev/tty1
스크립트 안에 있지만 프로그램은 계속 pts/0
해서 (또는 crontab)에서 실행되며 입력을 받지 않습니다 tty1
. 배쉬는 그렇습니다.
520 tty1 00:00:00 login
690 tty1 00:00:01 bash
917 pts/0 00:00:00 bash
1221 pts/0 00:00:00 sudo
1227 pts/0 00:00:00 java
1241 pts/0 00:00:00 ps
</dev/tty1
Java를 로 리디렉션하지 마십시오 tty1
.
질문:
프로그램이 에서 입력을 받도록 하려면 어떻게 해야 합니까 tty1
?
bash가 필요하지 않으므로 전경에서 실행되어야 합니다. 출력 리디렉션은 중요하지 않지만 프로그램 원본부터 디버깅을 시작하겠습니다.
나도 시도했지만 0</dev/tty1
입력은 여전히pts/0
나도 시도했다
setsid sh -c 'exec sudo /usr/bin/java \
-Djava.library.path=/usr/lib/jni \
-cp /usr/share/java/RXTXcomm.jar \
-jar "/home/pi/forgokapu/dist/forgokapu.jar" <> /dev/tty1 >&0 2>&1'
~에서다른 tty에서 프로세스 시작, 하지만 여전히 작동하지 않습니다. :'(
script
좋지도 않아요. 그 반대도 필요해요.