Ответы:
Попробуйте 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
.