Управление на услуги със systemctl на Вашия VPS
На Вашия VPS работят програми, които трябва да са налични постоянно: SSH сървърът, уеб сървърът, базата данни. Такива програми се наричат услуги. В Debian, Ubuntu, AlmaLinux и Rocky Linux те се стартират и наблюдават от systemd, а Вие управлявате systemd с командата systemctl. Ето командите, които ще Ви трябват най-често.
Състоянието на услуга
systemctl status nginx
Разширението .service може да се пропусне. Четете изхода отгоре надолу:
- Точката пред името е зелена, когато услугата работи, бяла, когато е спряна, и червена, когато е неуспешна.
- Loaded показва дали услугата се стартира при зареждане на системата (
enabled) или не (disabled). - Active показва дали тя работи в момента (
active (running)), спряна е (inactive (dead)) или е неуспешна (failed), както и от кога. - Най-отдолу са последните редове от журнала на услугата. Често там вече е посочено защо нещо не работи.
Стартиране, спиране и презареждане
| Команда | Какво прави |
|---|---|
sudo systemctl start nginx | Стартира веднага |
sudo systemctl stop nginx | Спира веднага |
sudo systemctl restart nginx | Спира и стартира отново |
sudo systemctl reload nginx | Прочита отново конфигурацията, без да спира |
Разликата между restart и reload е важна. При restart услугата спира за кратко и ако в новата конфигурация има грешка, тя няма да стартира отново и Вашият уебсайт ще бъде недостъпен. При reload услугата продължава да работи; при грешка nginx запазва старата конфигурация. Затова първо проверете конфигурацията (sudo nginx -t, sudo sshd -t) и след това използвайте reload. Не всяка услуга поддържа reload; sudo systemctl reload-or-restart избира сам.
При зареждане на системата: enable и disable
Стартирането и „стартирането при зареждане на системата“ са две различни неща. Ако стартирате услуга само със start, след следващото рестартиране, например заради обновяване на ядрото, тя отново няма да работи.
| Команда | Какво прави |
|---|---|
sudo systemctl enable --now nginx | Стартира веднага и занапред при всяко зареждане на системата. Използвайте това за нова услуга |
sudo systemctl disable --now nginx | Спира веднага и вече не стартира при зареждане на системата |
systemctl is-enabled nginx | Показва дали услугата се стартира при зареждане на системата |
Какво не е наред? И какво работи?
systemctl --failed
Това показва всички неуспешни услуги. Списъкът трябва да е празен. Проверявайте го след всяко рестартиране и всяко обновяване. След като отстраните проблема, премахнете известието с sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningпоказва всички работещи услуги. Ако не познавате някоя от тях, проверете какво прави. Услуга, която не Ви е нужна, е ненужна входна точка.systemctl list-timersпоказва планираните задачи на systemd, кога са се изпълнили за последно и кога ще се изпълнят отново. Така например виждате дали работят таймерите за автоматични обновявания или за подновяване на сертификати.
Журналите на услуга
Ако искате да видите повече от няколкото реда в systemctl status, използвайте journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Първата команда показва всичко от nginx през последния час, а втората само грешките след последното рестартиране. Още команди ще намерите в Четене на журнали с journalctl и docker logs.
Промяна на настройките на услуга
Никога не променяйте unit файла на пакет (в /usr/lib/systemd/system/), защото обновяване ще го презапише. Използвайте sudo systemctl edit nginx: това създава малък файл само с Вашите промени и кара systemd да го прочете отново. Какво е окончателно в сила, ще видите със systemctl cat nginx.
sudo systemctl reboot или чрез Рестартиране в екрана на VPS. Принудителното изключване е като изваждане на щепсела: услугите нямат възможност да спрат правилно и базата данни може да се повреди. Вижте Екранът на VPS: включване и изключване, графики, система и журнал.В AlmaLinux и Rocky Linux systemctl работи точно по същия начин, само някои услуги се казват различно: там SSH услугата се казва sshd вместо ssh, Apache се казва httpd, а защитната стена firewalld.
Искате да научите повече? Преминете безплатния курс VPS и администриране на Linux сървъри, урок 6.1 Управление на услуги със systemd или урок 6.2 Четене на журнали с journalctl.
