У меня есть задание 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
.