我试图弄清楚如何创建一个名为 的命令runbg
,该命令将接受在后台运行的子命令并为每个子命令创建一个分屏。当子命令成功完成时,分屏关闭;如果子命令失败,则屏幕将保持打开状态并显示错误,直到用户使用终止信号关闭屏幕。一旦所有屏幕关闭,命令就完成并继续执行。例如
runbg "ping -t 5 google.com" "ping -t 10 microsoft.com"
echo "done"
我发现我可以做到:
ping -t 5 google.com &
ping -t 10 microsoft.com &
wait
这实现了事物的并行方面,但是每个命令都将所有内容输出到同一个终端,这非常嘈杂。因此需要分屏设置。
通过搜索这里,我发现GNU 屏幕这似乎可以处理屏幕方面的事情,但似乎它需要一个 .screenrc 文件 - 虽然可以通过编程方式完成,但有点烦人,正如我想象的那样,这意味着我需要在某个地方编写一个随机 tmp 文件。
我发现这个答案没有使用屏幕,.sreenrc
但是我不知道如何在其中进行分屏操作。
简而言之:
- 有没有什么东西已经可以实现我想要的功能
runbg
? - 如果不是,GNU Screen 是我想要的吗?我是否需要使用
.screenrc
文件,或者有没有一种方法可以在没有文件的情况下完成分屏?
答案1
您可以通过将 split-window 和 send-key 串在一起来使用 tmux 来完成此操作,如下所示:
tmux new session \; split-window -v \; send-keys 'ping -t 5 google.com' C-m \; split-window -h \; send-keys 'ping -t 10 microsoft.com' C-m \;