Manajemen Proses Seri RHCSA di RHEL 7 Boot, Shutdown, dan Segala sesuatu di antara - Bagian 5

Manajemen Proses Seri RHCSA di RHEL 7 Boot, Shutdown, dan Segala sesuatu di antara - Bagian 5

Kami akan memulai artikel ini dengan revisi keseluruhan dan singkat tentang apa yang terjadi sejak saat Anda menekan Kekuatan tombol untuk menghidupkan RHEL 7 Server sampai Anda disajikan dengan layar login di antarmuka baris perintah.

Proses boot Linux

Harap dicatat bahwa:

1. Prinsip -prinsip dasar yang sama berlaku, dengan mungkin modifikasi kecil, untuk distribusi Linux lainnya juga, dan
2. Deskripsi berikut tidak dimaksudkan untuk mewakili penjelasan lengkap dari proses boot, tetapi hanya fundamental.

Proses boot Linux

1. Itu POS (Power on Self Test) Menginisialisasi dan melakukan pemeriksaan perangkat keras.

2. Ketika POS Selesai, kontrol sistem diteruskan ke loader boot tahap pertama, yang disimpan pada sektor boot dari salah satu hard disk (untuk sistem yang lebih lama menggunakan BIOS dan MBR), atau partisi EFI khusus (U).

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

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

Layar Menu Boot

5. Kernel mengatur perangkat keras yang melekat pada sistem dan begitu sistem file root telah dipasang, meluncurkan proses dengan PID 1, yang pada gilirannya akan menginisialisasi proses lain dan memberi kami prompt login.

Catatan: Bahwa jika kita ingin melakukannya di lain waktu, kita dapat memeriksa spesifik proses ini menggunakan perintah DMESG dan memfilter outputnya menggunakan alat yang telah kita jelaskan dalam artikel sebelumnya dari seri ini.

Layar login dan proses PID

Dalam contoh di atas, kami menggunakan yang terkenal Perintah ps Untuk menampilkan daftar proses saat ini yang proses induknya (atau dengan kata lain, proses yang memulainya) Systemd (Sistem dan manajer layanan yang sebagian besar distribusi Linux modern telah beralih ke) selama startup sistem:

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

Ingatlah bahwa -Hai Bendera (pendek untuk -format) memungkinkan Anda menyajikan output ps Dalam format khusus yang sesuai dengan kebutuhan Anda menggunakan kata kunci yang ditentukan dalam Spesifikasi Format Standar bagian dalam Pria PS.

Kasus lain di mana Anda ingin menentukan output dari ps Alih -alih menggunakan default adalah ketika Anda perlu menemukan proses yang menyebabkan CPU yang signifikan dan / atau beban memori, dan mengurutkannya sesuai:

# ps aux --sort =+pcpu # sortir berdasarkan %cpu (ascending) # ps aux --sort = -pcpu # urut ) # ps aux --sort = -pmem # sortir dengan %mem (descending) # ps aux --sort =+pcpu, -pmem # gabungkan sortir oleh %cpu (ascending) dan %mem (descending) 
Kustomisasi output perintah PS

Pengantar Systemd

Beberapa keputusan di dunia Linux telah menyebabkan lebih banyak kontroversi daripada adopsi Systemd dengan distribusi Linux utama. Nama Advokat Systemd sebagai keuntungan utamanya adalah fakta -fakta berikut:

Baca juga: Kisah di balik 'init' dan 'systemd'

1. SystemD memungkinkan lebih banyak pemrosesan dilakukan secara paralel selama startup sistem (sebagai lawan yang lebih tua Sysvinit, yang selalu cenderung lebih lambat karena mulai memproses satu per satu, memeriksa apakah satu bergantung pada yang lain, dan kemudian menunggu daemon untuk diluncurkan sehingga lebih banyak layanan dapat dimulai), dan

2. Ini berfungsi sebagai manajemen sumber daya yang dinamis dalam sistem yang sedang berjalan. Dengan demikian, layanan dimulai saat dibutuhkan (untuk menghindari sumber daya sistem yang mengonsumsi jika tidak digunakan) alih -alih diluncurkan tanpa alasan yang valid selama boot.

3. Kompatibilitas ke belakang dengan Sysvinit skrip.

Systemd dikendalikan oleh Systemctl kegunaan. Jika Anda berasal dari a Sysvinit latar belakang, kemungkinan Anda akan terbiasa dengan:

  1. itu melayani alat yang - dalam sistem yang lebih tua - digunakan untuk mengelola skrip sysvinit, dan
  2. utilitas chkconfig, yang melayani tujuan memperbarui dan meminta informasi level untuk layanan sistem.
  3. matikan, yang harus Anda gunakan beberapa kali untuk memulai ulang atau menghentikan sistem yang sedang berjalan.

Tabel berikut menunjukkan kesamaan antara penggunaan alat warisan ini dan Systemctl:

Alat Legacy Systemctl setara Keterangan
Nama Layanan Mulai Systemctl Mulai Nama Nama mulai (di mana nama adalah layanan)
nama layanan berhenti Systemctl Stop Name Hentikan nama
Nama Layanan Condrestart Systemctl Try-Restart Name Restarts Name (jika sudah berjalan)
nama layanan restart nama restart systemctl Mulai ulang nama
Muat Ulang Nama Layanan Systemctl Reload Name Muat ulang konfigurasi untuk nama
Status Nama Layanan Nama Status Systemctl Menampilkan status nama saat ini
Layanan -Status -ALL Systemctl Menampilkan status semua layanan saat ini
nama chkconfig di Systemctl mengaktifkan nama Aktifkan nama yang akan dijalankan pada startup sebagaimana ditentukan dalam file unit (file tempat titik symlink). Proses mengaktifkan atau menonaktifkan layanan untuk memulai secara otomatis pada boot terdiri dari menambahkan atau menghapus tautan simbolik di dalam direktori/etc/systemd/sistem.
NAMA CHKCONFIG OFF Systemctl Nonaktifkan Nama Menonaktifkan nama untuk dijalankan pada startup sebagaimana ditentukan dalam file unit (file yang menjadi titik symlink)
CHKCONFIG -LIST NAMA Systemctl IS-Enabled Name Verifikasi apakah nama (layanan tertentu) saat ini diaktifkan
chkconfig -list Systemctl -type = layanan Menampilkan semua layanan dan memberi tahu apakah diaktifkan atau dinonaktifkan
shutdown -h sekarang Poweroff Systemctl Power-off the Machine (berhenti)
shutdown -r sekarang Systemctl reboot Reboot sistem

Systemd Juga memperkenalkan konsep unit (yang dapat berupa layanan, titik pemasangan, perangkat, atau soket jaringan) dan target (yang merupakan cara SystemD mengelola beberapa proses terkait pada saat yang sama, dan dapat dipertimbangkan - tidak sama- dengan setara dengan runlevels di Berbasis sysvinit sistem.

Menyimpulkan

Tugas lain yang terkait dengan manajemen proses termasuk, tetapi mungkin tidak terbatas pada, kemampuan untuk:

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

Ini dicapai melalui Renice utilitas, yang mengubah prioritas penjadwalan satu atau lebih proses berjalan. Secara sederhana, prioritas penjadwalan adalah fitur yang memungkinkan kernel (hadir dalam versi => 2.6) untuk mengalokasikan sumber daya sistem sesuai prioritas eksekusi yang ditugaskan (alias kebaikan, dalam kisaran dari -20 melalui 19) dari proses yang diberikan.

Sintaks dasar dari Renice adalah sebagai berikut:

# Renice [-n] Prioritas [-GPU] Identifier 

Dalam perintah generik di atas, argumen pertama adalah nilai prioritas yang akan digunakan, sedangkan argumen lain dapat diartikan sebagai proses IDS (yang merupakan pengaturan default), ID grup proses, ID pengguna, atau nama pengguna. Pengguna normal (selain root) hanya dapat memodifikasi prioritas penjadwalan dari suatu proses yang dimilikinya, dan hanya meningkatkan tingkat kebaikan (yang berarti mengambil sumber daya sistem yang lebih sedikit).

Prioritas Penjadwalan Proses
2. Bunuh (atau mengganggu eksekusi normal) dari suatu proses sesuai kebutuhan:

Dalam istilah yang lebih tepat, membunuh suatu proses hak untuk mengirimkannya sinyal untuk menyelesaikan eksekusi dengan anggun (Sigterm = 15) atau segera (Sigkill = 9) melalui perintah membunuh atau pkill.

Perbedaan antara kedua alat ini adalah bahwa yang pertama digunakan untuk mengakhiri proses tertentu atau kelompok proses sama sekali, sedangkan yang terakhir memungkinkan Anda melakukan hal yang sama berdasarkan nama dan atribut lainnya.

Selain itu, pkill datang dibundel dengan pgrep, yang menunjukkan kepada Anda pids yang akan terpengaruh jika pkill digunakan. Misalnya, sebelum berjalan:

# pkill -u gacanepa 

Mungkin bermanfaat untuk dilihat sekilas PIDS dimiliki oleh Gacanepa:

# pgrep -l -u gacanepa 
Temukan PIDS Pengguna

Secara default, keduanya membunuh Dan pkill Kirim Sigterm memberi sinyal ke prosesnya. Seperti yang kami sebutkan di atas, sinyal ini dapat diabaikan (sementara proses menyelesaikan eksekusi atau untuk kebaikan), jadi ketika Anda benar -benar perlu menghentikan proses berjalan dengan alasan yang valid, Anda perlu menentukan Sigkill Sinyal pada baris perintah:

# Kill -9 Identifier # Bunuh Proses atau Grup Proses # Kill -S Identifier Sinyal # Idem # PKill -S Identifier Sinyal # Bunuh Proses Dengan Nama atau Atribut Lainnya 

Kesimpulan

Dalam artikel ini kami telah menjelaskan dasar -dasar proses boot di sebuah RHEL 7 sistem, 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 lonceng dan peluit topik ini, jadi jangan ragu untuk menambahkan alat dan perintah pilihan Anda sendiri ke artikel ini menggunakan formulir komentar di bawah ini. Pertanyaan dan komentar lainnya juga diterima.