重定向输入 bash

重定向输入 bash

我有一个程序,仅在一台 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也不好,我需要与它相反的东西。

相关内容