Кратак одговор
Када systemd сервис неће да се покрене, прво проверите статус командом `systemctl status ime-servisa` и прегледајте логове помоћу `journalctl -u ime-servisa`. Узрок може бити грешка у конфигурацији, недостајући фајл, погрешне дозволе или неуспешна зависност. Следите кораке за систематску дијагностику.
Како се проблем препознаје
- Сервис је у стању фаилед или инацтиве
- Покретање сервиса враћа грешку
- Сервис се покрене па одмах падне
- Апликација на порту не одговара
- У логовима се појављују поруке о грешци
Најчешћи узроци
Грешка у конфигурацији сервиса
Неисправан унит фајл, погрешна путања до извршног фајла или недостајући параметри спречавају покретање.
Недостајуће дозволе или власништво
Сервис можда нема права да чита конфигурацију, пише у директоријум или приступи мрежи.
Зависност није испуњена
Сервис зависи од другог сервиса, мреже или монтирања диска који нису доступни у тренутку покретања.
Порт је заузет
Друга апликација већ користи порт који сервис покушава да заузме.
Недостајући фајлови или библиотеке
Извршни фајл, конфигурациони фајл или дељена библиотека не постоје на очекиваној локацији.
Решење корак по корак
- 1
Проверите статус сервиса
Покрените
systemctl status ime-servisa. Обратите пажњу на стање (фаилед, инацтиве) и последње поруке о грешци. Статус често даје први наговештај узрока. - 2
Прегледајте логове
Користите
journalctl -u ime-servisa -xeза детаљне логове. Опција-eскаче на крај, а-xдаје објашњења. Ако је сервис скоро пао, додајте--since "10 min ago". - 3
Проверите унит фајл
Покрените
systemctl cat ime-servisaда видите садржај унит фајла. Уверите се да су путање до извршног фајла и конфигурације тачне и да нема синтаксних грешака. - 4
Тестирајте извршни фајл ручно
Извршите команду из
ExecStartручно као корисник наведен уUser=. Ако ручно ради, проблем је у окружењу сервиса (променљиве, дозволе). - 5
Проверите дозволе и власништво
Уверите се да корисник сервиса има права читања и писања на потребне директоријуме. Користите
ls -lиnamei -lза проверу путање. - 6
Проверите зависности
Покрените
systemctl list-dependencies ime-servisa. Уверите се да су све зависности активне. Можете ручно покренути зависни сервис и поново покушати. - 7
Проверите да ли је порт заузет
Користите
sudo ss -tulnp | grep :PORTда видите који процес држи порт. Ако је заузет, проверите који је процес у питању па га зауставите само ако је безбедно, или промените порт у конфигурацији. - 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` и рестартујте сервис.