Belajar Linux OS - #4 Daemons
Tags: indonesia, linux, beginners
Published: 2021-10-02 15:11:16

(baca: _"Day-mens"_), adalah bagian dari OS juga, dan _daemons_ adalah nama lain dari process-process yang berjalan/bekerja di belakang layar (background).

Contohnya, ketika kita login atau ketika kita mengetikkan perintah print, login atau printing service itu jalan sebagai sebuah _daemon_.

Di Linux, kita bisa liat daftar process-process yang sedang berjalan dengan mengetikkan perintah `ps -ef`. Tiap process punya identitas uniknya masing-masing yang disebut `PID` yang berarti `Process IDentifier`.

Salah satu _process_ yang krusial di Linux adalah `init` process, yang bisa dibilang sebagai _kakek_ dari semua process-process, kenapa kok dibilang _kakek?_ Karena setiap process yang jalan, kecuali kernel, adalah _(child) turunan_ dari `init` process ini dan bisa dilacak ulang sampai `init`. Kernelnya sendiri jalan di `PID 0` sedangkan `init` process jalan di `PID 1`.

Secara teknis, sebuah _daemon_ adalah _parent_ process yang mulai berjalan ketika boot OS telah diinisialisasi dan booting. Jadi _daemons_ telah dikonfigurasi untuk jalan dari `/etc/initd` yang mana `initd` berarti **initial daemons**. Ini berarti kalau `initd` biasanya punya `PPID (Parent Process IDentifier) 1`. Jadi kita bisa cari daemons dengan cara mencari process yang memiliki `PPID 1`.

Coba ketik perintah `ps -ef | awk '$3 == 1'`.
```
$ ps -ef | awk '$3 == 1'
root       278     1  0 14:29 ?        00:00:00 /lib/systemd/systemd-udevd
root       552     1  0 14:29 ?        00:00:00 /sbin/dhclient -1 -v -pf /run/dhclient.ens3.pid -lf /var/lib/dhcp/dhclient.ens3.leases -I -df /var/lib/dhcp/dhclient6.ens3.leases ens3
root       603     1  0 14:29 ?        00:00:00 /sbin/rpcbind -f -w
root       627     1  0 14:29 ?        00:00:00 /usr/sbin/cron -f
syslog     632     1  0 14:29 ?        00:00:00 /usr/sbin/rsyslogd -n
message+   634     1  0 14:29 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root       646     1  0 14:29 ?        00:00:00 /lib/systemd/systemd-logind
root       648     1  0 14:29 ?        00:00:00 /usr/lib/accountsservice/accounts-daemon
root       703     1  0 14:29 ?        00:00:00 /usr/sbin/irqbalance --pid=/var/run/irqbalance.pid
root       738     1  0 14:29 ?        00:00:00 /usr/sbin/sshd -D
root       739     1  0 14:29 ?        00:00:00 /usr/bin/containerd
root       754     1  0 14:29 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
root       760     1  0 14:29 ttyS0    00:00:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
ntp        768     1  0 14:29 ?        00:00:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109:116
root       796     1  0 14:29 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root      1057     1  0 14:32 ?        00:00:00 /lib/systemd/systemd --user
```
Ketika kita jalanin perintah `ps -ef`, kita akan melihat semua process pada layar kita seperti contoh diatas.
Kolom kedua menunjukkan `Process ID (PID)` dan kolom ketiga menunjukkan `Parent ID`. Jadi perintah `awk` disini akan fokus pada kolom ketiga (ditandai dengan $3) dan akan mengecek apakah PPID sama dengan (==) 1, yang mana PPID 1 adalah PPID untuk daemons.