Intereting Posts
вырезать последние два с sed? Перенаправление Io против производительности регистрации файлов c / c ++ Быстрые и медленные символические ссылки Получить все имена файлов с определенным количеством символов Дисплей на ноутбуке не работает, если сначала подключить его к монитору vim: невозможно скопировать и вставить в Debian Stretch Как установить Sun / Oracle Java 1.6 на centOS 6, используя только текстовый режим? Где boost установлен на Debian? Как установить tar-файл «глобально»? Ошибка установки SSH в Ubuntu, работающем в VirtualBox Работа с конфигурациями конкретных компьютеров при использовании git для управления конфигурацией Как запустить Steam с рабочего стола Xfce? Пакет Virtualbox и GPU: устройство с адресом PCI хоста, уже подключенным к этой виртуальной машине Проблемы TrackPoint с последними версиями libinput, Xorg (нужны реквизиты evdev) с минимальной установкой CentOS 6.x Я не могу запустить iptables

Блокирует ли блок таймера systemd следующий запуск, если процесс еще не завершен?

Я хочу использовать systemd для запуска команды каждые 5 минут. Тем не менее, существует риск, что иногда задача может занять более 5 минут. В этот момент система запустит второй экземпляр команды, то есть в конечном итоге будет запущено 2 процесса?

Можно ли сообщить systemd не запускать второй процесс, если первый не завершился? Если нет, то какие хорошие обходные пути?

Примечание. Я надеюсь, что ответ будет следующим: «Это поведение по умолчанию. Оно просто не документировано». Если это так, может кто-нибудь сказать мне, как подать сообщение об ошибке в отношении своих документов?

Примечание. Cron имеет аналогичную проблему, которая обсуждается в https://unix.stackexchange.com/a/173928/11244 . Я ищу эквивалент systemd.

Это поведение по умолчанию (и единственное). Он явно не документирован, но подразумевается логикой работы systemd.

systemd.timer (5) гласит:

Для каждого файла таймера должен существовать соответствующий файл юнита, описывающий устройство, которое активируется при истечении таймера .

systemd (1) , в свою очередь, описывает понятие единичных состояний и переходов между ними:

Единицы могут быть «активными» (подразумеваются начальные, связанные, подключенные, …, в зависимости от типа устройства, см. Ниже) или «неактивные» (что означает «остановленный», «несвязанный», «отключенный от сети» …), а также в процесс активации или деактивации , т. е. между двумя состояниями (эти состояния называются «активирующими», «дезактивирующими»).

Это означает, что запуск таймера приводит к «активации» согласующего устройства, то есть к его переходу в «активное» состояние.

Если соответствующий блок уже «активен» во время «активации» (для служебного блока это означает, что «основной процесс все еще запущен», если только в сервисном модуле нет Type=oneshot и RemainAfterExit=true ), это должно быть очевидно, что никаких действий не будет.