我有一个Linux命令,该命令可以由另一个应用程序使用不同的参数多次(快速连续)调用。问题是,如果命令的执行顺序太快,执行的功能将无法正常工作。
我正在寻找一种简单的方法,以确保每次调用该命令都可以正确地彼此延迟/间隔(几毫秒)。
在这种情况下,执行顺序无关紧要,我无法控制应用程序如何进行调用。
编辑:被调用的命令用于在Raspberry Pi上传输RF信号。因此,命令执行必须是互斥的(无并发性),并且两次执行之间还要有额外的延迟,以防止接收器误读信号。
答案 0 :(得分:1)
对于任何有相同问题的人,这对我有用:https://unix.stackexchange.com/questions/408934/how-to-serialize-command-execution-on-linux
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
答案 1 :(得分:1)
对于将并发执行限制在实例中的简单并发控制,请考虑以下while
循环(根据需要进行修改)。
请注意,该脚本必须作为/path/to/script.sh调用,以便找到其他实例。以'bash /path/to/script.sh'开头将需要更改!
#! /bin/bash
# Process identifier.
echo "START $$"
ME=${0##*/}
# Max number of instances
N=5
# Sleep while there are more than N instances.
while [[ "$(pgrep -c -x $ME)" -gt "$N" ]] ; do echo Waiting ... ; sleep 1 ; done
# Execute the job
sleep "$@"
echo "Done $$"