Asas Pengurusan Proses di Linux

Asas Pengurusan Proses di Linux

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 menggunakan sudo 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