13/02/2025

systemd üzerine

Kendi kendine random olarak kapanan zabbix ile ilgileniyordum. Agent bir sekilde SIGTERM aliyor ve kapaniyor bir süre sonra yeniden baslatiliyordu.
Loglara bakinca sunu gördim

Feb 12 14:56:55 gitlab zabbix_agent2[88348]: zabbix_agent2 [88348]: ERROR: cannot open configuration file: open /etc/zabbix/zabbix_agent2.conf: no such file or directory

Ama zabbix agent 2 diye vbirseyin olmamasi gerekiyordu varsa bile acaba benim processi o mu kapatiyordu?
Servis tanimina baktim

cat /lib/systemd/system/zabbix-agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_agent2.conf"
EnvironmentFile=-/etc/default/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
User=zabbix
Group=zabbix
LimitNOFILE=8192

[Install]
WantedBy=multi-user.target

Burada bazi degiskenler dikkatimi cekti nedir bunlar diye arastirinca karsima ilginc seyler cikti.

Neydi bu $MAINPID ve $1 nereden geliyorlardi?

ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"

Bu satir $1 i kontrol ediyor (-n “$1”) ile ve eger bos degilse kill yapiyor.

MAINPID ise bir systemd degiskeni. Bir servisin ana process ID si.

hmm dedim peki MAINPID her ikisinde de ayni ise kill komutu tüm zabbixleri kill ediyordur bu nedenle benim servis te kill oluyordur.
buna bakmak icin

systemctl show --property MainPID zabbix-agent2
0

dedim ve sifir anlamsizdi hata mi var diye düsündüm ve durumuna baktim

systemctl show --property SubState,ActiveState zabbix-agent2
ActiveState=active
SubState=running

Ama bu durumda sacmaydi ve bende ne olursa olsun kill i önlemek icin zabbix-agent2 yi disable ve stop ettim.

Sonra acaba baska hangi degiskenleri takip edebilirim diye merak ettim ve doküman arastirdim sonuc.
https://www.freedesktop.org/software/systemd/man/latest/systemctl.html#

tüm servis özelliklerini listelemek icin

systemctl show zabbix-agent