以编程方式在分屏中运行后台任务?

以编程方式在分屏中运行后台任务?

我试图弄清楚如何创建一个名为 的命令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 \;

相关内容