Systemd Service Yaratish
systemd — bu zamonaviy Linux tizimlarida xizmatlarni (service), jarayonlarni va resurslarni boshqarish uchun ishlatiladigan init tizimi. Systemd yordamida o‘z skriptlaringiz yoki dasturlaringizni xizmat sifatida avtomatik ishga tushirish, to‘xtatish va monitoring qilish mumkin.
Systemd Service Foydalari
- Avtomatik ishga tushirish (boot paytida)
- Xizmat holatini monitoring qilish
- Loglarni avtomatik saqlash (journalctl)
- Xizmatlarni bog‘lash va tartibga solish (dependencies)
- Qayta ishga tushirish (restart policies)
Oddiy Systemd Service Yaratish
1. Service faylini yaratish
Service fayllari /etc/systemd/system/ katalogida .service kengaytmali bo‘ladi.
Misol: myapp.service
[Unit]
Description=My Custom Application
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/user/myapp.py
Restart=on-failure
User=user
[Install]
WantedBy=multi-user.target
2. Service faylini tizimga qo‘shish
Faylni saqlagandan so‘ng, systemd-ga xabar berish:
sudo systemctl daemon-reload
3. Xizmatni ishga tushirish va boshqarish
sudo systemctl start myapp.service # Xizmatni ishga tushirish
sudo systemctl enable myapp.service # Boot paytida avtomatik ishga tushirish
sudo systemctl status myapp.service # Holatini tekshirish
sudo systemctl stop myapp.service # To‘xtatish
sudo systemctl restart myapp.service # Qayta ishga tushirish
4. Loglarni ko‘rish
journalctl -u myapp.service
Service Fayl Parametrlari
- Description: Xizmat haqida qisqacha ma’lumot
- After: Qaysi xizmatlardan keyin ishga tushishi
- Type:
simple,forking,oneshot,notify,idle - ExecStart: Ishga tushiriladigan buyruq
- Restart: Qayta ishga tushirish siyosati (
on-failure,always,no) - User: Qaysi foydalanuvchi nomidan ishga tushishi
- Environment: Muhit o‘zgaruvchilari
- WorkingDirectory: Ishchi katalog
Advanced Misollar
Muhit o‘zgaruvchisi bilan
[Service]
Environment="APP_ENV=production"
ExecStart=/home/user/app.sh
Maxsus katalogda ishga tushirish
[Service]
WorkingDirectory=/home/user/app/
ExecStart=/usr/bin/node server.js
Xizmatlar orasida bog‘liqlik
[Unit]
Requires=mysql.service
After=mysql.service
Qayta ishga tushirish siyosati
[Service]
Restart=always
RestartSec=5
Foydali Buyruqlar
- Xizmatlar ro‘yxati:
systemctl list-units --type=service - Xizmatni o‘chirish:
sudo systemctl disable myapp.service - Xizmatni o‘chirish va faylni o‘chirish:
sudo systemctl stop myapp.service
sudo systemctl disable myapp.service
sudo rm /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
Foydali Havolalar
- Systemd documentation
man systemd.serviceman systemctl
Systemd yordamida xizmatlarni boshqarish Linux tizimini avtomatlashtirish va barqaror ishlashini ta’minlash uchun juda muhim. To‘g‘ri sozlash va monitoring orqali tizimni samarali boshqarishingiz mumkin.