是否有一个 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 &
最后&
,您将进程发送到后台,以便您可以运行更多命令。要恢复进程,您可以使用jobs
和fg
命令。