是否存在runonce命令来限制命令执行

时间:2010-10-24 16:11:30

标签: linux command-line command-line-tool

Linux是否存在此命令?

runonce --dampen 300 echo "hello"

该命令将运行命令,并且可选标准以限制频繁执行。

选项dampen表示等待300毫秒,然后运行命令。此命令的任何其他执行都会合并到一次运行中。这允许您以通用方式折叠事件并组合它们的执行。

如果你跑了

runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"

在大致相同的时间从三个不同的子壳,第一个子壳将存活300毫秒并打印你好。其他两个会立即返回,什么也不做。

如果存在,该工具的名称或项目页面的链接是什么?

2 个答案:

答案 0 :(得分:1)

以某种方式从flock手册页获取的可能解决方案是:

#!/bin/sh
# name me 'runonce'

timeout="$1"; shift
command="$1"; shift
hash=$(echo "$command" "$@" | md5sum)
(
  flock -xw0 3 || exit
  sleep "$timeout"
  "$command" "$@"
) 3>"/tmp/$hash"

使用示例:

runonce 10 echo "hello"

其中10是秒数(不是毫秒)。

修改: 在commad +参数上引入哈希

答案 1 :(得分:0)

我认为您可能需要查看cron,看看这是否符合您的要求