Fundamental Proses Manajemen di Linux

Fundamental Proses Manajemen di Linux

Objektif

Pelajari dasar -dasar manajemen proses di Linux

Sistem Operasi dan Versi Perangkat Lunak

  • Sistem operasi: - Semua distribusi Linux

Persyaratan

  • Beberapa program yang disebutkan dalam tutorial ini memerlukan akses root

Kesulitan

MUDAH

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
    langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Perkenalan

Salah satu aktivitas inti dari administrator sistem adalah pemantauan dan berinteraksi dengan proses yang berjalan pada mesin. Dalam tutorial ini Anda akan diperkenalkan dengan penggunaan beberapa alat mendasar yang akan membantu Anda menyelesaikan tugas vital itu.

Perintah ps

PS adalah salah satu program mendasar yang digunakan dalam pemantauan proses: pada dasarnya memberi Anda a foto dari proses yang berjalan pada mesin saat Anda memohon perintah. Mari kita lihat beraksi: Pertama kita akan mencoba menjalankannya tanpa opsi:

$ ps pid tty time cmd 24424 poin/0 00:00:00 bash 24468 poin/0 00:00:00 PS 

Seperti yang dapat Anda lihat dari output di atas, hanya dua proses yang ditampilkan: pesta dengan Pid (ID proses) 24424 Dan ps dirinya sendiri dengan pid 24468. Ini karena saat dipanggil tanpa opsi apa pun, ps Perintah menunjukkan proses yang terkait dengan Uid dari pengguna yang meluncurkan perintah, dan terminal dari mana ia dipanggil.

Bagaimana mengatasi batasan ini? Menggunakan -A opsi yang bisa kami buat ps untuk menunjukkan kepada kita semua proses, dengan pengecualian pemimpin sesi dan proses yang tidak terkait dengan terminal.

Pemimpin sesi adalah proses yang memiliki PID yang sama dengan Sid (ID sesi) dari sesi yang merupakan anggota (pertama). Ketika suatu proses dibuat, itu dibuat bagian dari sesi yang sama dari proses induknya: karena dengan konvensi, ID sesi sama dengan Pid Dari anggota pertamanya, kami menyebut proses ini a Pemimpin Sesi. Ayo coba jalankan ps dengan -A Opsi dan periksa outputnya:

$ ps -a pid tty time cmd 12466 tty1 00:00:00 gnome-sesi-b 12480 tty1 00:00:17 Gnome-Shell 12879 tty1 00:00:00 XWAYLAND 12954 TTY1 00:00 GSD 12955 Tty11 00:00:00 GSD-WACOM 12957 TTY1 00:00:00 GSD-XSETTING 12961 TTY1 00:00:00 GSD-A11Y-KEYBOA 12962 TTY1 00:00 GSD-A11Y-SETTIN 12965 TTY1 00:00:00 GSD -clipboard 12966 tty1 00:00:03 gsd-color 12967 tty1 00:00:00 gsd-datetime 12970 tty1 00:00:00 gsd-housekeepin 12971 tty1 00:00:00 gsd-keyboard 12972 tty1 00:00:00 gsd -media-keys 12973 tty1 00:00:00 GSD-mouse 12976 tty1 00:00:00 GSD-orientasi [...] 

Output dari program telah terpotong, tetapi Anda dapat dengan mudah melihat bahwa sekarang termasuk proses yang dimiliki oleh terminal dan pengguna yang berbeda. Output menunjukkan kepada kita informasi tentang Pid di kolom pertama, Tty di yang kedua, WAKTU yang merupakan waktu kumulatif yang dihabiskan CPU untuk prosesnya, dan Cmd yang merupakan perintah yang memulai proses.

Untuk memiliki output yang lebih kaya kita dapat menambahkan -u Dan -X Opsi: yang pertama memberi tahu ps untuk melakukan pilihan oleh identitas pengguna, Sementara yang terakhir menginstruksikan program untuk memasukkan juga proses yang tidak terkait dengan terminal, seperti daemon:

$ PS -AUX USER PID %CPU %MEM VSZ RSS Tty Stat Start Time Command Root 1 0.0 0.2 223932 8708 ? SS Jul20 0:04/usr/lib/systemd/systemd --switched-root --system --deserialize 25 root 2 0.0 0.0 0 0 ? S Jul 20 0:00 [KTHREADD] ROOT 4 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S< Jul20 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? S Jul20 0:07 [rcu_sched] root 9 0.0 0.0 0 0 ? S Jul20 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S Jul20 0:04 [rcuos/0] root 11 0.0 0.0 0 0 ? S Jul20 0:00 [rcuob/0] root 12 0.0 0.0 0 0 ? S Jul20 0:00 [migration/0] root 13 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/0] root 14 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/0] root 15 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/1] root 16 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/1] root 17 0.0 0.0 0 0 ? S Jul20 0:00 [migration/1] root 18 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/1] root 20 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/1:0H] root 21 0.0 0.0 0 0 ? S Jul20 0:02 [rcuos/1] root 22 0.0 0.0 0 0 ? S Jul20 0:00 [rcuob/1] root 23 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/2] root 24 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/2] root 25 0.0 0.0 0 0 ? S Jul20 0:00 [migration/2] root 26 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/2] root 28 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/2:0H] [… ] egdoc 13128 0.0 0.1 74736 5388 ? Ss Jul20 0:00 /usr/lib/systemd/systemd --user egdoc 13133 0.0 0.0 106184 420 ? S Jul20 0:00 (sd-pam) egdoc 13143 0.0 0.1 218328 3612 ? Sl Jul20 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login [… ] 

Anda dapat melihat bahwa cukup banyak informasi baru telah ditambahkan. Kolom baru pertama dari output %CPU: Ini menunjukkan pemanfaatan CPU dari proses, dinyatakan sebagai persentase. Persentase juga digunakan untuk kolom berikutnya, %Mem, yang menunjukkan memori fisik pada mesin yang digunakan oleh proses. VSZ adalah ukuran memori virtual dari proses yang diungkapkan dalam kib.

Itu Stat Kolom menggunakan kode untuk mengekspresikan status proses. Kami tidak akan menjelaskan semua negara yang mungkin di sini, tetapi jelaskan yang muncul di output di atas (Anda dapat memiliki gambaran lengkap dengan berkonsultasi dengan manpage PS).

Mari kita periksa proses pertama dalam output: sudah ada PID 1, Oleh karena itu adalah proses pertama yang diluncurkan oleh kernel. Ini masuk akal, kita bisa melihatnya Systemd, Sistem init Linux yang relatif baru, sekarang diadopsi oleh hampir semua distribusi. Pertama -tama kami memiliki S yang menunjukkan bahwa prosesnya dalam keadaan tidur yang interribel yang berarti menganggur, dan akan bangun segera setelah menerima input. Itu S, Sebaliknya, beri tahu kami bahwa prosesnya adalah a Pemimpin Sesi.

Simbol lain, tidak muncul dalam mentah pertama, tetapi dalam beberapa proses lainnya deskripsi adalah < yang menunjukkan bahwa proses tersebut memiliki prioritas tinggi, dan karenanya rendah Bagus Nilai (kita akan melihat nilai yang bagus di bagian yang relevan dari tutorial ini). Sebuah l dalam Stat kolom, menunjukkan bahwa prosesnya multi-threaded, dan a + Tanda tangani, bahwa itu berada di kelompok proses latar depan.

Akhirnya, di kolom terakhir, kami memiliki AWAL kolom, menunjukkan waktu perintah dimulai.

Pilihan bagus lainnya yang bisa kita lewati ke ps perintah, adalah -Hai, yang merupakan versi pendek dari --format. Opsi ini memungkinkan Anda memodifikasi output dengan menggunakan placeholder, menentukan kolom apa yang akan ditampilkan. Misalnya, menjalankan:

$ ps -ax -o%u%p%n%c

Akan memberi kami PENGGUNA kolom pertama (%u), diikuti oleh Pid dari proses (%p), oleh Ni kolom (%n), yang menunjukkan Bagus level, dan akhirnya oleh MEMERINTAH kolom (%c):

Pengguna PID NI Perintah Root 1 0 Systemd Root 2 0 KThreadd Root 4 -20 Kworker/0: 0h Root 6 -20 mm_percpu_wq root 7 0 ksoftirqd/0 root 8 0 rcu_sched root 9 0 rcu_bh root 10 0 rcuos/0 root 11 0 rcuob /0 Root 12 - Migrasi/0 Root 13 - Watchdog/0 Root 14 0 CPUHP/0 ROOT 15 0 CPUHP/1 ROOT 16 - Watchdog/1 Root 17 - Migrasi/1 Root 18 0 Ksoftirqd/1 Root 20 -20 Kworker/ 1: 0h root 21 0 rcuos/1 root 22 0 rcuob/1 root 23 0 cpuhp/2 root 24 - pengawas/2 root 25 - migrasi/2 root 26 0 ksoftirqd/2 

Menggunakan 'atas' untuk berinteraksi secara dinamis dengan proses

Ketika ps memberi kami snapshot proses statis dan informasi mereka pada saat Anda menjalankannya, atas memberi kami pandangan dinamis dari proses, diperbarui pada interval waktu yang ditentukan bahwa kami dapat menentukan keduanya saat meluncurkan program dan secara interaktif (default adalah 3 detik).

Top tidak hanya menunjukkan kepada kita representasi dinamis dari proses berjalan: kita dapat berinteraksi dengan mereka dan dengan program itu sendiri, dengan menggunakan beberapa kunci. Misalnya, menekan B memungkinkan kami mengalihkan penggunaan karakter yang berani, D memungkinkan kami memasukkan nilai untuk mengubah waktu tunda, k memungkinkan kami mengirim sinyal ke suatu proses dengan meminta untuk itu Pid dan untuk sinyal kode, dengan Sigterm menjadi default.

Ubah prioritas proses dengan Nice dan Renice

Seperti yang telah kita lihat sebelumnya, setiap proses memiliki a prioritas ditugaskan untuk itu, yang menunjukkan seberapa banyak proses harus menunggu proses lain untuk membebaskan sumber daya sebelum dapat mengaksesnya. Prioritas ini dapat ditentukan dengan nilai yang dalam kisaran yang berjalan dari -20 ke 19. Semakin sedikit nilainya, semakin tertinggi prioritas proses. Ini bisa tampak kontra-intuitif pada awalnya, tetapi lihat seperti ini: semakin bagus prosesnya untuk proses lain, semakin banyak mereka akan melampaui mengakses sumber daya.

Tapi bagaimana kita bisa menetapkan prioritas suatu proses? Kita bisa menggunakan Bagus program untuk menyelesaikan tugas. Katakanlah Anda ingin menjalankan skrip dengan nilai prioritas serendah mungkin: Anda akan mengawali dengan cara ini:

$ bagus -n 19 ./naskah.SH

Anda juga dapat mengubah prioritas program yang sudah berjalan dengan menggunakan Renice mengetahui itu Pid:

# renice -n 15 pid

Di mana pid adalah id proses dari program. Ingatlah bahwa Renice Perintah harus dijalankan dengan izin root.

Kirim Sinyal ke Proses dengan Perintah Kill and Killall

Kita dapat menggunakan perintah kill untuk mengirim a sinyal untuk proses yang menjadi milik kita, atau untuk setiap proses jika kita memiliki izin root. Berbagai sinyal yang dapat kami kirim diidentifikasi dengan angka: kami dapat dengan mudah melihat korespondensi ini dengan menjalankan perintah membunuh dengan -l pilihan:

$ kill -l 1) Sighup 2) Sigint 3) Sigquit 4) Sigill 5) Sigtrap 6) SigabrT 7) Sigbus 8) Sigfpe 9) Sigkill 10) Sigusr1 11) Sigsegv 12) Sigusr2 13) Sigpipe 14) Sigalrm 15) ) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTmin+8 43) SIGRTMIN+9 44) 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-12) 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) 

Jika tidak ada opsi yang diteruskan ke membunuh perintah, secara default itu akan mengirim a Sigterm Sinyal ke proses yang ditentukan, yang dapat bereaksi terakhir dengan berbagai cara: mungkin segera berhenti, cobalah untuk melakukan pembersihan sebelum berhenti, atau hanya mengabaikan sinyal.

Untuk menentukan sinyal yang akan dikirim menggunakan Kill, kami menjalankan perintah diikuti dengan tanda hubung dan jumlah sinyal yang akan dikirim. Misalnya untuk menjalankan a Sigkill sinyal kita harus menjalankan:

Bunuh -9 PID

Itu Sigkill sinyal, tidak seperti Sigterm tidak dapat ditangkap oleh proses, yang tidak dapat bereaksi: itu hanya akan diakhiri segera.

Sinyal lain yang sering Anda lihat adalah Sigint yang merupakan sinyal yang dikirim pada interupsi keyboard (CTRL-C). Ia juga mencoba untuk menghentikan proses dengan cara yang anggun, dan dapat diabaikan dengan proses tersebut. Sigstop Dan Sigcont masing -masing akan menangguhkan dan melanjutkan pelaksanaan suatu proses: yang pertama, seperti Sigkill tidak bisa ditangkap atau diabaikan. Untuk daftar lengkap dan deskripsi sinyal yang dapat Anda konsultasikan dengan manual sinyal (7) berlari:

Sinyal Man 7

Itu Bunuh semua Program memiliki tujuan yang sama membunuh, dan seperti membunuh, mengirimkan Sigterm sinyal saat tidak ada yang ditentukan, (kali ini dengan --sinyal opsi), tetapi alih -alih merujuk suatu proses dengan itu Pid, itu akan melakukannya dengan nama perintah, secara efektif membunuh semua proses berjalan di bawah yang sama.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Alat Pemantauan Sistem Terbaik untuk Linux
  • Ubuntu 20.04 Pemantauan Sistem dengan Widget Conky
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Optimalisasi Kinerja Linux: Alat dan Teknik
  • Ubuntu 22.04 Pemantauan Sistem dengan Widget Conky
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Unduh Linux