首页 > 解决方案 > bash:无限期地使用并行命令运行脚本

问题描述

我有日志系统,可以在 Ubuntu Server 中每秒创建新的日志文件。我开发了名为“processor.sh”的脚本,它每秒运行一次,以从新创建的日志文件中提取重要信息。以前,我曾经使用 watch 命令无限期地运行processors.sh:

watch -n1 ./processor.sh 

现在我开始使用如下并行命令:

ls *.log | parallel xargs ./processors.sh

我认为使用手表连续运行它是错误的。如何使用并行命令每秒永远运行 processor.sh?

标签: bashshellgnu-parallel

解决方案


这是一种方法:

while true; do
  parallel ./processors.sh ::: *.log
  sleep 1
done

但我认为这会更好:

inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f `pwd` |
  parallel ./processors.sh

这将在另一个进程停止写入 .log 文件并关闭它时开始处理。


推荐阅读