入力 bash リダイレクト

入力 bash リダイレクト

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/tty1Javaにリダイレクトしないでください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良くないです。その逆も必要です。

関連情報