Linux 是否存在限制命令执行的runonce命令
Linux是否存在此命令Linux 是否存在限制命令执行的runonce命令,linux,command-line,command-line-tool,Linux,Command Line,Command Line Tool,Linux是否存在此命令 runonce --dampen 300 echo "hello" 该命令将执行一个命令,并将可选条件限制为频繁执行 阻尼选项表示等待300毫秒,然后运行命令。此命令的任何其他执行都合并到一次运行中。这允许您以通用方式折叠事件并合并它们的执行 如果你跑 runonce --dampen 300 echo "hello" runonce --dampen 300 echo "hello" runonce --dampen 300 echo "hello" 大约同时从三
runonce --dampen 300 echo "hello"
该命令将执行一个命令,并将可选条件限制为频繁执行
阻尼选项表示等待300毫秒,然后运行命令。此命令的任何其他执行都合并到一次运行中。这允许您以通用方式折叠事件并合并它们的执行
如果你跑
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
大约同时从三个不同的子shell中,第一个将存活300毫秒并打印hello。另外两个人马上回来,什么也不做
如果存在,该工具的名称或指向其项目页面的链接是什么?我想您可能想看看,看看这是否符合您的要求一个可能的解决方案,以某种方式从
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+参数上引入的哈希可能更接近,但我认为它不支持OP请求的连接逻辑。这是一个很酷的解决方案。我没有说明,但是runonce--damp-echo“再见”不应该被阻止,因为这是第二个不同的命令。使用你的flock脚本解决方案,我想你可以制作一个锁文件,它是你命令的散列,因此阻尼在不同的命令中有所不同。我已经考虑了你的建议,并做了相应的修改。