JET Academy

Daemon nədir?

Daemon — Unix, Linux və Unix-like əməliyyat sistemlərində arxa planda (background) işləyən, istifadəçi ilə birbaşa qarşılıqlı əlaqəyə girməyən, sistem və ya şəbəkə xidmətlərini təmin edən xüsusi proses növüdür. Daemon-lar sistem yükləndiyi anda başlayır və kompüter söndürülənə qədər davamlı işləyir. Adı "Disk And Execution MONitor" ifadəsindən və ya yunan mifologiyasındaki yardımçı ruhlardan (daimon) gəlir. Windows sistemlərində bu tip proseslər "service" (xidmət) adlanır.

Daemon nədir?

Daemon istifadəçi interfeysi olmayan, terminal və ya desktop-a bağlı olmayan, müstəqil olaraq işləyən sistem prosesidir. Daemon-lar əməliyyat sisteminin əsas funksionallığını təmin edir və müxtəlif sistem xidmətlərini idarə edir — şəbəkə əlaqələri, scheduled tasks, logging, hardware monitoring, print service və s.

Daemon-ların əsas xüsusiyyətləri:

Arxa planda işləmə: Daemon-ların öz terminal və ya GUI-si yoxdur. İstifadəçi onları görməz, lakin onlar davamlı işləyir.

Parent process: Daemon-lar adətən init process-in (PID 1, systemd və ya SysVinit) "övladı" olur. Daemon özünü parent process-dən ayırır (detach) və müstəqil işləyir.

Session leader: Daemon yeni session və process group yaradır və controlling terminal-dan ayrılır.

Davamlılıq: Sistem yükləndiyi andan söndürülənə qədər işləyir. Bəzi daemon-lar tələb olunan anda (on-demand) başlayır.

Root privileges: Çox daemon-lar system-level funksionallıq təmin etdiyindən root (superuser) hüquqları ilə işləyir.

Naming convention: Unix/Linux-da daemon-ların adı adətən "d" hərfi ilə bitir — sshd, httpd, systemd, cron daemon (crond), syslogd və s.

Daemon-ların tarixi

Daemon konsepsiyası 1960-cı illərin sonunda MIT-də Project MAC və CTSS (Compatible Time-Sharing System) zamanı yarandı. Termin ilk dəfə 1963-cü ildə istifadə olundu.

Unix dövrü (1970-ci illər): Unix əməliyyat sistemində daemon-lar əsas komponent oldu. Ken Thompson və Dennis Ritchie daemon konsepsiyasını inkişaf etdirdilər. İlk daemon-lardan biri printer spooler idi.

BSD Unix (1970-1980-ci illər): Berkeley Software Distribution (BSD) Unix-də daemon-lar standartlaşdı. Şəbəkə daemon-ları (inetd - internet super-server) yarandı.

Linux dövrü (1990-ci ildən indiyə qədər): Linux kernel-də (1991, Linus Torvalds) daemon konsepsiyası qorundu və inkişaf etdi. systemd (2010) müasir init və daemon manager-ə çevrildi.

Daemon-ların növləri

1. System Daemon-lar

Sistem səviyyəsində işləyən, əməliyyat sisteminin əsas funksiyalarını təmin edən daemon-lar.

init / systemd:

  • PID 1, bütün digər proseslərin "valideyn"i
  • System initialization, service management
  • systemd müasir Linux-da dominant init system və daemon manager

syslogd / rsyslogd / journald:

  • System logging daemon
  • Kernel və proqramların log mesajlarını toplar və saxlayır
  • /var/log/ qovluğunda log faylları
  • journald systemd-nin logging xidmətidir

udevd:

  • Device manager daemon
  • Hardware device-ların dinamik aşkarlanması və konfiqurasiyası
  • USB, disk, şəbəkə kartı qoşulduqda udevd uyğun driver-ləri yükləyir və device node yaradır (/dev/sda, /dev/usb0)

acpid:

  • Advanced Configuration and Power Interface daemon
  • Power management events (laptop qapağı bağlandıqda, batareya aşağı düşdükdə)
  • Suspend, hibernate, shutdown funksiyaları

crond (cron daemon):

  • Scheduled task execution
  • Crontab fayllarına əsasən müəyyən vaxtda komandalar icra edir
  • Backup, log rotation, system maintenance taskları
  • Misal: Hər gecə saat 2:00-da backup script-i işlətmək

atd:

  • "at" command daemon
  • Bir dəfəlik scheduled tasks (cron-dan fərqli olaraq recurring deyil)

2. Network Daemon-lar

Şəbəkə xidmətlərini təmin edən daemon-lar.

sshd (SSH daemon):

  • Secure Shell server
  • Remote login və secure command execution
  • Port 22-də listen edir
  • SSH key authentication, encrypted connection

httpd / apache2 / nginx:

  • Web server daemon
  • HTTP/HTTPS requests xidmət edir
  • Web site və application hosting
  • apache2 və nginx ən populyar web server-lərdir

ftpd / vsftpd:

  • FTP (File Transfer Protocol) server daemon
  • File upload/download xidməti
  • vsftpd (Very Secure FTP Daemon) təhlükəsiz FTP server

smbd / nmbd (Samba):

  • SMB/CIFS protocol daemon
  • Windows file sharing Linux-da
  • Network printer sharing

named / bind:

  • DNS (Domain Name System) server daemon
  • Domain name resolution
  • Authoritative və recursive DNS server

dhcpd:

  • DHCP (Dynamic Host Configuration Protocol) server daemon
  • Network-də automatic IP address assignment

ntpd / chronyd:

  • Network Time Protocol daemon
  • System clock synchronization
  • Zaman serveri ilə sinxronizasiya

postfix / sendmail / exim:

  • Mail Transfer Agent (MTA) daemon
  • Email göndərmə və qəbul etmə
  • SMTP server

3. Hardware və Device Daemon-lar

Hardware ilə əlaqəli xidmətlər.

cupsd:

  • Common Unix Printing System daemon
  • Print job management
  • Printer discovery, driver management
  • Web interface (localhost:631)

bluetoothd:

  • Bluetooth device management
  • Bluetooth pairing, connection

avahi-daemon:

  • Zeroconf networking (mDNS/DNS-SD)
  • Service discovery local network-də
  • Printer, file share avtomatik aşkarlama

udisks2:

  • Disk management daemon
  • USB, external HDD auto-mounting
  • Disk info, partition management

4. Desktop və User Daemon-lar

Desktop environment və istifadəçi səviyyəsində işləyən daemon-lar.

pulseaudio / pipewire:

  • Audio server daemon
  • Sound mixing, routing
  • Müxtəlif audio source-ları idarə edir

NetworkManager:

  • Network connection management
  • Wi-Fi, Ethernet, VPN, mobile broadband
  • GUI və CLI interface (nmcli, nmtui)

dbus-daemon:

  • D-Bus message bus daemon
  • Inter-process communication (IPC)
  • Desktop application-lar arası mesaj mübadiləsi

gvfsd:

  • GNOME Virtual File System daemon
  • Remote file system access (SSH, FTP, SMB)

polkitd:

  • PolicyKit daemon
  • Privilege escalation və authorization
  • İstifadəçi müvəqqəti admin hüququ tələb etdikdə (password dialog)

5. Database və Application Daemon-lar

Xüsusi tətbiqlər və database-lər üçün daemon-lar.

mysqld / mariadb:

  • MySQL/MariaDB database server daemon
  • SQL database xidməti

postgresql:

  • PostgreSQL database server daemon

mongod:

  • MongoDB NoSQL database daemon

redis-server:

  • Redis in-memory data structure store daemon
  • Cache, session storage, message broker

dockerd:

  • Docker container runtime daemon
  • Container yaratma, idarə, şəbəkə

containerd:

  • Container runtime daemon (Docker və Kubernetes istifadə edir)

Daemon-ların işləmə prinsipi

Daemon yaradılması (Daemonization)

Bir proqramı daemon etmək üçün aşağıdakı addımlar icra olunur:

1. Fork: Parent process fork() system call ilə child process yaradır və sonra exit olur. Child process orphan olur və init tərəfindən adopt edilir.

2. Setsid: Child process setsid() ilə yeni session yaradır və session leader olur. Bu, controlling terminal-dan ayrılmağı təmin edir.

3. Fork yenə: Session leader yenidən fork edir və parent exit olur. Bu, daemon-ın terminal control etmə qabiliyyətini tamamilə aradan qaldırır.

4. Chdir: Working directory-ni root (/) və ya xüsusi qovluğa dəyişir. Bu, mounted file system-in unmount olunmasını maneə törətməsinin qarşısını alır.

5. Umask: File creation mask reset edir (umask(0)). Daemon-ın yaratdığı faylların icazələri düzgün olsun.

6. Close file descriptors: STDIN, STDOUT, STDERR və digər açıq file descriptor-lar bağlanır və ya /dev/null-a redirect olunur.

7. Signal handling: SIGHUP, SIGTERM kimi siqnallara handler təyin edilir. SIGHUP adətən konfiqurasiya reload üçün istifadə olunur.

8. PID file: Daemon öz PID-sini faylda saxlayır (/var/run/daemon.pid) ki, başqa instans başlatmasın və ya idarəetmə asan olsun.

Daemon lifecycle

Start: Init system (systemd) və ya manual olaraq başladılır.

Run: Arxa planda davamlı işləyir. Event-lərə reaksiya verir (network request, timer, signal).

Reload: SIGHUP siqnalı ilə konfiqurasiya yenidən yüklənir (restart olmadan).

Stop: SIGTERM və ya SIGKILL ilə dayandırılır. Graceful shutdown (məlumatı save edir, connection-ları bağlayır).

Restart: Stop + Start kombinasiyası.

systemd və daemon idarəetməsi

Müasir Linux distribusiyalarında systemd daemon-ları idarə edir.

systemd unit file: Hər daemon üçün .service faylı var (/etc/systemd/system/ və ya /lib/systemd/system/).

Nümunə: sshd.service



ini

[Unit]

Description=OpenSSH server daemon

After=network.target


[Service]

Type=notify

ExecStart=/usr/sbin/sshd -D

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure


[Install]

WantedBy=multi-user.target

systemctl komandaları:



bash

# Daemon-ı başlat

sudo systemctl start sshd


# Daemon-ı dayandır

sudo systemctl stop sshd


# Daemon-ı restart et

sudo systemctl restart sshd


# Konfiqurasiya reload (restart olmadan)

sudo systemctl reload sshd


# Daemon statusu

systemctl status sshd


# Daemon-ı boot-da auto-start et

sudo systemctl enable sshd


# Auto-start disable et

sudo systemctl disable sshd


# Bütün daemon-ların siyahısı

systemctl list-units --type=service


# Failed daemon-lar

systemctl --failed

journalctl - daemon log-ları:



bash

# sshd log-ları

journalctl -u sshd


# Real-time log (tail -f kimi)

journalctl -u sshd -f


# Son 100 sətir

journalctl -u sshd -n 100


# Bu gündən bəri

journalctl -u sshd --since today

SysVinit və daemon idarəetməsi (köhnə sistemlər)

Köhnə Linux distribusiyalarında SysVinit istifadə olunurdu.

/etc/init.d/ script-ləri: Hər daemon üçün shell script.



bash

# Daemon başlat

sudo /etc/init.d/ssh start


# Daemon dayandır

sudo /etc/init.d/ssh stop


# Restart

sudo /etc/init.d/ssh restart


# Status

sudo /etc/init.d/ssh status


# və ya service komutu

sudo service ssh start

Runlevel: 0 (halt), 1 (single-user), 2-5 (multi-user), 6 (reboot). Hər runlevel-də hansı daemon-ların işləməsi konfiqurasiya olunur.

Windows Service-ləri

Windows-da daemon-lara "service" deyilir və eyni prinsipdə işləyir.

Services.msc: Windows Service Manager GUI.

Service Control Manager (SCM): Windows-un service idarəetmə sistemi.

Komandalar:



cmd

# Service başlat

net start ServiceName

sc start ServiceName


# Service dayandır

net stop ServiceName

sc stop ServiceName


# Service statusu

sc query ServiceName


# Bütün service-lər

sc query type= service state= all

PowerShell:



powershell

Get-Service

Start-Service -Name "ServiceName"

Stop-Service -Name "ServiceName"

Restart-Service -Name "ServiceName"

Windows service nümunələri: Windows Update, Windows Defender, DHCP Client, DNS Client, Task Scheduler, Print Spooler, Windows Audio.

Daemon təhlükəsizliyi

Privilege separation: Daemon-lar minimal lazımi hüquqlarla işləməlidir. Root olaraq başlayıb sonra unprivileged user-ə switch etmək (privilege dropping).

Chroot jail: Daemon-ı məhdud file system-də işlətmək. Zərərli daemon digər sistemə giriş əldə edə bilməz.

SELinux / AppArmor: Mandatory access control. Daemon-ın yalnız lazımi file və resurslara girişi.

Firewall rules: Network daemon-ları yalnız lazımi portlardan əlçatan olmalıdır.

Regular updates: Daemon software-in son versiyası və security patch-lər.

Log monitoring: Daemon log-larında şübhəli aktivlik izləmək. fail2ban kimi vasitələr avtomatik block edə bilər.

Disable unused daemons: İstifadə olunmayan daemon-lar disable edilməlidir (attack surface azaltma).

Daemon troubleshooting

Daemon başlamır:



bash

# Status yoxla

systemctl status daemon-name


# Log-lara bax

journalctl -u daemon-name -n 50


# Config file syntax yoxla

daemon-name -t # (Apache: apachectl configtest)


# File permissions yoxla

ls -l /path/to/daemon/files


# Port conflict yoxla

sudo netstat -tulpn | grep :80

Daemon crash olur və restart olur:



bash

# Core dump yoxla

coredumpctl list

coredumpctl info PID


# Resource limit-lər yoxla

systemctl show daemon-name | grep Limit


# Memory və CPU istifadə

top, htop

Performance problem:



bash

# Daemon resource istifadəsi

ps aux | grep daemon-name

pidstat -p PID 1


# Strace - system call-ları izlə

sudo strace -p PID


# lsof - açıq file-lar

sudo lsof -p PID

Daemon-ların gələcəyi

Containerization: Docker və Kubernetes-də daemon-lar container-lərdə işləyir. systemd container-də də istifadə olunur.

Microservices: Monolithic daemon-lar əvəzinə kiçik, specialized service-lər. API əsaslı əlaqə.

Cloud-native: Cloud environment üçün optimallaşdırılmış daemon-lar. Stateless, scalable.

Security enhancement: Zero-trust architecture, least privilege, sandboxing.

Observability: Advanced monitoring, tracing, metrics. Prometheus, Grafana inteqrasiyası.

Nəticədə, daemon-lar Unix/Linux əməliyyat sistemlərinin əsas komponentidir və sistem xidmətlərini arxa planda təmin edir. Şəbəkə, log, hardware, database — hər sahədə daemon-lar vacib rol oynayır. systemd müasir daemon idarəetməsini sadələşdirib və gücləndirib. Daemon-ların düzgün konfiqurasiyası, təhlükəsizliyi və monitorinqi sistem administratorunun əsas vəzifəsidir. Windows-da service, Unix/Linux-da daemon — prinsip eynidir: arxa planda davamlı xidmət göstərən proseslər. Daemon-ların başa düşülməsi və idarə edilməsi server administrasiyası, DevOps və system engineering üçün fundamental bacarıqdır.

Tədris sahələrimiz barədə məlumat almaq üçün qeydiyyatdan keçin

Teqlər:

Digər tədris sahələri