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

8

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

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

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

jebw
источник

Ответы:

11

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

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

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

Cakemox
источник
Хорошая информация Вы пропустили '-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.

CoreDump
источник
0

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

Sirex
источник