Seri RHCSA: Manajemen Proses di RHEL 7: Boot, Shutdown, dan Segala Sesuatu di Antaranya – Bagian 5


Kami akan memulai artikel ini dengan revisi keseluruhan dan singkat tentang apa yang terjadi sejak Anda menekan tombol Daya untuk menghidupkan server RHEL 7 hingga Anda diberikan login layar di antarmuka baris perintah.

Harap dicatat bahwa:

1. prinsip dasar yang sama juga berlaku, mungkin dengan sedikit modifikasi, pada distribusi Linux lainnya, dan
2. uraian berikut tidak dimaksudkan untuk mewakili penjelasan lengkap tentang proses booting, namun hanya dasar-dasarnya saja.

Proses Boot Linux

1. POST (Power On Self Test) menginisialisasi dan melakukan pemeriksaan perangkat keras.

2. Ketika POST selesai, kontrol sistem diteruskan ke boot loader tahap pertama, yang disimpan di sektor boot salah satu hard disk (untuk versi lama sistem yang menggunakan BIOS dan MBR), atau partisi (U)EFI khusus.

3. Boot loader tahap pertama kemudian memuat boot loader tahap kedua, biasanya GRUB (GRand Unified Boot Loader), yang berada di dalam /boot, yang pada gilirannya memuat kernel dan sistem file awal berbasis RAM (juga dikenal sebagai initramfs, yang berisi program dan file biner yang melakukan tindakan yang diperlukan untuk akhirnya pasang sistem file root sebenarnya).

4. Kita disajikan dengan layar splash yang memungkinkan kita memilih sistem operasi dan kernel untuk boot:

5. Kernel menyiapkan perangkat keras yang terpasang pada sistem dan setelah sistem file root dipasang, meluncurkan proses dengan PID 1, yang pada gilirannya akan menginisialisasi proses lain dan menyajikan kami dengan prompt login.

Catatan: Jika kita ingin melakukannya di lain waktu, kita dapat memeriksa secara spesifik proses ini menggunakan perintah dmesg dan memfilter outputnya menggunakan alat yang kami telah dijelaskan di artikel sebelumnya dari seri ini.

Pada contoh di atas, kami menggunakan perintah ps yang terkenal untuk menampilkan daftar proses saat ini yang proses induknya (atau dengan kata lain, proses yang memulainya) adalah systemd (manajer sistem dan layanan yang digunakan sebagian besar distribusi Linux modern) selama startup sistem:

ps -o ppid,pid,uname,comm --ppid=1

Ingatlah bahwa tanda -o (kependekan dari –format) memungkinkan Anda menyajikan keluaran ps dalam format yang disesuaikan agar sesuai dengan kebutuhan penggunaan Anda. kata kunci yang ditentukan di bagian STANDARD FORMAT SPECIFIERS di man ps.

Kasus lain di mana Anda ingin menentukan keluaran ps daripada menggunakan default adalah ketika Anda perlu menemukan proses yang menyebabkan beban CPU dan/atau memori yang signifikan, dan mengurutkannya sesuai kebutuhan:

ps aux --sort=+pcpu              # Sort by %CPU (ascending)
ps aux --sort=-pcpu              # Sort by %CPU (descending)
ps aux --sort=+pmem              # Sort by %MEM (ascending)
ps aux --sort=-pmem              # Sort by %MEM (descending)
ps aux --sort=+pcpu,-pmem        # Combine sort by %CPU (ascending) and %MEM (descending)

Pengantar SistemD

Hanya sedikit keputusan di dunia Linux yang menimbulkan lebih banyak kontroversi daripada penerapan systemd oleh distribusi Linux besar. Para pendukung Systemd menyebutkan fakta-fakta berikut sebagai keuntungan utamanya:

Baca Juga: Kisah Dibalik 'init' dan 'systemd'

1. Systemd memungkinkan lebih banyak pemrosesan dilakukan secara paralel selama startup sistem (dibandingkan dengan SysVinit yang lebih lama, yang selalu cenderung lebih lambat karena memulai proses satu per satu, pemeriksaan jika satu bergantung pada yang lain, lalu menunggu daemon diluncurkan sehingga lebih banyak layanan dapat dimulai), dan

2. Ia berfungsi sebagai pengelolaan sumber daya dinamis dalam sistem yang sedang berjalan. Oleh karena itu, layanan dimulai saat diperlukan (untuk menghindari konsumsi sumber daya sistem jika tidak digunakan) alih-alih diluncurkan tanpa alasan yang sah saat boot.

3. Kompatibilitas mundur dengan skrip SysVinit.

Systemd dikendalikan oleh utilitas systemctl. Jika Anda berasal dari latar belakang SysVinit, kemungkinan besar Anda sudah familiar dengan:

  1. alat layanan, yang -di sistem lama tersebut- digunakan untuk mengelola skrip SysVinit, dan
  2. utilitas chkconfig, yang berfungsi untuk memperbarui dan menanyakan informasi runlevel untuk layanan sistem.
  3. shutdown, yang pasti Anda gunakan beberapa kali untuk memulai ulang atau menghentikan sistem yang sedang berjalan.

Tabel berikut menunjukkan kesamaan antara penggunaan alat lama ini dan systemctl:

Legacy tool Systemctl equivalent Description
service name start systemctl start name Start name (where name is a service)
service name stop systemctl stop name Stop name
service name condrestart systemctl try-restart name Restarts name (if it’s already running)
service name restart systemctl restart name Restarts name
service name reload systemctl reload name Reloads the configuration for name
service name status systemctl status name Displays the current status of name
service –status-all systemctl Displays the status of all current services
chkconfig name on systemctl enable name Enable name to run on startup as specified in the unit file (the file to which the symlink points). The process of enabling or disabling a service to start automatically on boot consists in adding or removing symbolic links inside the /etc/systemd/system directory.
chkconfig name off systemctl disable name Disables name to run on startup as specified in the unit file (the file to which the symlink points)
chkconfig –list name systemctl is-enabled name Verify whether name (a specific service) is currently enabled
chkconfig –list systemctl –type=service Displays all services and tells whether they are enabled or disabled
shutdown -h now systemctl poweroff Power-off the machine (halt)
shutdown -r now systemctl reboot Reboot the system

Systemd juga memperkenalkan konsep unit (yang dapat berupa layanan, titik pemasangan, perangkat, atau soket jaringan) dan target (yaitu cara systemd memulai beberapa proses terkait secara bersamaan waktu, dan dapat dianggap -walaupun tidak setara- setara dengan runlevel dalam sistem berbasis SysVinit.

Menyimpulkan

Tugas lain yang terkait dengan manajemen proses mencakup, namun tidak terbatas pada, kemampuan untuk:

1. Sesuaikan prioritas eksekusi sejauh menyangkut penggunaan sumber daya sistem dalam suatu proses:

Hal ini dicapai melalui utilitas renice, yang mengubah prioritas penjadwalan satu atau lebih proses yang berjalan. Secara sederhana, prioritas penjadwalan adalah fitur yang memungkinkan kernel (ada dalam versi => 2.6) untuk mengalokasikan sumber daya sistem sesuai prioritas eksekusi yang ditetapkan (alias kebaikan, dalam rentang dari -20 hingga 19) dari proses tertentu.

Sintaks dasar renice adalah sebagai berikut:

renice [-n] priority [-gpu] identifier

Pada perintah umum di atas, argumen pertama adalah nilai prioritas yang akan digunakan, sedangkan argumen lainnya dapat diartikan sebagai ID proses (yang merupakan pengaturan default), ID grup proses, ID pengguna, atau nama pengguna. Pengguna normal (selain root) hanya dapat mengubah prioritas penjadwalan dari proses yang dimilikinya, dan hanya meningkatkan tingkat kebaikan (yang berarti menggunakan lebih sedikit sumber daya sistem).

2. Matikan (atau hentikan eksekusi normal) suatu proses sesuai kebutuhan:

Dalam istilah yang lebih tepat, mematikan suatu proses memberikan hak untuk mengirimkan sinyal untuk menyelesaikan eksekusinya dengan baik (SIGTERM=15) atau segera (SIGKILL=9) melalui kill atau pkill perintah.

Perbedaan antara kedua alat ini adalah alat pertama digunakan untuk menghentikan proses tertentu atau grup proses secara keseluruhan, sedangkan alat kedua memungkinkan Anda melakukan hal yang sama berdasarkan nama dan atribut lainnya.

Selain itu, pkill disertakan dengan pgrep, yang menunjukkan PID yang akan terpengaruh jika pkill digunakan. Misalnya, sebelum dijalankan:

pkill -u gacanepa

Mungkin berguna untuk melihat sekilas PID yang dimiliki oleh gacanepa:

pgrep -l -u gacanepa

Secara default, kill dan pkill mengirimkan sinyal SIGTERM ke proses. Seperti yang kami sebutkan di atas, sinyal ini dapat diabaikan (saat proses selesai dieksekusi atau selamanya), jadi ketika Anda benar-benar perlu menghentikan proses yang sedang berjalan dengan alasan yang valid, Anda perlu menentukan SIGKILL sinyal pada baris perintah:

kill -9 identifier               # Kill a process or a process group
kill -s SIGNAL identifier        # Idem
pkill -s SIGNAL identifier       # Kill a process by name or other attributes 

Kesimpulan

Dalam artikel ini kami telah menjelaskan dasar-dasar proses boot dalam sistem RHEL 7, dan menganalisis beberapa alat yang tersedia untuk membantu Anda mengelola proses menggunakan utilitas umum dan perintah khusus systemd.

Perhatikan bahwa daftar ini tidak dimaksudkan untuk mencakup semua fitur topik ini, jadi silakan tambahkan alat dan perintah pilihan Anda ke artikel ini menggunakan formulir komentar di bawah. Pertanyaan dan komentar lainnya juga diterima.