Я б рекомендував використовувати команду run-one - набагато простіше, ніж мати справу з замками. З документів:
run-one - це скрипт обгортки, який виконує не більше ніж один унікальний екземпляр якоїсь команди з унікальним набором аргументів. Це часто корисно для кронштейнів, коли вам потрібно не більше однієї копії, яка працює одночасно.
run-this-one точно схожий на run-one, за винятком того, що він буде використовувати pgrep та kill для пошуку та вбивства будь-яких запущених процесів, що належать користувачеві, та відповідності цільовим командам та аргументам. Зауважте, що run-this-one буде блокуватися при спробі вбити процеси узгодження, поки всі процеси узгодження не загинуть.
run-one-постійно працює точно так само, як run-one, за винятком того, що він відновлює "COMMAND [ARGS]" в будь-який час, коли COMMAND виходить (нульовий або ненульовий).
Keep-one-running - псевдонім для запуску-один-постійно.
run-one- пока -успіх працює точно так само, як run-one-постоянно, за винятком того, що він переставляє "COMMAND [ARGS]", поки COMMAND не завершиться успішно (тобто не вийде з нуля).
run-one-till-fail працює точно так само, як run-one-постоянно, за винятком того, що він перепродає "COMMAND [ARGS]" до тих пір, поки COMMAND не завершиться з відмовою (тобто не виходить з нуля).