Я ищу простое и универсальное решение, которое позволило бы вам выполнить любой скрипт или приложение в crontab и предотвратить его запуск дважды.
Решение должно быть независимым от выполняемой команды.
Я предполагаю, что это должно выглядеть так, lock && (command ; unlock)
где lock вернет false, если была другая блокировка.
Вторая часть была бы похожа на получение блокировки, запуска команды и разблокировки после выполнения команды, даже если она возвращает ошибку.
echo "Locking succeeded" >&2; trap 'rm -rf /var/lock/mylock' EXIT
Не нужно устанавливать какой-нибудь модный пакет:
Этот сценарий быстрее написать самому, чем запускать "apt-get install", не так ли? Возможно, вы захотите добавить «-u $ (id -u)» в pgrep, чтобы проверять экземпляры, запускаемые только текущим пользователем.
источник
||
оператора, прежде чем любой из них еще сможет запустить сценарий.См. Также Tim Kay's
solo
, который выполняет блокировку путем привязки порта к петлевому адресу, уникальному для пользователя:http://timkay.com/solo/
В случае, если его сайт закрывается:
Использование:
Используйте это так:
Автор сценария:
источник
solo(3801): Can't assign requested address
если вы не введете0
3-й параметр методаpack
. То, что хорошо для BSD, хорошо и для Mac.Вам нужен замок.
run-one
делает работу, но вы также можете посмотретьflock
изutil-linux
пакета.Это стандартный пакет, предоставляемый разработчиками ядра, допускающий больше настроек, чем он,
run-one
и все еще очень простой.источник
Простое решение от bash-hackers.org, которое работало для меня, было использование mkdir . Это простой способ убедиться, что запущен только один экземпляр вашей программы. Создайте каталог с помощью mkdir .lock, который возвращает
Итак, эта простая функция сделала всю логику блокировки файлов:
источник
Это решение для bash-скрипта, который должен проверить себя
источник