1つの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
良くないです。その逆も必要です。