Fundamental Proses Manajemen di Linux
- 3975
- 1020
- Miss Angelo Toy
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 menggunakansudo
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
- « Cara menghasilkan kata sandi kata acak untuk dompet bitcoin pada sistem linux
- Jaga keamanan rumah /rumah Anda dengan cron cadangan »