У меня есть cronjob, который запускается ежечасно, который иногда занимает слишком много времени, есть ли способ установить максимальное время выполнения, и задание будет убито, если оно превысит это?
Это на сервере Ubuntu 10.04.
Спасибо, Джебв
Попробуйте timeout
команду. Например:
0 * * * * timeout -2 3540 /path/to/your_command.sh
отправит сигнал SIGINT вашей команде, если он не завершился через 59 минут.
usage: timeout [-signal] time command...
timeout: /usr/bin/timeout
Нет. Для этого мы создадим сценарий с файлом блокировки и сделаем так, чтобы скрипт проверял этот файл блокировки, прежде чем снова запускать его, чтобы он мог проверить, работает ли он уже, и решить, выполняется ли он, если он ждет, пока другой не выполнит команду. конец или если он убивает другого перед запуском.
Файл блокировки - это просто пустой файл или файл с другим скриптом,
PID
сохраненным где-то вроде/var/run
или/var/lock
.источник
Ответ Cakemox самый лучший. В противном случае, просто поместите pid в файл или используйте killall на другой cronjob минуту назад, чтобы завершить процесс.
источник