GNO少的bash循环每2分钟刷新一次

时间:2016-02-05 15:36:34

标签: linux bash background-process gnu-parallel less-unix

我有一台带有数据文件夹的Linux机器和一个脚本,该脚本可以在运行它的文件夹的不断变化的内容上生成报告xlsx电子表格文件。我使用xlsx2tsv脚本将其转换为tsv文本,这需要不到一秒钟。该脚本大约需要1分钟来生成电子表格文件,我希望有一个终端屏幕显示GNU less缓冲区中表格的结果,我可以使用游标移动,并使用/search搜索内容等最新版本的内容。

目前我有一个bash while true; do循环,它首先计算脚本的内容,然后将其转换为tsv并将其传递给GNU less。然后在另一个终端屏幕中,我有一个while true; do循环,每2分钟就会杀死less命令。但这让我有1分钟的不活动时间,我在等待电子表格更新,然后才能使用less导航内容。

我想优化此设置,以便在后台生成新的电子表格,而不是在我删除less命令时,但是在1分钟之前启动,以便更新的less命令始终为我提供工作副本我可以导航理想情况下,无需为其创建第三个终端窗口。

有什么想法吗?也许GNU并行?

当前设置:

# screen in the data folder with less command
while true; do $HOME/script -dir $PWD && xlsx2tsv $(ls $PWD/*.xlsx) 1 | column -t | less -S -N; sleep 0.5; done
# screen 2 with the less killing
while true; do pkill less; sleep 120; done

2 个答案:

答案 0 :(得分:3)

我的man页面说的是关于“R”命令

  

R重新绘制屏幕,​​丢弃任何缓冲的输入。如果文件在更改时有用              正在观看。

所以,只需按 R 进行刷新。

答案 1 :(得分:1)

while true; do
  (sleep 0.5
   $HOME/script -dir $PWD &&
   xlsx2tsv $(ls $PWD/*.xlsx) 1 |
   column -t > new;
   mv new old;
   killall less
  ) &
  less -S -N old
done