Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 是否存在限制命令执行的runonce命令_Linux_Command Line_Command Line Tool - Fatal编程技术网

Linux 是否存在限制命令执行的runonce命令

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" 大约同时从三

Linux是否存在此命令

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脚本解决方案,我想你可以制作一个锁文件,它是你命令的散列,因此阻尼在不同的命令中有所不同。我已经考虑了你的建议,并做了相应的修改。