UNIX Köleleri: Daemons?

Daemonlar, Linux işletim sisteminde bizim için deli gibi çalışan arkaplan köleleridir; ‘day-mon’ veya ‘diamond’ olarak telaffuz edilirler. Daha tatlı bir tanım için; Deamonlar, arka planda unique amaçları yerine getirmek için sürekli çalışan utility programlardır. Windows’ta bunlar ‘services’ olarak bilinir; Mac işletim sistemi UNIX tabanlı olduğundan dolayı burada da Daemon olarak adlandırılırlar. 

Linux’ta sonu ‘d’ ile biten bir processe denk geldiyseniz bilin ki bu bir Daemon programıdır. Linux için bu genel bir kuraldır. Çalışan Daemonları yakalamak için şu komutlardan birini kullanabiliriz:

  • ps 
  • top
  • htop
  • pstree

pstree komutu ile çalışan processleri listeleyelim. 

burak@burak-BOHB-WAX9:~$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─apache2───2*[apache2───26*[{apache2}]]
        ├─avahi-daemon───avahi-daemon
        ├─blkmapd
        ├─bluetoothd
        ├─colord───2*[{colord}]
        ├─containerd───9*[{containerd}]
        ├─cron
        ├─cups-browsed───2*[{cups-browsed}]
        ├─cupsd───dbus
        ├─dbus-daemon
        ├─dockerd───9*[{dockerd}]
        ├─gdm3─┬─gdm-session-wor─┬─gdm-x-session─┬─Xorg───4*[{Xorg}]
        │      │                 │               ├─gnome-session-b─┬─ssh-agent
        │      │                 │               │                 └─2*[{gnome-+
        │      │                 │               └─2*[{gdm-x-session}]
        │      │                 └─2*[{gdm-session-wor}]
        │      └─2*[{gdm3}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─irqbalance───{irqbalance}
        ├─2*[kerneloops]
        ├─networkd-dispat
        ├─polkitd───2*[{polkitd}]
        ├─postgres───6*[postgres]
        ├─redis-server───3*[{redis-server}]
        ├─rpc.idmapd
        ├─rpc.mountd
        ├─rpcbind
        ├─rsyslogd───3*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─snapd───13*[{snapd}]
        ├─switcheroo-cont───2*[{switcheroo-cont}]
        ├─systemd─┬─(sd-pam)
        │         ├─at-spi-bus-laun─┬─dbus-daemon
        │         │                 └─3*[{at-spi-bus-laun}]
        │         ├─at-spi2-registr───2*[{at-spi2-registr}]
        │         ├─dbus-daemon
        │         ├─dconf-service───2*[{dconf-service}]
        │         ├─evolution-addre───5*[{evolution-addre}]
        │         ├─evolution-calen───8*[{evolution-calen}]
        │         ├─evolution-sourc───3*[{evolution-sourc}]
        │         ├─gjs───6*[{gjs}]
        │         ├─gnome-calculato───2*[{gnome-calculato}]
        │         ├─gnome-control-c───2*[{gnome-control-c}]
        │         ├─gnome-session-b─┬─evolution-alarm───5*[{evolution-alarm}]
        │         │                 ├─gsd-disk-utilit───2*[{gsd-disk-utilit}]
        │         │                 ├─update-notifier───3*[{update-notifier}]
        │         │                 └─3*[{gnome-session-b}]
        │         ├─gnome-session-c───{gnome-session-c}
        │         ├─gnome-shell─┬─firefox─┬─4*[Isolated Web Co───20*[{Isolated +
        │         │             │         ├─Isolated Web Co───21*[{Isolated Web+
        │         │             │         ├─Privileged Cont───18*[{Privileged C+
        │         │             │         ├─RDD Process───2*[{RDD Process}]
        │         │             │         ├─Socket Process───5*[{Socket Process+
        │         │             │         ├─3*[Web Content───14*[{Web Content}]+
        │         │             │         ├─WebExtensions───21*[{WebExtensions}+
        │         │             │         └─100*[{firefox}]
        │         │             ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
        │         │             │             ├─ibus-engine-sim───2*[{ibus-engi+
        │         │             │             ├─ibus-extension-───3*[{ibus-exte+
        │         │             │             └─2*[{ibus-daemon}]
        │         │             └─10*[{gnome-shell}]
        │         ├─gnome-shell-cal───5*[{gnome-shell-cal}]
        │         ├─gnome-terminal-─┬─bash───pstree
        │         │                 └─5*[{gnome-terminal-}]
        │         ├─goa-daemon───3*[{goa-daemon}]
        │         ├─goa-identity-se───2*[{goa-identity-se}]
        │         ├─gpg-agent
        │         ├─gsd-a11y-settin───3*[{gsd-a11y-settin}]
        │         ├─gsd-color───3*[{gsd-color}]
        │         ├─gsd-datetime───3*[{gsd-datetime}]
        │         ├─gsd-housekeepin───3*[{gsd-housekeepin}]
        │         ├─gsd-keyboard───3*[{gsd-keyboard}]
        │         ├─gsd-media-keys───3*[{gsd-media-keys}]
        │         ├─gsd-power───3*[{gsd-power}]
        │         ├─gsd-print-notif───2*[{gsd-print-notif}]
        │         ├─gsd-printer───2*[{gsd-printer}]
        │         ├─gsd-rfkill───2*[{gsd-rfkill}]
        │         ├─gsd-screensaver───2*[{gsd-screensaver}]
        │         ├─gsd-sharing───3*[{gsd-sharing}]
        │         ├─gsd-smartcard───4*[{gsd-smartcard}]
        │         ├─gsd-sound───3*[{gsd-sound}]
        │         ├─gsd-usb-protect───3*[{gsd-usb-protect}]
        │         ├─gsd-wacom───2*[{gsd-wacom}]
        │         ├─gsd-wwan───3*[{gsd-wwan}]
        │         ├─gsd-xsettings───3*[{gsd-xsettings}]
        │         ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
        │         ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
        │         ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
        │         ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
        │         ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]
        │         ├─gvfsd─┬─gvfsd-trash───3*[{gvfsd-trash}]
        │         │       └─2*[{gvfsd}]
        │         ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        │         ├─gvfsd-metadata───2*[{gvfsd-metadata}]
        │         ├─ibus-portal───2*[{ibus-portal}]
        │         ├─ibus-x11───2*[{ibus-x11}]
        │         ├─nautilus───5*[{nautilus}]
        │         ├─org.gnome.Chara───7*[{org.gnome.Chara}]
        │         ├─pulseaudio───4*[{pulseaudio}]
        │         ├─seahorse───3*[{seahorse}]
        │         ├─tracker-miner-f───4*[{tracker-miner-f}]
        │         ├─xdg-desktop-por───5*[{xdg-desktop-por}]
        │         ├─xdg-desktop-por───3*[{xdg-desktop-por}]
        │         ├─xdg-document-po───7*[{xdg-document-po}]
        │         └─xdg-permission-───2*[{xdg-permission-}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─thermald───3*[{thermald}]
        ├─udisksd───4*[{udisksd}]
        ├─unattended-upgr───{unattended-upgr}
        ├─upowerd───2*[{upowerd}]
        ├─whoopsie───2*[{whoopsie}]
        └─wpa_supplicant

acpid blkmapd bluetoothd rsyslogd snapd systemd bizim için listelenen bazı Daemonlar.

Peki bir Daemon nasıl oluşturulur?

Daemonlar arkaplanda genellikle kullanıcının kontrolü dışında çalışan processlerdir. Bundan dolayı Daemonlar terminal ile kontrol edilemezler. Processler ise basitçe arka planda calışan programlardır. Processler farklı formlarda olabilir running, sleeping veya bir zombie. Linuxta üç farklı process tipi vardır: interactive, batch ve daemon. Interactive ve batch processler birer Daemon degildir. Interactive batch processler genellikle terminalden bir user inputu ile ayaga kalkarlar fakat Daemonlar icin boyle bir duruma ihtiyaç yoktur. Daemonlar system önyüklemesi tamamlandığında system initialization process, forking yöntemi ile demonlari oluşturmaya, spawn etmeye başlar.

Unique Daemonları daha iyi anlamak için calışan processlerde 'd' ile bitenleri araştırabilirsiniz. Bazı temel Daemonları burada belirtmek isterim: systemd, rsyslogd, syslogd, udisksd, logind, httpd, sshd, ftpd, crond


 


İletişime geçmek, yorum bırakmak veya hatalarımı düzetlmek istersen mail atabilirsin.

iletişim için tıklama yeri