На додаток до інших відповідей, особливо посилання, опублікованого @soulcake: Якщо ви запланували довгу команду, що працює, із занадто коротким інтервалом, cron з радістю виконає другу, перш ніж перша завершиться (якщо тільки в команді не буде реалізована якась мютекс) .
Це часто ще більше уповільнює початкову команду, що призводить до запуску іншого екземпляра до завершення попередніх тощо. Або це може бути небажаним з інших причин.
Загальний спосіб запобігання полягає в умові запуску команди із захистом, який забезпечує, що попередня команда не виконується. Наприклад:
10 * * * * pgrep my_slow_command >/dev/null || /usr/local/bin/my_slow_command
Переконайтесь, що pgrep відповідає імені команди під час її запуску, наприклад, сценарії python мають python як ім'я виконуваного файлу, що, ймовірно, недостатньо конкретно, і вам також доведеться відповідати імені сценарію python.
10 * * * * pgrep -f my_script.py || /usr/local/bin/my_script.py
(pgrep без опції '-f' збігається з іменами скриптів bash)
Якщо ви не можете використовувати pgrep з якихось причин:
10 * * * * ps ax | grep [m]y_command || /usr/local/bin/my_command
Дужки використовуються, щоб уникнути відповідності самій команді grep.