Asas Pengurusan Proses di Linux
- 4817
- 60
- Jerome Quitzon
Objektif
Ketahui asas Pengurusan Proses di Linux
Sistem operasi dan versi perisian
- Sistem operasi: - Semua pengagihan Linux
Keperluan
- Beberapa program yang disebut dalam tutorial ini memerlukan akses root
Kesukaran
Mudah
Konvensyen
- # - Memerlukan arahan Linux yang diberikan dengan keistimewaan akar sama ada
secara langsung sebagai pengguna akar atau dengan menggunakansudo
perintah - $ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak
Pengenalan
Salah satu aktiviti teras pentadbir sistem ialah pemantauan dan berinteraksi dengan proses yang berjalan pada mesin. Dalam tutorial ini, anda akan diperkenalkan kepada penggunaan beberapa alat asas yang akan membantu anda mencapai tugas penting itu.
Perintah PS
PS adalah salah satu program asas yang digunakan dalam pemantauan proses: pada dasarnya memberi anda a Snapshot
proses yang berjalan pada mesin pada saat anda memohon arahan. Mari kita lihat dalam tindakan: pertama kita akan cuba menjalankannya tanpa sebarang pilihan:
$ ps pid tty time cmd 24424 pts/0 00:00:00 bash 24468 pts/0 00:00:00 ps
Seperti yang anda lihat dari output di atas, hanya dua proses yang ditunjukkan: bash
dengan Pid
(ID Proses) 24424
dan ps
sendiri dengan pid 24468
. Ini kerana apabila dipanggil tanpa pilihan, ps
arahan menunjukkan proses yang berkaitan dengan Uid
pengguna yang melancarkan perintah, dan terminal dari mana ia dipanggil.
Cara Mengatasi Batasan Ini? Menggunakan -a
pilihan yang boleh kita buat ps
untuk menunjukkan kepada kita semua proses, kecuali pemimpin sesi
dan proses yang tidak dikaitkan dengan terminal.
Pemimpin sesi adalah proses yang mempunyai PID yang sama dari Sid
(ID Sesi) sesi yang mana (yang pertama) ahli. Apabila proses dibuat, ia dibuat sebahagian daripada sesi yang sama proses induknya: kerana oleh konvensyen ID sesi adalah sama dari Pid
daripada ahli pertamanya, kami memanggil proses ini a Pemimpin Sesi
. Mari cuba lari ps
dengan -a
pilihan dan periksa outputnya:
$ ps -a pid tty time cmd 12466 tty1 00:00:00 gnome-session-b 12480 tty1 00:00:17 gnome-shell 12879 tty1 00:00:00 xwayland 12954 tty1 00:00 gsd-sound 12955 tty1 00:00:00 GSD-WACOM 12957 TTY1 00:00:00 GSD-XSETTINGS 12961 TTY1 00:00:00 GSD-A11Y-KEYBOA 12962 TTY1 00:00:00 GSD-A11Y 12965 TTY1 -Clipboard 12966 TTY1 00:00:03 GSD-Color 12967 TTY1 00:00:00 GSD-Datetime 12970 TTY1 00:00:00 GSD-HOSEKEPIN 12971 TTY1 00:00:00 GSD-KEYBOW 12972 -media-keys 12973 TTY1 00:00:00 GSD-MOUSE 12976 TTY1 00:00:00 GSD-Orientation [...]
Output program telah dipotong, tetapi anda dapat dengan mudah melihat bahawa ia kini termasuk proses yang tergolong dalam terminal dan pengguna yang berbeza. Output menunjukkan maklumat mengenai kita Pid
Dalam lajur pertama, Tty
pada yang kedua, MASA
yang merupakan masa kumulatif yang dibelanjakan oleh CPU untuk proses itu, dan Cmd
yang merupakan arahan yang memulakan prosesnya.
Untuk mempunyai output yang lebih kaya, kita dapat menambah -u
dan -x
Pilihan: Yang pertama memberitahu ps
untuk membuat pilihan oleh ID Pengguna
, Walaupun yang terakhir mengarahkan program untuk memasukkan juga proses yang tidak dikaitkan dengan terminal, seperti daemon:
$ PS -UUX 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 Jul20 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 bahawa banyak maklumat baru telah ditambah. Lajur baru output pertama adalah %CPU
: ini menunjukkan penggunaan CPU proses, dinyatakan sebagai peratusan. Peratusan juga digunakan untuk lajur seterusnya, %Mem
, yang menunjukkan memori fizikal pada mesin yang digunakan oleh proses. VSZ
adalah saiz memori maya proses yang dinyatakan dalam kib.
The Stat
Lajur menggunakan kod untuk menyatakan keadaan proses. Kami tidak akan menerangkan semua negeri yang mungkin di sini, tetapi hanya menerangkan yang terdapat dalam output di atas (anda boleh mempunyai gambaran lengkap dengan berunding dengan PS Manpage).
Mari kita periksa proses pertama dalam output: ia mempunyai PID 1
, oleh itu adalah proses pertama yang dilancarkan oleh kernel. Ini masuk akal, kita dapat melihat bahawa ia adalah sistemd
, sistem init linux yang agak baru, yang kini diterima pakai oleh hampir semua pengagihan. Pertama sekali kita mempunyai S
yang menunjukkan bahawa proses itu berada dalam keadaan tidur yang boleh diganggu
yang bermaksud bahawa ia tidak terbiar, dan akan bangun sebaik sahaja ia menerima input. The s
, Sebaliknya, memberitahu kita bahawa prosesnya adalah Pemimpin Sesi
.
Simbol lain, tidak muncul dalam mentah pertama, tetapi dalam beberapa proses lain, deskripsi adalah <
yang menunjukkan bahawa proses mempunyai keutamaan yang tinggi, dan oleh itu rendah Bagus
Nilai (kita akan melihat nilai yang bagus di bahagian yang berkaitan dengan tutorial ini). An L
di dalam Stat
lajur, menunjukkan bahawa proses itu berbilang threaded, dan a +
tanda, bahawa ia berada dalam kumpulan proses latar depan.
Akhirnya, dalam lajur terakhir, kami mempunyai Mula
lajur, menunjukkan masa arahan bermula.
Satu lagi pilihan bagus yang boleh kita lalui ps
perintah, adalah -o
, yang merupakan versi pendek dari --format
. Pilihan ini membolehkan anda mengubah suai output dengan menggunakan ruang letak, menentukan lajur apa yang hendak ditunjukkan. Sebagai contoh, berjalan:
$ ps -ax -o%u%p%n%c
Akan memberi kita Pengguna
lajur pertama (%u), diikuti oleh Pid
proses (%p), oleh Ni
lajur (%n), yang menunjukkan Bagus
tahap, dan akhirnya oleh Perintah
lajur (%c):
Pengguna pid ni perintah root 1 0 sistemd 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 akar 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 akar 21 0 rcuos/1 root 22 0 rcuob/1 root 23 0 cpuhp/2 root 24 - watchdog/2 root 25 - migrasi/2 root 26 0 ksoftirqd/2
Menggunakan 'atas' untuk berinteraksi secara dinamik dengan proses
Manakala ps
memberi kami gambaran statik proses dan maklumat mereka pada masa anda menjalankannya, Atas
memberi kita pandangan yang dinamik mengenai proses, dikemas kini pada selang waktu yang ditentukan yang dapat kita tentukan kedua -duanya ketika melancarkan program dan interaktif (lalai adalah 3 saat).
Atas tidak hanya menunjukkan kepada kita perwakilan dinamik proses yang berjalan: kita boleh berinteraksi dengan mereka dan dengan program itu sendiri, dengan menggunakan beberapa kunci. Contohnya, menekan B
membolehkan kita bertukar -tukar penggunaan watak berani, d
membolehkan kita memasukkan nilai untuk mengubah masa kelewatan, k
membolehkan kita menghantar isyarat kepada proses dengan meminta untuknya Pid
dan untuk isyarat
Kod, dengan Sigterm
menjadi lalai.
Tukar keutamaan proses dengan Nice dan Renice
Seperti yang telah kita lihat sebelumnya, setiap proses mempunyai keutamaan
diberikan kepadanya, yang menunjukkan berapa banyak proses yang perlu menunggu proses lain untuk membebaskan sumber sebelum dapat mengaksesnya. Keutamaan ini boleh ditentukan dengan nilai yang berada dalam julat yang berlaku -20
ke 19
. Semakin kurang nilai, yang tertinggi keutamaan proses. Ini kelihatannya tidak bersifat kontra pada mulanya, tetapi melihatnya dengan cara ini: proses yang lebih baik untuk proses lain, semakin banyak mereka akan melampauinya dalam mengakses sumber.
Tetapi bagaimana kita dapat menetapkan keutamaan proses? Kita boleh menggunakan Bagus
program untuk menyelesaikan tugas. Katakan anda ingin menjalankan skrip dengan nilai keutamaan yang paling rendah: Anda akan mengemukakannya dengan cara ini:
$ Nice -n 19 ./skrip.sh
Anda juga boleh mengubah keutamaan program yang sudah berjalan dengan penggunaan Renice
mengetahui Pid
:
# renice -n 15 pid
Di mana PID adalah id proses program. Ingatlah bahawa Renice
Perintah mesti dijalankan dengan kebenaran akar.
Hantar isyarat ke proses dengan arahan Kill dan Killall
Kita boleh menggunakan arahan membunuh untuk menghantar a isyarat
ke proses yang milik kita, atau setiap proses jika kita mempunyai kebenaran akar. Pelbagai isyarat yang boleh kita hantar dikenal pasti dengan nombor: kita dapat dengan mudah melihat surat -menyurat 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) Sigstkflt 17) sigchld 18) sigcont 19) sigstop 20) sigtstp 21) sigttin 22) sigttou 23) sigurg 24) sigxcpu 25) sigxfsz 26) sigvtalrm 27) 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) 45) Sigrtmin+11 46) Sigrtmin+12 47) Sigrtmin+13 48) Sigrtmin+14 49) Sigrtmin+15 50) Sigrtmax-14 51) Sigrtmax-13 52) 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3)
Sekiranya tiada pilihan diserahkan kepada bunuh
perintah, secara lalai ia akan menghantar a Sigterm
Isyarat kepada proses yang ditentukan, yang boleh bertindak balas dengan pelbagai cara: ia boleh berhenti dengan segera, cuba lakukan pembersihan sebelum berhenti, atau mengabaikan isyarat.
Untuk menentukan isyarat yang akan dihantar menggunakan membunuh, kami menjalankan arahan diikuti dengan dash dan bilangan isyarat yang akan dihantar. Contohnya untuk menjalankan a Sigkill
Isyarat kita harus menjalankan:
Bunuh -9 PID
The Sigkill
Isyarat, tidak seperti Sigterm
tidak dapat ditangkap oleh proses, yang tidak dapat bertindak balas: ia hanya akan ditamatkan dengan segera.
Isyarat lain yang sering anda lihat adalah Sigint
yang merupakan isyarat yang dihantar pada gangguan keyboard (ctrl-c). Ia juga cuba menamatkan proses dengan cara yang anggun, dan boleh diabaikan oleh proses. Sigstop
dan Sigcont
masing -masing akan menggantung dan meneruskan pelaksanaan proses: bekas, seperti Sigkill
tidak dapat ditangkap atau diabaikan. Untuk senarai lengkap dan perihalan isyarat, anda boleh merujuk manual untuk isyarat (7)
Berjalan:
lelaki 7 isyarat
The bunuh semua
program mempunyai tujuan yang sama dari bunuh
, Dan seperti membunuh, menghantar a Sigterm
isyarat apabila tiada yang lain ditentukan, (kali ini dengan --isyarat
pilihan), tetapi bukannya merujuk proses dengan Pid
, ia akan melakukannya dengan nama arahan, dengan berkesan membunuh semua proses yang berjalan di bawah yang sama.
Tutorial Linux Berkaitan:
- Perkara yang hendak dipasang di Ubuntu 20.04
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Alat Pemantauan Sistem Terbaik untuk Linux
- Ubuntu 20.04 Pemantauan Sistem dengan Widget Conky
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- Pengoptimuman Prestasi Linux: Alat dan Teknik
- Ubuntu 22.04 Pemantauan Sistem dengan Widget Conky
- Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
- Muat turun linux
- « Cara menjana frasa kata laluan rawak untuk dompet bitcoin pada sistem linux
- Jaga selamat rumah anda dengan sandaran kron »