Существует ли команда Runonce для ограничения выполнения команды

StackOverflow https://stackoverflow.com/questions/4009041

Вопрос

Существует ли эта команда для 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 + параметры

Другие советы

Я думаю, что вы можете посмотреть на смягчать, чтобы увидеть, что это соответствует вашему требованию

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top