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