Kadang tanpa kita sadari, saat install OS tanpa disadari ada beberapa daemons yang ikut terinstall, dan ikut jalan di server kita. Apabila kita memiliki server yang ber-resource kecil, maka hal itu akan terasa. Berikut beberapa hal yang bisa kita lakukan untuk mengeceknya
Mencari apa yang berjalan di system
Beberapa distro memilki tool yang dapat digunakan untuk mengatur daemins yang akan auto start saat server booting. Salah satu command yang dapat digunakan adalah “chkconfig” Kita dapat melihat semua prosess yang start saat booting dengan mengetikkan command:
[tixoez@localhost ~]$ /sbin/chkconfig –list | grep “5:on”
Ketika running di text-mode system, Kita menggunakan boot untuk runlevel 3. Untuk melihat proses yang auto start ketika booting di system, kita bisa menggunakan command:
[tixoez@localhost ~]$ /sbin/chkconfig –list | grep “3:on”
Daemon yang sering dipakai dan yang jarang dipakai
Berikut list daemain yang mungkin tidak digunakan oleh user “normal”. Kamu dapat membandingan list daemon yang berjalan di sistemmu dengan list berikut, dan memikirkan apakah apan untuk disable
- Bluetooth
- hcid, sdpd and hidd ( daemon ini disediakan untuk Bluetooth services, dan tidak berguna apabila tidak ada perangkat Bluetooth di hardware)
- Printing
- cups and cups-config-daemon ( daemon ini disedikan untuk printer services dan tidak berguna jika tidak ada printer yang terhubung)
- hpiod and hpssd ( daemon ini disediakan untuk HP printers. Ini dapat dimatikan apabila kamu tidak menggunakan HP printer)
- Console
- gpm (daemon ini disediakan untuk support mouse agar bisa menggunakan aplikasi text-based, seperti Midnight Commander. ini juga untuk copy/paste dengan tombol tengah mouse. Daermon ini dapat dimatikan jika tidak menggunakan console)
- Webserver
- httpd (Daemon ini disediakan untuk service web hosting, dan tidak diperlukan pada workstation dan server yang tidak menghost situs web)
- mysqld and postgresqld (Daemons ini disediakan untuk servicedatabase backend. Kamu dapat mematikan jika tidak menggunakan web server yang menggunakan aplikasi database)
- Firewall
- netfilter/iptables (Daemon ini disediakan untuk service firewall. Dapat dipatikan apabila kamu di balik router atau smoothwall dengan firewall built-in)
- InfraRed
- irda (hidupakan daemon ini jika komputermu menggunakan device IR (InfraRed). Jika kamu tidak menggunakan IR, kamu dapat mematikan service ini)
- lircd (daemon inti disedikan untuk support remote control yang menggunakan IR (InfraRed) receivers. Dapat dimatikan jika kamu tidak menggunakan perangan tersebut)
- Multiple CPU’s
- irqbalance (daemon ini untuk menyeimbangkan multiple CPU di system. Dapat dimatikan jika komputer tidak memiliki muultiple CPU atau dual core processor)
- Software RAID
- mdmonitor, mdadm and mdmpd ( daemon ini meneyediakan informasi dan managemen fungsional software RAID. Tidak berguna jika tidak menggunakan software RAID)
- DNS Server
- named (atau dikenal juga dengan BIND) ( daemon ini mensuport fungsi DNS server. ini tidak berguna jika hanya sebagai komputer biasa)
- Remote kernel logging
- netdump, netcrashdump and netconsole ( digunakan untuk kernel logging and debugging di network. berhuna hanya jika ingin melihat log kernel dan debugging messages di komputer lain)
- Fileservers
- NFS server
- nfs (berfungsi untuk NFS server, allow komputer lain dengan NFS clients untuk terhubung dengan komputer kamu dan mengakses file. dapat di matikan jika kamu tidak ingin orang lain mengakses sistem mu menggunakan NFS)
- portmap (berfungsi untuk memanage RPC connections, menggunakan protocol seperti NFS dan NIS. dibutuhkan jika kamu menginginkan komputermu sebagai server)
- rpcsvcgssd (berfungsui untuk menage RPCSEC GSS contexts untuk server NFSv4 tidak berguna jika kamu tidak menjalankan kompuer sebagai NFS server)
- Samba server
- smbd and nmbd (digunakan agar komputer lain( termasuk OS Windows) dapat akses filemu)
- NFS server
- Network Authentication
- nscd ( daemon ini meng-handle passwd and group lookups and caches.Hanya digunakan apabila menggunakan‘slow’ name service, seperti NIS, NIS+, LDAP,atau hesiod)
- portmap (digunakan untuk manage RPC connections, menggunakan protocol seperti NFS dan NIS.)
- Remote time setting
- ntpd (digunakan untuk set time yang akurat dengan cara menghubungkan komputer dengan ntp server. )
- Process Accounting
- psacct (atau dikenal juga sebagai acct) (daemon untuk process accounting, yang memberikan info detail dari insight sampai execution commands di system. daemon ini tidak berguna apabila server dapat diakses oleh orang banyak dan tidak semua orang yang bisa akses dapat dipercaya)
- Plaintext Authentication Requests
- saslauthd (daemon ini untuk handle SASL Plaintext Authentication Requests, dan ini hanya dapat digunakan di server yang membutuhkan komunikas menggunakan mekanisme SASL)
- Mailserver
- sendmail (daermaon untuk mengirim dan me-forward email messages, sebagai server. Daemon ini hanya dibutuhkan apabila komputer berfungsi sebagai mail server)
- spamd (atau dikenal juga sebahgai Spamassassin) ( daermon ini berfungsi untuk check email masuk dari spam. Daemon ini dapat dimatikan jika mempunyai antispam yang lain)
- SSH Server
- sshd (daemon inti untuk mengatur remote login di komputer menggunakan SSH. )
- VNC Server
- vncserver or xvnc (daemon untuk mengatur orang lain melihat virtual graphical Desktop yang sedang berjalan di komputer)
- Task Scheduler
- cron (dan varian lain, seperti vixie-cron…) (daemon ini berkerja secara periodik di system, seperti update search index atau mainpage index. tetapi selalu menulis log file. )
Disable daemons
Ketika menggunakan GUI untuk manage daemons started ketika boot-time, kamu dapat disable dengan mudah dengan cara unchecking di checkbox. Ketika menggunakan chkconfig, kamu dapan menggunakan syntax:
[tixoez@localhost ~]$ /sbin/chkconfig name off
Ganti “name” dengan nama daemon yang akan kamu disable. Jika terjadi kesalahan dalam medisable, kamu dapan menghidupkan kembali dengan cara :
[tixoez@localhost ~]$ /sbin/chkconfig name reset
Anda mungkin berpikir ini tidak logis, yang seharusnya:
[tixoez@localhost ~]$ /sbin/chkconfig name on
Yah, seharusnya tidak. Perintah di atas akan mengaktifkan awal daemon untuk set runlevel tetap, tidak peduli berapa nilai sebelumnya. Bukan itu yang kami inginkan, karena kami ingin mengembalikannya ke kondisi lama. Kata “reset” memberitahu chkconfig untuk mengembalikan nilai yang ditentukan dalam skrip init yang berisi instruksi tentang cara memulai daemon. Nilai-nilai ini (atau seharusnya) default. Ingatlah bahwa nilai default tidak selalu sama dengan nilai lama, tetapi nilai tersebut sebagian besar akan lebih mendekati nilai tersebut daripada nilai yang disiratkan “on”. Anda mungkin perlu memodifikasi jumlah runlevel tertentu untuk memperbaikinya. Anda dapat melakukan ini dengan menentukan runlevel mana yang harus diubah, seperti ini:
[tixoez@localhost ~]$ /sbin/chkconfig –level 35 name on
Perintah di atas akan mengaktifkan startup “nama” daemon untuk runlevel 3 dan 5. Argumen untuk “–level” hanyalah serangkaian nomor runlevel, tanpa pemisahan. Contoh lain:
[tixoez@localhost ~]$ /sbin/chkconfig –level 235 name on
Bagian ini akan menjelaskan apa yang ada di balik semua perintah di atas. Jika Anda ingin tahu bagaimana Linux “tahu” apa yang harus dimulai saat boot, apa itu “runlevel” dan mengapa biasanya ada 7 (atau, bisa dibilang, 8), baca terus.
Catatan: Bagian ini tidak akan tepat untuk setiap distro. Ada banyak perbedaan antara distro pada saat ini, jadi saya mencoba untuk mengekspos konfigurasi paling default.
Bagaimana linux “tahu” apa yang akan dijalankan saat boot
Saat Anda mem-boot komputer Linux, Anda biasanya akan melihat bootloader (setelah BIOS melakukan bagiannya dari proses booting). Bootloader, biasanya Lilo atau GRUB, dikonfigurasi untuk memuat kernel Linux ke dalam memori komputer Anda. Kernel kemudian meninggalkan bootloader dan melanjutkan boot dengan sendirinya, menginisialisasi perangkat keras dan membuat dirinya siap untuk mulai menjalankan init. Dan init adalah proses yang kami cari: ini adalah proses pertama yang dijalankan, dan ini memunculkan semua proses lainnya. Tapi di mana init mencari tahu proses mana yang harus dimulai? Jawaban singkatnya adalah: di /etc/rc*.d/ (biasanya). Tapi itu bukan jawaban lengkapnya. Untuk memahami bagaimana ia menggunakan file di direktori tersebut, pertama-tama kita perlu memahami apa itu runlevel.
Runlevels
Runlevel adalah status proses di mana sistem dapat berada. Sebagai contoh: runlevel 1 biasanya adalah mode penyelamatan, boot sistem memulai proses sesedikit mungkin, menyediakan pengguna dengan konsol akses root, tanpa fungsionalitas jaringan dan tanpa GUI apa pun. Di sisi lain, runlevel 5 biasanya adalah mode multi-pengguna grafis yang lengkap. Ada juga runlevel khusus yang tidak boleh Anda gunakan untuk boot, tetapi Anda dapat beralih ke setelah boot: misalnya, beralih ke runlevel 0 (nol) mematikan komputer Anda (jangan coba ini sampai Anda membaca tutorial lengkapnya) dan beralih ke runlevel 6 akan membuat sistem Anda reboot sendiri. Sekarang untuk daftar lengkap runlevel dan konfigurasi umumnya:
- 0: Shuts down the system
- 1: Boots the system ke rescue mode
- 2: Boots the system ke multi-user mode tanpa fungsi network
- 3: Boots the system ke multi-user mode dengan fungsi network
- 4: Biasanya tidak digunakan (kadang ini seperti runlevel 5 atau 3)
- 5: Boots the system ke mode full-fledged graphical multi-user (dengan network)
- 6: Reboots sistem
- (s or S: sama seperti runlevel 1)
Karena runlevel terakhir tidak selalu dianggap sebagai runlevel nyata (kemudian disebut alias), jumlah runlevel biasanya tujuh, tapi bisa dibilang delapan. Anda dapat beralih di antara semua runlevel setelah boot, meskipun 0 dan 6 akan (tentu saja) mengharuskan Anda untuk boot lagi sebelum Anda dapat beralih lagi. Beralih antar runlevel biasanya dilakukan dengan perintah init, seperti ini:
[tixoez@localhost ~]$ init 3
Perintah di atas akan (berjalan sebagai root atau dengan izin root) mengalihkan sistem Anda ke runlevel 3, kecuali jika sudah berjalan di runlevel 3 (ganti 3 dengan digit lain jika Anda ingin beralih ke runlevel lain). Saat beralih di antara runlevel, init menghentikan proses yang berjalan di runlevel lama yang seharusnya tidak berjalan di runlevel baru (ini adalah nol proses saat booting dan semua proses saat mematikan atau me-reboot) dan memulai proses yang tidak berjalan di runlevel lama yang harus dijalankan di runlevel baru (ini adalah nol proses saat mematikan atau me-reboot, tetapi saat mem-boot, itu tergantung pada runlevel tempat Anda mem-boot). Dan sekarang kita dapat melanjutkan ke cara init “tahu” apa yang harus dimulai dan apa yang harus dihentikan.
Cara menjalankan dan mematikan
Ketika proses init dimulai oleh kernel, pertama-tama akan terlihat di file /etc/inittab untuk melihat apa yang harus dilakukan jika terjadi runlevel tertentu. File ini biasanya memberitahu init untuk mencari di direktori /etc/rcX.d/ yang sesuai, di mana X adalah runlevel. Misalnya, ketika boot ke runlevel 5, init akan menjalankan skrip di /etc/rc5.d/ (harap dicatat (sekali lagi) bahwa ini tidak berlaku untuk semua distro). “Skrip” ini biasanya merupakan symlink ke skrip manajemen layanan yang sesuai di /etc/init.d/ (atau /etc/rc.d/init.d/). Tetapi bagaimana skrip seperti itu dapat memahami apakah init ingin memulai atau menghentikan layanan? Nah, ketika init ingin skrip memulai proses, skrip akan menjalankan skrip dengan “mulai” sebagai argumen pertama. Saat ingin skrip menghentikan layanan, init akan melewati “stop” sebagai argumen pertama. Anda juga dapat melakukannya sendiri jika ingin memulai atau menghentikan layanan. Sebagai contoh:
[tixoez@localhost ~]$ /etc/init.d/ntpd stop
Contoh di atas akan menghentikan daemon ntpd. Untuk memulainya kembali gunakan perintah berikut:
[tixoez@localhost ~]$ /etc/init.d/ntpd start
Berhenti dan mulai biasanya dapat digabungkan dengan cara berikut.
[tixoez@localhost ~]$ /etc/init.d/ntpd restart
Ini berguna jika Anda ingin daemon membaca ulang file konfigurasinya. Bergantung pada layanan tempat skrip ditulis (dan skrip itu sendiri), argumen lain juga dapat diberikan.
Bagaimanapun, mari kembali ke direktori /etc/rcX.d/. Direktori ini diisi dengan file bernama seperti “K59somedaemon” dan “S10anotherdaemon”. Saya akan memberikan penjelasan singkat:
- “K” berarti “kill” dan “S” berarti “start”: symlink yang dimulai dengan “K” akan dieksekusi dengan argumen “stop” oleh init, dan symlink yang dimulai dengan “S” akan dieksekusi dengan “start ” argumen.
- Dua digit setelah “K” atau “S” tidak berarti sesuatu yang sangat istimewa, mereka hanya digunakan untuk menyortir. Symlink yang perlu dijalankan sebelum yang tertentu lainnya harus memiliki jumlah yang lebih rendah daripada yang lain.
- Nama daemon setelahnya sebenarnya tidak diperlukan untuk init, tetapi ini adalah praktik yang baik untuk sysadmin sehingga mereka dapat langsung melihat untuk apa symlink itu.
proses tidak dimulai lagi (yang akan menghasilkan dua proses yang mengganggu, kecuali daemon itu sendiri memeriksa apakah tidak ada instance lain yang berjalan) dan proses yang sudah dihentikan tidak akan “dihentikan”. Ini biasanya dilakukan oleh beberapa program atau skrip khusus yang dipanggil untuk melakukan permulaan yang sebenarnya.
Yah, saya harap tutorial ini membantu Anda mengurangi beban CPU dan waktu boot komputer Anda dan memahami apa yang membuat sistem Linux muncul setelah Anda menyalakan komputer. Jika Anda memiliki saran (misalnya: daemon lain yang tampaknya tidak diperlukan dalam kasus tertentu atau cara lain untuk mengelola startup daemon)
sumber : https://linuxacademy.com/blog/linux/disabling-unused-daemons-to-speed-up-your-boot-sequence/