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


8

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

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

Спасибо, Джебв

Ответы:


11

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

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

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


Хорошая информация Вы пропустили '-s', но это "timeout -s 2 3540 <команда>".
Fish Monitor

Тот, который установлен через apt в Ubuntu, использует синтаксис, который я упомянул:usage: timeout [-signal] time command...
Cakemox,

Что дает «dpkg -S bin / timeout»? На самом деле мой из coreutils и является чистым GNUish.
Fish Monitor

timeout: /usr/bin/timeout
Cakemox

10.04, тоже самое что и ОП.
Cakemox

0

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

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.