systemd, используя 100% моего процессора, если нет, если я запустил его без systemd

Я использую Debian Jessie с последними обновлениями. Я сделал службу systemd для запуска сценария при запуске моего сервера. Вот его конфигурация:

[Unit] Description=(my description) [Service] ExecStart=/usr/bin/bot Restart=restart-always [Install] WantedBy=multi-user.target 

/usr/bin/bot – это скрипт, исполняющий исполняемый файл Mono. Это состоит из:

 #!/bin/bash (cd /path/to/my/executable && mono bot.exe) 

(Я заменил путь здесь, но тот, что на моем скрипте верен.)

Когда я обычно запускаю скрипт /usr/bin/bot (просто /usr/bin/bot на моем терминале), он работает как ожидалось. top сообщает, что он использует от 0 и, скажем, 20% от моего процессора, что нормально. Но когда я начинаю работу с service bot start , top говорит, что он всегда использует не менее 100% моего процессора.

В обоих случаях bot работает как ожидалось.

Что может объяснить такую ​​большую разницу в использовании ЦП?

Спасибо.

2 Solutions collect form web for “systemd, используя 100% моего процессора, если нет, если я запустил его без systemd”

Я «исправил это», поставив своего bot под screen так:

 [Unit] Description=(my description) [Service] RemainAfterExit=yes ExecStart=/usr/bin/screen -dmS bot /usr/bin/bot Restart=restart-always [Install] WantedBy=multi-user.target 

Я не знаю, почему мой процесс на экране фиксирует его высокий уровень использования ЦП, но, эй, он работает.

Проблема не находится в systemd.

Systemd запускает процесс без stdin (= / dev / null). Все системные вызовы read() завершаются немедленно (с нормальным stdin, read() блокируется до тех пор, пока не появятся новые данные). В обычной практике read() вызывается в недостроенном цикле, что приводит к огромному использованию ЦП. Чтобы подтвердить это, попробуйте подключиться к запущенному процессу с помощью strace -p <pid> .

Процесс должен быть адаптирован для запуска без stdin или использования некоторых оболочек, таких как предложенная команда screen или nohup

  • Как я могу систематизировать цели для остановки служб от других целей?
  • Как добавить зависимость от интернета к службе с помощью systemd on arch?
  • Просмотр stdout / stderr службы systemd
  • синхронизировать время на удаленном сервере
  • Обнаружение массива MDADM Замедление загрузки - почему?
  • Какая системная цель или служба заполняет / dev / disk / by-uuid на el7?
  • Идентификатор сервера MySQL не устанавливается с помощью Fedora 16
  • Как ограничить права пользователя sudo для журналаctctl на конкретный блок?
  • Проверка файловой системы ошибок
  • Правильное завершение работы компьютера с X сеанса
  • SIGKILLing после льготного периода
  • Linux и Unix - лучшая ОС в мире.