Проблема насправді не з cron - це з вашою роботою.
Вам потрібно буде, щоб ваша робота взаємоділа із замком якогось опису. Найпростіший спосіб зробити це - спробувати створити каталог, і якщо успіх продовжується, якщо не вийти. Після завершення роботи та завершення роботи вона повинна видалити каталог, готовий до наступного запуску. Ось сценарій для ілюстрації.
#!/bin/bash
function cleanup {
echo "Cleanup"
rmdir /tmp/myjob.lck
}
mkdir /tmp/myjob.lck || exit 1
trap cleanup EXIT
echo 'Job Running'
sleep 60
exit 0
Запустіть це в одному терміналі, а потім до запуску 60 секунд запустіть його в інший термінал, він вийде зі статусом 1. Після першого процесу ви можете запустити його з другого терміналу ...
Редагувати:
Щойно я дізнався про зграю, я думав, що оновлю цю відповідь.
flock (1) може бути простішим у використанні. У цьому випадку це flock -n
може здатися, наприклад
* * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/job
Запускав би свою роботу щохвилини, але не зміг, якби зграя не змогла отримати замок у файлі.