Существует ли команда Runonce для ограничения выполнения команды
-
25-09-2019 - |
Вопрос
Существует ли эта команда для Linux?
runonce --dampen 300 echo "hello"
Команда будет принимать команду для запуска и дополнительных критериев, чтобы часто его выполнено.
Опция демпсона говорит, ждать 300 миллисекунд, а затем запустить команду. Любые другие выполнения этой команды воплощаются в одно прогон. Это позволяет обрезать события в общем случае и объединить их выполнение.
Если вы побежали
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
Из трех разных подкоров примерно в примерно в то же время первым будет жить на 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 + параметры
Другие советы
Я думаю, что вы можете посмотреть на смягчать, чтобы увидеть, что это соответствует вашему требованию