Как исправить ошибку “.service: Запрос на запуск повторяется слишком быстро.” для пользовательского сервиса?

Вопрос или проблема

Я учусь создавать сервисы с помощью systemd. Я получаю эту ошибку:

.service: Запрос на запуск повторяется слишком быстро.

Я больше не могу запустить сервис; он работал вчера. Что я делаю не так?

(root@Kundrum)-(11:03:19)-(~)
$nano /lib/systemd/system/swatchWATCH.service
 1 [Unit]
 2 Description=Мониторинг журналов и отправка отчетов на почту
 3 After=syslog.target network.target
 4
 5 [Service]
 6 Type=simple
 7 ExecStart=/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert --daemon
 8 Restart=on-failure
 9 StartLimitInterval=3
10 StartLimitBurst=100
11
12 [Install]
13 WantedBy=multi-user.target

StartLimitInterval и StartLimitBurst я добавил после попыток починить это.

Моя система – Debian 9.8 Stretch, все обновления.

Во-первых, если это пользовательский сервис, он должен находиться в /etc/systemd/system. /lib/systemd предназначен для файлов, предоставленных пакетами.

Во-вторых, скорее всего, сервис аварийно завершается, и systemd пытается перезапустить его многократно, поэтому вам нужно выяснить, почему он падает. Проверьте логи сервиса с помощью:

journalctl -e -u swatchWATCH

Возможно, там будет дополнительная информация в основном журнале:

journalctl -e

Наконец, проверьте, корректно ли он запускается непосредственно из командной строки:

/usr/bin/swatch –config-file=/home/kristjan/.swatchrc –input-record-separator=”\n \n ” –tail-file=/var/log/snort/alert –daemon

Я вижу, что вы используете опцию --daemon. Это часто ошибка с systemd. Systemd делает это за вас. Попробуйте удалить эту опцию.

Если ничего не поможет, посмотрите, что изменилось с тех пор, как вчера все работало.

Быстрое решение для “systemd[1]: SERVICE: Запрос на запуск повторяется слишком быстро” – это

systemctl reset-failed SERVICE
systemctl start SERVICE
systemctl status SERVICE

Актуальная цитата из man systemctl:

reset-failed [PATTERN…]

… счетчик лимита скорости запуска сбрасывается в ноль. Таким образом, если лимит запуска юнита (как указано с помощью
StartLimitIntervalSec=/StartLimitBurst=) превышен и юнит отказывается быть запущенным снова, используйте
эту команду, чтобы сделать его снова пригодным для запуска.”

В моем случае сообщение об ошибке было несколько вводящим в заблуждение. Причина сбоя оказалась в копировании между машинами. Строка

User=my_user 

в моем конфигурационном файле сервиса /etc/systemd/system/infinite_script.service была виновником.

На новом компьютере не было этого пользователя. Изменение на User=root решило эту проблему.

В моем случае часть ответа @Mark Stosberg сработала. Я удалил дополнительный атрибут –daemon из ExecStart файла юнита сервиса, и это сработало (в моем случае это была проблема nxserver с “.service: Запрос на запуск повторяется слишком быстро.”).

Ответ или решение

Чтобы решить проблему, связанную с ошибкой ".service: Start request repeated too quickly." при использовании системного демона systemd, нужно следовать нескольким шагам. Вот подробное руководство:

1. Проверка конфигурации сервиса

Во-первых, убедитесь, что файл вашего сервиса находится в правильном каталоге. Для пользовательских сервисов рекомендуется использовать /etc/systemd/system, так как /lib/systemd/system предназначен только для файлов, предоставляемых пакетами.

2. Анализ логов

Данная ошибка обычно возникает, если сервис аварийно завершает работу или не может стартовать из-за ошибки. Чтобы выяснить, что именно вызывает сбой, проверьте логи сервиса:

journalctl -e -u swatchWATCH

Также рекомендуется проверить основной журнал на наличие дополнительных сведений:

journalctl -e

3. Запуск сервиса вручную

Попробуйте запустить вашу команду вручную в терминале, чтобы убедиться, что она работает корректно:

/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert

4. Убедитесь в отсутствии опции --daemon

Обратите внимание, что использование опции --daemon в вашем случае может быть проблемой. systemd уже обрабатывает демонизацию. Убедитесь, что вы удалили эту опцию из вашего ExecStart.

5. Сбросить статус сервиса

Если сервис зафиксировал слишком много неудачных попыток запуска, вы можете сбросить его статус с помощью следующих команд:

systemctl reset-failed swatchWATCH.service
systemctl start swatchWATCH.service
systemctl status swatchWATCH.service

6. Проверка пользователя

Если в вашем сервисном файле указан параметр User= (например, User=my_user), убедитесь, что этот пользователь существует на системе. Если его нет, измените этот параметр на существующего пользователя или используйте User=root.

7. Анализ изменений

Если ваш сервис работал ранее, важно проанализировать, какие изменения были внесены с момента последнего успешного запуска. Это может дать ключ к пониманию проблемы.

Заключение

Следуя этим шагам, вы сможете диагностировать и исправить проблему, приводящую к ошибке ".service: Start request repeated too quickly." Убедитесь, что ваш сервис правильно настроен и работает без ошибок.

Оцените материал
Добавить комментарий

Капча загружается...