Назад | Перейти на главную страницу

Могу ли я ограничить время выполнения cronjob

У меня есть задание cron, которое выполняется ежечасно и иногда занимает слишком много времени, есть ли способ установить максимальное время выполнения, и задание будет убито, если оно превышает это значение?

Это на сервере Ubuntu 10.04.

Спасибо jebw

Попробуйте timeout команда. Например:

0 * * * * timeout -2 3540 /path/to/your_command.sh

отправит SIGINT вашей команде, если она не будет завершена в течение 59 минут.

Ответ cakemox - лучший. В противном случае просто поместите pid в файл или используйте killall в другом задании cron за минуту до этого, чтобы убить процесс.

Нет. Мы делаем это так: создаем сценарий с файлом блокировки и заставляем сценарий проверять этот файл блокировки перед повторным запуском, чтобы он мог проверить, запущен ли он уже, и решить, запускается ли он, если он ждет, пока другой конец или если он убьет другого перед бегом.

Файл блокировки - это просто пустой файл или файл с другим скриптом. PID сохранено где-то вроде /var/run или /var/lock.