Запускать задание только один раз и только при низкой нагрузке

Запускать задание только один раз и только при низкой нагрузке

Я хотел бы автоматически обновлять свои gtags, но только когда система бездействует.

Чтобы добиться этого, я использую iupdateдля наблюдения за интересными частями моей исходной папки. Но у меня есть проблема с частью "idle": я знаю, что команда batchможет запускать задания, когда нагрузка падает ниже 1,5 (или настроенного значения). Но может случиться так, что iupdateзапустится batchнесколько раз, прежде чем задание будет выполнено, что приведет к нескольким обновлениям gtags.

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

Но есть ли какой-то более стандартный метод? Я надеюсь на что-то вроде batch_only_once...

решение1

Это сделает это за вас:

$ cat /etc/lsb-release | grep -i desc
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
$ apt-cache show run-one
....
Description-en: run just one instance of a command and its args at a time
 This utility will run just one instance at a time of some command and
 unique set of arguments (useful for cronjobs, eg).

решение2

Вы можете создать скрипт-оболочку, который сначала проанализирует atqи удалит другие пакетные задания с помощью atrm.

Связанный контент