Прескочи на садржај
EVI Solutions

Systemd сервис неће да се покрене: како да пронађете узрок

Средње 15 мин Ažurirano:

Кратак одговор

Када systemd сервис неће да се покрене, прво проверите статус командом `systemctl status ime-servisa` и прегледајте логове помоћу `journalctl -u ime-servisa`. Узрок може бити грешка у конфигурацији, недостајући фајл, погрешне дозволе или неуспешна зависност. Следите кораке за систематску дијагностику.

Како се проблем препознаје

  • Сервис је у стању фаилед или инацтиве
  • Покретање сервиса враћа грешку
  • Сервис се покрене па одмах падне
  • Апликација на порту не одговара
  • У логовима се појављују поруке о грешци

Најчешћи узроци

Грешка у конфигурацији сервиса

Неисправан унит фајл, погрешна путања до извршног фајла или недостајући параметри спречавају покретање.

Недостајуће дозволе или власништво

Сервис можда нема права да чита конфигурацију, пише у директоријум или приступи мрежи.

Зависност није испуњена

Сервис зависи од другог сервиса, мреже или монтирања диска који нису доступни у тренутку покретања.

Порт је заузет

Друга апликација већ користи порт који сервис покушава да заузме.

Недостајући фајлови или библиотеке

Извршни фајл, конфигурациони фајл или дељена библиотека не постоје на очекиваној локацији.

Решење корак по корак

  1. 1

    Проверите статус сервиса

    Покрените systemctl status ime-servisa. Обратите пажњу на стање (фаилед, инацтиве) и последње поруке о грешци. Статус често даје први наговештај узрока.

  2. 2

    Прегледајте логове

    Користите journalctl -u ime-servisa -xe за детаљне логове. Опција -e скаче на крај, а -x даје објашњења. Ако је сервис скоро пао, додајте --since "10 min ago".

  3. 3

    Проверите унит фајл

    Покрените systemctl cat ime-servisa да видите садржај унит фајла. Уверите се да су путање до извршног фајла и конфигурације тачне и да нема синтаксних грешака.

  4. 4

    Тестирајте извршни фајл ручно

    Извршите команду из ExecStart ручно као корисник наведен у User=. Ако ручно ради, проблем је у окружењу сервиса (променљиве, дозволе).

  5. 5

    Проверите дозволе и власништво

    Уверите се да корисник сервиса има права читања и писања на потребне директоријуме. Користите ls -l и namei -l за проверу путање.

  6. 6

    Проверите зависности

    Покрените systemctl list-dependencies ime-servisa. Уверите се да су све зависности активне. Можете ручно покренути зависни сервис и поново покушати.

  7. 7

    Проверите да ли је порт заузет

    Користите sudo ss -tulnp | grep :PORT да видите који процес држи порт. Ако је заузет, проверите који је процес у питању па га зауставите само ако је безбедно, или промените порт у конфигурацији.

  8. 8

    Поново учитајте systemd и покрените сервис

    Након измена унит фајла, покрените systemctl daemon-reload, затим systemctl start ime-servisa. Поново проверите статус.

Ако ништа не помогне

Ако сервис и даље неће да се покрене, проверите да ли постоји ограничење ресурса (нпр. LimitNOFILE) или SELinux/AppArmor. Ако тестирате SELinux, привремено га пребаците у permissive режим (setenforce 0) само на тест систему и одмах вратите у енфорцинг режим (setenforce 1); не искључујте заштиту трајно на продукционом систему. Погледајте и системске логове (journalctl -b) за грешке које нису везане директно за сервис. За сложене случајеве, покрените команду из ExecStart под strace -f да видите где се зауставља.

Како да спречите да се понови

  • Редовно ажурирајте systemd и сервисе
  • Користите `systemd-analyze verify` за проверу унит фајлова
  • Поставите надзор над кључним сервисима
  • Водите евиденцију о изменама конфигурације

Када је боље позвати стручњака

Ако сте испробали све кораке и сервис и даље не ради, или ако немате приступ root налогу, обратите се IT подршци. Они могу дубље анализирати систем и безбедно применити напредне технике.

Одржавање IT инфраструктуре · Сервери, мреже, backup, безбедност и хелпдеск

Честа питања

Како да видим све логове за сервис?

Користите `journalctl -u ime-servisa` без опције `-e` да видите све записе. Можете додати `-f` да пратите логове у реалном времену.

Шта значи грешка "статус=203/EXEC"?

Означава да systemd није могао да изврши команду из `ExecStart`. Проверите путању, дозволе и да ли фајл постоји.

Како да променим корисника под којим се сервис извршава?

Измените `User=` у унит фајлу (најбоље путем `systemctl edit ime-servisa`), затим покрените `systemctl daemon-reload` и рестартујте сервис.

Подели
Нисте нашли решење?AI IT асистент је доступан 24/7. Опишите проблем или пошаљите screenshot грешке и добићете упутство за ваш случај.Питајте AI IT асистента