существует ли команда runonce для ограничения выполнения команды - PullRequest
0 голосов
/ 24 октября 2010

Существует ли эта команда для Linux?

runonce --dampen 300 echo "hello"

Команда будет принимать команду для запуска и необязательные критерии для частого выполнения.

Опция Демпфирование говорит: подождите 300 миллисекунд, а затем выполните команду. Любые другие исполнения этой команды объединяются в один прогон. Это позволяет обобщать события общим способом и комбинировать их выполнение.

если вы бежали

runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"
runonce --dampen 300 echo "hello"

Из трех разных вложенных оболочек примерно в одно и то же время, первая будет жить в течение 300 миллисекунд и печатать привет. Два других немедленно вернутся и ничего не сделают.

Если это существует, как называется инструмент или ссылка на страницу его проекта?

Ответы [ 2 ]

1 голос
/ 24 октября 2010

Возможное решение, как-то взятое из справочной страницы 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 - количество секунд (не миллисекунд).

EDIT : введено хеширование по комаду + параметры

0 голосов
/ 24 октября 2010

Я думаю, вы, возможно, захотите посмотреть cron , чтобы увидеть, соответствует ли это вашему требованию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...