并行显示 n 个命令的输出

并行显示 n 个命令的输出

是否有一个 shell 命令可以并行显示 n 个给定命令的输出?我有 n 个日志查看命令(其中 n 在启动时可以不同),我喜欢并行显示它们的输出。

它应该看起来像 的分割视图tmux,但是tmux似乎很难只给出 n 个命令并获得它们的统一分割输出视图。

调用应该类似于(给定的命令可能没有用;它们只是一个示例): split_command_view "watch -n0.1 ls -la" "tail -F log.txt" "date"

在这种情况下,屏幕应分为三个子终端并显示命令输出。

这样的事情存在吗?

谢谢

答案1

multitail是这样一个命令:

multitail -l cmd1 -l cmd2

或者,如果您希望窗口在命令完成后继续存在:

multitail -l 'cmd1; sleep inf' -l 'cmd2; sleep inf'

(如果您sleep不支持inf,您可以将其更改为一个非常大的整数)。

答案2

tail支持一次显示多个文件,但是它不会像那样将终端分成多个窗格tmux

tail -f /var/log/syslog /var/log/auth.log

答案3

方法是将过程输出到不同的 TTY。要知道当前 tty 的名称,只需输入tty。它会给你例如/dev/pts/0。然后你可以运行这样的命令

tail -f /permanent.log > /dev/pts/0 &

最后&,您将进程发送到后台,以便您可以运行更多命令。要恢复进程,您可以使用jobsfg命令。

相关内容