GNU/Linux >> Belajar Linux >  >> Linux

Mengelola proses di Linux dengan kill dan killall

Di Linux, setiap program dan daemon adalah "proses". Sebagian besar proses mewakili satu program yang sedang berjalan. Program lain dapat memotong proses lain, seperti proses untuk mendengarkan hal-hal tertentu terjadi dan kemudian menanggapinya. Dan setiap proses membutuhkan sejumlah memori dan kekuatan pemrosesan. Semakin banyak proses yang Anda jalankan, semakin banyak memori dan siklus CPU yang Anda perlukan. Pada sistem yang lebih lama, seperti laptop saya yang berusia tujuh tahun, atau komputer yang lebih kecil, seperti Raspberry Pi, Anda bisa mendapatkan hasil maksimal dari sistem Anda jika Anda mengawasi proses yang sedang berjalan di latar belakang.

Anda bisa mendapatkan daftar proses yang berjalan dengan ps memerintah. Anda biasanya ingin memberikan ps beberapa opsi untuk menampilkan lebih banyak informasi dalam outputnya. Saya suka menggunakan -e opsi untuk melihat setiap proses yang berjalan di sistem saya, dan -f opsi untuk mendapatkan detail lengkap tentang setiap proses. Berikut beberapa contohnya:

$ ps
    PID TTY          TIME CMD
  88000 pts/0    00:00:00 bash
  88052 pts/0    00:00:00 ps
  88053 pts/0    00:00:00 head
$ ps -e | head
    PID TTY          TIME CMD
      1 ?        00:00:50 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      6 ?        00:00:02 kworker/0:0H-events_highpri
      9 ?        00:00:00 mm_percpu_wq
     10 ?        00:00:01 ksoftirqd/0
     11 ?        00:00:12 rcu_sched
     12 ?        00:00:00 migration/0
$ ps -ef | head
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 13:51 ?        00:00:50 /usr/lib/systemd/systemd --switched-root --system --deserialize 36
root           2       0  0 13:51 ?        00:00:00 [kthreadd]
root           3       2  0 13:51 ?        00:00:00 [rcu_gp]
root           4       2  0 13:51 ?        00:00:00 [rcu_par_gp]
root           6       2  0 13:51 ?        00:00:02 [kworker/0:0H-kblockd]
root           9       2  0 13:51 ?        00:00:00 [mm_percpu_wq]
root          10       2  0 13:51 ?        00:00:01 [ksoftirqd/0]
root          11       2  0 13:51 ?        00:00:12 [rcu_sched]
root          12       2  0 13:51 ?        00:00:00 [migration/0]

Contoh terakhir menunjukkan paling detail. Pada setiap baris, UID (ID pengguna) menunjukkan pengguna yang memiliki proses. PID (ID proses) mewakili ID numerik setiap proses, dan PPID (ID proses induk) menunjukkan ID proses yang memunculkan proses ini. Dalam sistem Unix mana pun, proses dihitung dari PID 1, proses pertama yang dijalankan setelah kernel dijalankan. Di sini, systemd adalah proses pertama, yang melahirkan kthreadd . Dan kthreadd membuat proses lain termasuk rcu_gp , rcu_par_gp , dan banyak lainnya.

Manajemen proses dengan perintah kill

Sistem akan menangani sebagian besar proses latar belakang sendiri, jadi Anda tidak perlu mengkhawatirkannya. Anda hanya perlu terlibat dalam mengelola proses apa pun yang Anda buat, biasanya dengan menjalankan aplikasi. Sementara banyak aplikasi menjalankan satu proses pada satu waktu (pikirkan tentang pemutar musik atau emulator terminal atau game Anda), aplikasi lain mungkin membuat proses latar belakang. Beberapa di antaranya mungkin tetap berjalan saat Anda keluar dari aplikasi sehingga dapat kembali bekerja dengan cepat saat Anda memulai aplikasi lagi.

Manajemen proses menjadi masalah saat saya menjalankan Chromium, basis sumber terbuka untuk browser Google Chrome. Chromium membuat laptop saya bekerja cukup keras dan menjalankan banyak proses ekstra. Saat ini, saya dapat melihat proses Chromium ini berjalan dengan hanya lima tab yang terbuka:

$ ps -ef | fgrep chromium
jhall      66221   [...]  /usr/lib64/chromium-browser/chromium-browser [...]
jhall      66230   [...]  /usr/lib64/chromium-browser/chromium-browser [...]
[...]
jhall      66861   [...]  /usr/lib64/chromium-browser/chromium-browser [...]
jhall      67329   65132  0 15:45 pts/0    00:00:00 grep -F chromium

Saya telah menghilangkan beberapa baris, tetapi ada 20 proses Chromium dan satu grep proses yang mencari string "chromium."

$ ps -ef | fgrep chromium | wc -l
21

Tetapi setelah saya keluar dari Chromium, proses tersebut tetap terbuka. Bagaimana Anda mematikannya dan mendapatkan kembali memori dan CPU yang digunakan oleh proses tersebut?

membunuh perintah memungkinkan Anda menghentikan suatu proses. Dalam kasus paling sederhana, Anda memberi tahu bunuh PID yang ingin Anda hentikan. Misalnya, untuk menghentikan setiap proses ini, saya perlu menjalankan kill perintah terhadap masing-masing dari 20 ID proses Chromium. Salah satu cara untuk melakukannya adalah dengan baris perintah yang mendapatkan PID Chromium dan baris lain yang menjalankan kill terhadap daftar itu:

$ ps -ef | fgrep /usr/lib64/chromium-browser/chromium-browser | awk '{print $2}'
66221
66230
66239
66257
66262
66283
66284
66285
66324
66337
66360
66370
66386
66402
66503
66539
66595
66734
66848
66861
69702

$ ps -ef | fgrep /usr/lib64/chromium-browser/chromium-browser | awk '{print $2}' > /tmp/pids
$ kill $( cat /tmp/pids)

Dua baris terakhir adalah kuncinya. Baris perintah pertama menghasilkan daftar ID proses untuk browser Chromium. Baris perintah kedua menjalankan kill perintah terhadap daftar ID proses tersebut.

Memperkenalkan perintah killall

Cara yang lebih sederhana untuk menghentikan sekelompok proses sekaligus adalah dengan menggunakan killall memerintah. Seperti yang bisa Anda tebak dari namanya, killall mengakhiri semua proses yang cocok dengan nama. Itu berarti kita dapat menggunakan perintah ini untuk menghentikan semua proses Chromium jahat kita. Ini sesederhana:

$ killall /usr/lib64/chromium-browser/chromium-browser

Tapi hati-hati dengan killall . Perintah ini dapat menghentikan proses apa pun yang cocok dengan apa yang Anda berikan. Itu sebabnya saya suka menggunakan ps -ef first untuk memeriksa proses saya yang sedang berjalan, lalu jalankan killall terhadap jalur yang tepat ke perintah yang ingin saya hentikan.

Anda mungkin juga ingin menggunakan -i atau --interaktif opsi untuk meminta bunuh semua untuk meminta Anda sebelum menghentikan setiap proses.

membunuh juga mendukung opsi untuk memilih proses yang lebih lama dari waktu tertentu menggunakan -o atau --lebih tua dari pilihan. Ini dapat membantu jika Anda menemukan serangkaian proses jahat yang telah berjalan tanpa pengawasan selama beberapa hari, misalnya. Atau Anda dapat memilih proses yang lebih muda dari waktu tertentu, seperti proses runaway yang baru saja Anda mulai. Gunakan -y atau --lebih muda dari pilihan untuk memilih proses ini.

Cara lain untuk mengelola proses

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Manajemen proses dapat menjadi bagian penting dari pemeliharaan sistem. Pada awal karir saya sebagai administrator sistem Unix dan Linux, kemampuan untuk mematikan pekerjaan yang lolos adalah alat yang berguna untuk menjaga sistem tetap berjalan dengan baik. Anda mungkin tidak perlu menghentikan proses jahat di desktop Linux modern, tetapi mengetahui membunuh dan bunuh semua dapat membantu Anda saat terjadi masalah.

Anda juga dapat mencari cara lain untuk mengelola proses. Dalam kasus saya, saya tidak benar-benar perlu menggunakan kill atau bunuh semua untuk menghentikan proses Chromium latar belakang setelah saya keluar dari browser. Ada pengaturan sederhana di Chromium untuk mengontrolnya:

Namun, itu selalu merupakan ide yang baik untuk mengawasi proses apa yang berjalan di sistem Anda dan mengetahui cara mengelolanya saat dibutuhkan.


Linux
  1. Mengelola perangkat keras Anda yang terpasang di Linux dengan systemd-udevd

  2. Membuat dan mengelola partisi di Linux dengan parted

  3. Temukan (dan bunuh) proses lama

  1. Cara Membunuh Proses yang Berjalan di Linux

  2. Linux:Temukan dan Bunuh Proses Zombie

  3. Cara terbaik untuk mematikan proses status Zombie dan D di linux

  1. Edit teks di Linux dengan KWrite dan Kate

  2. Menyesuaikan terminal Linux saya dengan tmux dan Git

  3. Mengelola Proses Di Ubuntu Linux