Sari la conținut
Systemd: gestionarea serviciilor pe serverele Linux moderne

Systemd: gestionarea serviciilor pe serverele Linux moderne

Systemd este managerul de servicii și inițializare standard pe toate distribuțiile Linux majore: Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS Stream și altele. Înlocuiește vechiul sistem SysV init și oferă o interfață unificată pentru pornirea, oprirea și monitorizarea serviciilor, gestionarea jurnalelor și programarea sarcinilor.

Pe un server de hosting, cunoașterea comenzilor systemctl de bază este esențială: repornirea nginx după o modificare de configurație, verificarea de ce a eșuat un serviciu, examinarea jurnalelor recente și configurarea unui serviciu să pornească automat la boot sunt operațiuni zilnice.

Systemd: gestionarea serviciilor pe serverele Linux moderne

Systemd organizează componentele sistemului în unități (units): servicii (.service), montări (.mount), dispozitive (.device), socket-uri (.socket) și timere (.timer). Cele mai frecvent utilizate sunt unitățile de tip serviciu.

Comenzi esențiale systemctl

# Porniti un serviciu
sudo systemctl start nginx

# Opriti un serviciu
sudo systemctl stop nginx

# Reporniti un serviciu (stop + start)
sudo systemctl restart nginx

# Reincarcati configuratia fara repornire completa (daca serviciul suporta)
sudo systemctl reload nginx

# Activati pornirea automata la boot
sudo systemctl enable nginx

# Dezactivati pornirea automata la boot
sudo systemctl disable nginx

# Activati SI porniti simultan
sudo systemctl enable --now nginx

# Verificati starea unui serviciu
sudo systemctl status nginx

# Listati toate serviciile active
systemctl list-units --type=service --state=active

# Listati serviciile care au esuat
systemctl list-units --type=service --state=failed

Examinarea jurnalelor cu journalctl

Journalctl este interfața pentru citirea jurnalului binar systemd (journald). Este preferabil față de grep în fișiere text deoarece suportă filtrare avansată, afișare în timp real și filtrare după prioritate:

# Jurnalul complet al unui serviciu
journalctl -u nginx

# Ultimele 50 de linii
journalctl -u nginx -n 50

# Urmărire in timp real (ca tail -f)
journalctl -u nginx -f

# Jurnal din boot-ul curent
journalctl -u nginx -b

# Jurnal din boot-ul anterior
journalctl -u nginx -b -1

# Filtrare dupa prioritate (erori si mai grave)
journalctl -u nginx -p err

# Filtrare dupa timp
journalctl -u nginx --since "1 hour ago"
journalctl -u nginx --since "2026-04-07 10:00" --until "2026-04-07 12:00"

# Jurnal mai multor servicii simultan
journalctl -u nginx -u php8.3-fpm -u mysql

Crearea unui unit file de serviciu custom

Dacă rulați o aplicație custom (un server Node.js, un script Python etc.), puteți crea un unit file systemd pentru a gestiona aplicația ca serviciu:

# Creati fisierul de serviciu
sudo nano /etc/systemd/system/aplicatie-mea.service

Conținut exemplu pentru un server Node.js:

[Unit]
Description=Aplicatia mea Node.js
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/aplicatie
ExecStart=/usr/bin/node /var/www/aplicatie/server.js
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment=NODE_ENV=production PORT=3000

[Install]
WantedBy=multi-user.target
# Reincarcati configuratia systemd
sudo systemctl daemon-reload

# Activati si porniti serviciul
sudo systemctl enable --now aplicatie-mea

# Verificati starea
sudo systemctl status aplicatie-mea

Modificarea configurației unui serviciu existent (drop-in files)

Nu modificați direct fișierele de serviciu din /lib/systemd/system/, deoarece sunt suprascrise la actualizarea pachetelor. Folosiți drop-in files în /etc/systemd/system/:

# Metoda recomandata: editare cu systemctl edit
sudo systemctl edit nginx

# Aceasta deschide un editor pentru /etc/systemd/system/nginx.service.d/override.conf
# Adaugati de exemplu o limita de memorie:
[Service]
MemoryLimit=512M
CPUQuota=50%

# Dupa salvare, reincarcati
sudo systemctl daemon-reload
sudo systemctl restart nginx

Timere systemd: alternativa modernă la cron

Timerele systemd sunt alternativa modernă la cron jobs, cu avantajul că loghează execuțiile în journald și pot fi activate/dezactivate cu systemctl:

# Creati timer-ul
sudo nano /etc/systemd/system/backup-zilnic.timer
[Unit]
Description=Backup zilnic la 03:00

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
# Creati serviciul corespunzator
sudo nano /etc/systemd/system/backup-zilnic.service

[Unit]
Description=Script de backup zilnic

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
# Activati timer-ul
sudo systemctl daemon-reload
sudo systemctl enable --now backup-zilnic.timer

# Verificati urmatoarea executie programata
systemctl list-timers backup-zilnic.timer

Verificarea target-urilor (niveluri de rulare)

# Target-ul curent (echivalentul runlevel)
systemctl get-default

# Listati toate serviciile dintr-un target
systemctl list-dependencies multi-user.target

# Analizati timpul de boot al serviciilor
systemd-analyze blame | head -20

# Diagrama boot
systemd-analyze plot > boot-analysis.svg

Concluzie

Systemd oferă o interfață unificată și consistentă pentru gestionarea serviciilor pe orice distribuție Linux modernă. Comenzile systemctl pentru pornire, oprire și verificare status, combinate cu journalctl pentru examinarea jurnalelor, acoperă cel mai frecvent scenarii de administrare a unui server de hosting. Unit files custom și timerele systemd sunt instrumente puternice pentru automatizarea sarcinilor de server fără dependența de configurări cron separate.

Serverele noastre VPS rulează AlmaLinux 9 cu systemd complet configurat, oferind un mediu familiar și consistent pentru administrarea serviciilor de hosting.

Înapoi sus
Your Cart

Your cart is empty.