有没有办法在两个不同的bash终端上同时运行两个不同的命令指令?[已关闭]

问题描述 投票:0回答:1

下面是一个例子--

终端1

$ ./file_name1.sh

终端2

$ ./file_name2.sh

更具体地说,我想要的是,打印 stdout 在一个终端上& stderr 在另一个终端上同时从一个程序。

能否使用像 terminator 或任何其他?

linux bash ubuntu stdout stderr
1个回答
5
投票

终端是作为设备暴露的。如果你的终端1在 /dev/tty/1 和2号端子 /dev/tty/2 你可以运行

 ./file_name_1.sh >/dev/tty/1 2>/dev/tty/2

让它的标准输出显示在终端1,标准输出显示在终端2。当然,如果你在这些终端中的其中一个终端中有任何其他的东西,比如交互式的shell,你就会给自己添乱。更好的解决方案可能是将日志记录到一个文件中,然后运行 tail 在每一个终端中,你想看的文件,你认为合适的。

./file_name_1.sh >stdout.log 2>stderr.log

然后在终端1中

tail -f stdout.log

而在2号航站楼

tail -f stderr.log

tty 命令可以用来交互式地显示当前终端的信息;在大多数平台上,您还可以在 ps 输出,但具体使用什么选项取决于你在哪个操作系统上。一般在Linux上,可以尝试使用 ps a 作为一个开始,你可以创建一对命名的管道,将stdout和stderr重定向到这些管道上。


0
投票

你可以创建一对命名的管道,并将stdout和stderr重定向到这些管道。在任何你喜欢的终端上,你可以从这些管道中读取数据。

mkfifo mystdout  
mkfifo mystderr

./program >mystdout 2>mystderr

在终端1上:

tail -f mystdout

在终端2上:

tail -f mystderr

© www.soinside.com 2019 - 2024. All rights reserved.