【问题标题】:Is there a way to run two different commands/instructions on two different bash terminals simultaneously? [closed]有没有办法在两个不同的 bash 终端上同时运行两个不同的命令/指令? [关闭]
【发布时间】:2020-09-12 20:19:59
【问题描述】:

这是一个示例 -

Terminal1

$ ./file_name1.sh

Terminal2

$ ./file_name2.sh

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

可以使用terminator 之类的终端或任何其他终端来完成吗?

【问题讨论】:

    标签: linux bash stdout stderr


    【解决方案1】:

    终端作为设备公开。如果您在/dev/tty/1 上有终端 1,在 /dev/tty/2 有终端 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。

    【讨论】:

      【解决方案2】:

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

      mkfifo mystdout  
      mkfifo mystderr
      
      ./program >mystdout 2>mystderr
      

      在 1 号航站楼:

      tail -f mystdout

      在 2 号航站楼:

      tail -f mystderr

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 2016-07-18
        • 1970-01-01
        相关资源
        最近更新 更多