GNU/Linux >> Belajar Linux >  >> Linux

10+ contoh untuk mematikan proses di Linux

Dalam tutorial ini, kita akan berbicara tentang mematikan proses di Linux dengan banyak contoh. Dalam kebanyakan kasus, ini semudah mengetik perintah “kill” diikuti dengan ID proses (biasanya disingkat PID).

Seperti yang Anda lihat, kami telah menghentikan proses dengan ID 1813.

Jika Anda adalah pengguna Windows, mungkin membantu untuk menganggap perintah 'kill' sebagai setara Linux dari tombol 'End task' di dalam task manager Windows.

Mencantumkan proses yang sedang berjalan

Perintah "ps -e" akan mencantumkan semua yang berjalan di sistem Anda. Bahkan dengan instalasi minimal, perintah tersebut mungkin akan menampilkan lebih dari 80 hasil, jadi lebih mudah untuk menyalurkan perintah ke 'grep' atau 'more'.

ps -e | grep name-of-process

Pada tangkapan layar di bawah, kami memeriksa untuk melihat apakah SSH berjalan di sistem.

Ini juga memberi kita PID daemon SSH, yaitu 1963.

Pipa ke 'lebih' jika Anda ingin melihat proses yang berjalan di sistem Anda satu per satu.

Anda juga dapat menggunakan perintah 'top' untuk melihat daftar proses yang sedang berjalan. Ini berguna karena akan menunjukkan kepada Anda berapa banyak sumber daya sistem yang digunakan setiap proses.

PID, Pengguna, dan nama sumber daya semuanya diidentifikasi di sini, yang berguna jika Anda memutuskan untuk mematikan salah satu layanan ini nanti.

Perhatikan kolom %CPU dan %MEM, karena jika Anda melihat proses yang tidak penting memakan sumber daya sistem yang berharga, mungkin ada baiknya untuk mematikannya!

Cara lain yang sangat efisien untuk mendapatkan ID proses yang sesuai adalah dengan menggunakan perintah 'pgrep'. Satu-satunya argumen yang perlu Anda berikan adalah nama (atau bagian dari nama) dari proses yang sedang berjalan.

Begini tampilannya saat kita mencari SSH. Seperti yang Anda lihat, ia mengembalikan ID proses 2506.

Bunuh proses dengan PID

Sekarang setelah kita mengetahui PID daemon SSH, kita dapat mematikan proses dengan perintah kill.

$ sudo kill 1963

Anda dapat mengeluarkan perintah 'ps' terakhir, hanya untuk memastikan bahwa proses tersebut memang dihentikan.

$ ps -e | grep ssh

Hasilnya muncul kosong, artinya proses berhasil dimatikan. Jika Anda melihat bahwa proses terus berjalan – yang seharusnya tidak terjadi – Anda dapat mencoba mengirim sinyal mematikan yang berbeda ke proses, seperti yang dibahas pada sesi berikutnya.

Catatan:Tidak selalu perlu menggunakan 'sudo' atau akun pengguna root untuk mengakhiri proses. Dalam contoh sebelumnya, kami menghentikan daemon SSH, yang dijalankan di bawah pengguna root. Oleh karena itu, kita harus memiliki izin yang sesuai untuk mengakhiri proses.

Sinyal default dikirim oleh perintah kill

Secara default, perintah kill akan mengirimkan sinyal SIGTERM ke proses yang Anda tentukan.

Ini akan memungkinkan proses untuk berhenti dengan baik, karena SIGTERM akan memberi tahu proses untuk melakukan prosedur shutdown normal – dengan kata lain, itu tidak memaksa proses untuk berakhir secara tiba-tiba.

Ini adalah hal yang baik karena kami ingin proses kami berhenti seperti yang dimaksudkan.

Namun, terkadang sinyal SIGTERM tidak cukup untuk mematikan suatu proses. Jika Anda menjalankan perintah kill dan melihat bahwa proses masih berjalan, proses tersebut mungkin masih melalui proses penonaktifan, atau mungkin telah berhenti total.

Pembunuhan paksa

Untuk memaksa proses menutup dan mengabaikan shutdown normalnya, Anda dapat mengirim sinyal SIGKILL dengan sakelar -9, seperti yang ditunjukkan di sini:

$ kill -9 processID

Anda mungkin tergoda untuk selalu menambahkan tombol -9 pada perintah kill Anda karena selalu berfungsi. Namun, ini bukan praktik terbaik yang disarankan. Anda hanya boleh menggunakannya pada proses yang terhenti dan menolak untuk dimatikan dengan benar.

Jika memungkinkan, gunakan sinyal SIGTERM default. Ini akan mencegah kesalahan dalam jangka panjang, karena memberikan proses kesempatan untuk menutup file lognya, menghentikan koneksi yang tersisa, dll.

Selain sinyal SIGTERM dan SIGKILL, ada banyak sinyal lain yang dapat dikirim oleh kill ke proses, yang semuanya dapat dilihat dengan sakelar -l.

Angka-angka di sebelah nama adalah apa yang akan Anda tentukan dalam perintah 'bunuh' Anda. Misalnya, kill -9 adalah SIGKILL, seperti yang Anda lihat pada tangkapan layar di atas.

Untuk operasi sehari-hari, SIGTERM dan SIGKILL mungkin adalah satu-satunya sinyal yang tidak perlu Anda gunakan. Ingatlah yang lain jika Anda memiliki keadaan aneh di mana suatu proses merekomendasikan untuk menghentikannya dengan sinyal yang berbeda.

Bagaimana cara mematikan semua proses dengan nama?

Anda juga dapat menggunakan nama proses yang sedang berjalan, bukan PID, dengan perintah pkill. Namun berhati-hatilah, ini akan menghentikan semua proses yang berjalan di bawah nama yang ditentukan, karena kill tidak akan tahu proses spesifik mana yang Anda coba hentikan.

$ pkill name-of-process

Lihat contoh di bawah ini, di mana kami menghentikan lima proses dengan satu perintah pkill.

Dalam contoh ini, kami hanya ingin menghentikan salah satu sesi layar tersebut; perlu untuk menentukan PID dan menggunakan perintah 'kill' yang normal. Jika tidak, tidak ada cara untuk secara unik menentukan proses yang ingin kita akhiri.

Bagaimana cara mematikan semua proses oleh pengguna?

Anda juga dapat menggunakan perintah pkill untuk menghentikan semua proses yang dijalankan oleh pengguna Linux. Pertama, untuk melihat proses apa yang berjalan di bawah pengguna tertentu, gunakan perintah ps dengan sakelar -u.

$ ps -u username

Tangkapan layar itu menunjukkan kepada kita bahwa saat ini ada lima layanan yang berjalan di bawah pengguna 'geek'. Jika Anda perlu menghentikan semuanya dengan cepat, Anda dapat melakukannya dengan pkill.

$ pkill -u username

Bagaimana cara menghentikan proses nohup?

Anda dapat mematikan proses nohup dengan cara yang sama seperti proses berjalan lainnya. Perhatikan bahwa Anda tidak dapat mengambil "nohup" di perintah ps, jadi Anda harus mencari proses yang sedang berjalan menggunakan metode yang sama seperti yang ditunjukkan di atas.

Dalam contoh ini, kami menemukan skrip berjudul 'test.sh' yang telah dieksekusi dengan perintah nohup. Seperti yang akan Anda lihat, menemukan dan mengakhirinya hampir sama dengan contoh di atas.

Satu-satunya perbedaan dengan output adalah bahwa shell memberi tahu kami bahwa proses telah dihentikan. Itu bukan bagian dari pembunuhan, melainkan hasil dari menjalankan skrip di latar belakang (ampersand dalam contoh ini) dan terhubung ke tty yang sama dengan tempat skrip dimulai.

$ nohup ./test.sh &

Bagaimana cara menjalankan proses di latar belakang?

Perintah kill adalah cara yang efisien untuk menghentikan proses yang Anda jalankan di latar belakang. Anda telah mempelajari cara mematikan proses dalam tutorial ini, tetapi mengetahui cara menjalankan proses di latar belakang adalah kombinasi yang efektif untuk digunakan dengan perintah kill.

Anda dapat menambahkan ampersand (&) ke perintah Anda untuk menjalankannya di latar belakang. Ini berguna untuk perintah atau skrip yang membutuhkan waktu untuk dieksekusi, dan Anda ingin melakukan tugas lain sementara itu.

Di sini kita telah menempatkan perintah 'ls' sederhana ke latar belakang. Karena ini adalah jenis perintah yang membutuhkan waktu yang sangat sedikit untuk dieksekusi, kami diberi lebih banyak output tentang itu menyelesaikan pekerjaannya secara langsung setelahnya.

Output di tangkapan layar kami mengatakan "Selesai", yang berarti bahwa pekerjaan di latar belakang telah berhasil diselesaikan. Jika Anda mematikan pekerjaan sebagai gantinya, itu akan menunjukkan "dihentikan" di output.

Anda juga dapat memindahkan pekerjaan ke latar belakang dengan menekan Ctrl+Z pada keyboard Anda. ^Z dalam tangkapan layar ini menunjukkan bahwa kami menekan Ctrl+Z dan skrip test.sh pindah ke latar belakang.

Anda dapat melihat test.sh terus berjalan di latar belakang dengan mengeluarkan perintah ps.

$ ps -e | grep test.sh

Menggunakan perintah layar

Cara lain untuk menjalankan proses di latar belakang adalah dengan menggunakan perintah 'layar'. Ini bekerja dengan membuat apa yang pada dasarnya berjumlah jendela terminal terpisah (atau layar dan karenanya namanya).

Setiap layar yang Anda buat memiliki ID prosesnya sendiri, yang berarti bahwa ini adalah cara yang efisien untuk membuat proses latar belakang yang nantinya dapat dihentikan menggunakan perintah kill.

Perintah layar tidak disertakan dengan semua penginstalan Linux secara default, jadi Anda mungkin harus menginstalnya.

Pada distribusi berbasis Ubuntu dan Debian, Anda dapat menginstalnya dengan perintah berikut:

$ sudo apt-get install screen

Setelah Anda menginstal perintah layar, Anda dapat membuat sesi baru hanya dengan mengetik 'layar'.:

$ screen

Namun, sebelum Anda melakukannya, ada baiknya membiasakan diri menentukan nama untuk layar Anda. Dengan begitu, mereka mudah dicari dan diidentifikasi nanti. Yang Anda butuhkan untuk menentukan nama adalah tombol -S.

$ screen -S my-screen-name

Mari kita buat layar yang disebut "pengujian" dan kemudian coba hentikan dengan perintah 'bunuh'. Kita mulai seperti ini:

Setelah mengetik perintah ini dan menekan enter, kita langsung dibawa ke layar yang baru kita buat. Di sinilah Anda dapat memulai proses yang ingin Anda jalankan di latar belakang.

Ini sangat berguna jika Anda menggunakan SSH ke server dan membutuhkan proses untuk terus berjalan bahkan setelah Anda memutuskan sambungan.

Dengan menjalankan perintah/skrip, Anda dapat memutuskan sambungan dari layar dengan menekan Ctrl+A, diikuti dengan D (lepaskan tombol Ctrl dan A sebelum menekan tombol D).

Seperti yang Anda lihat, perintah layar telah mencantumkan ID proses segera setelah kami melepaskan layar. Tentu saja, kita dapat menghentikan layar ini (dan perintah/skrip yang berjalan di dalamnya), dengan menggunakan perintah kill.

Anda dapat dengan mudah mencari ID proses sesi layar Anda dengan menggunakan perintah ini:

$ screen -ls

Jika kami tidak menamai sesi layar kami dengan menggunakan sakelar -S, hanya ID proses itu sendiri yang akan dicantumkan. Untuk memasang kembali ke salah satu layar yang terdaftar, Anda dapat menggunakan tombol -r:

$ screen -r name-of-screen

atau

$ screen -r PID

Pada tangkapan layar di bawah, kami mematikan sesi layar yang kami buat (bersama dengan apa pun yang dijalankan di dalamnya), dan kemudian mengeluarkan perintah screen -ls lain untuk memverifikasi bahwa prosesnya memang telah berakhir.

Bagaimana cara menghentikan proses latar belakang?

Dalam salah satu contoh kami di bagian sebelumnya, kami menempatkan skrip tesh.sh kami untuk dijalankan di latar belakang. Sebagian besar proses latar belakang, terutama perintah sederhana, akan berakhir tanpa kerumitan.

Namun, sama seperti proses lainnya, proses di latar belakang mungkin menolak untuk dimatikan dengan mudah. Skrip test.sh kami memiliki PID 2382, jadi kami akan mengeluarkan perintah berikut:

$ kill 2383

Namun, di tangkapan layar, Anda akan melihat bahwa skrip telah mengabaikan perintah kill kami:

Seperti yang telah kita pelajari, kill -9 adalah cara terbaik untuk menghentikan proses yang terhenti atau menolak untuk dihentikan.

Bagaimana cara menghentikan proses yang terhenti?

Ini dapat berguna untuk membunuh semua pekerjaan latar belakang Anda yang dihentikan sekaligus jika telah terakumulasi dan tidak lagi berguna bagi Anda. Sebagai contoh, kami menjalankan tiga contoh skrip test.sh kami di latar belakang dan mereka telah dihentikan:

$ ./test.sh &

Anda dapat melihat proses ini dengan perintah ps:

$ ps -e | grep test.sh

Atau, untuk mendapatkan daftar semua pekerjaan yang dihentikan pada sistem, Anda dapat menjalankan perintah pekerjaan:

$ jobs

Cara termudah untuk menghentikan semua pekerjaan yang dihentikan adalah dengan perintah berikut:

$ kill `jobs -ps`

Atau gunakan tombol -9 untuk memastikan pekerjaan segera dihentikan:

$ kill -9 `jobs -ps`

Perintah `jobs -ps` akan mencantumkan semua PID pekerjaan yang berjalan di latar belakang, itulah sebabnya kami dapat menggabungkan outputnya dengan perintah kill untuk mengakhiri semua proses yang dihentikan.

Operasi pembunuhan tidak diizinkan

Jika Anda mendapatkan kesalahan "operasi tidak diizinkan" saat mencoba mematikan proses, itu karena Anda tidak memiliki izin yang tepat. Masuk ke akun root atau gunakan 'sudo' (pada distribusi Debian) sebelum perintah kill Anda.

$ sudo kill PID

Saya harap Anda menemukan tutorial yang bermanfaat. Terus kembali.


Linux
  1. Cara mematikan proses zombie di Linux

  2. 8 perintah Linux untuk manajemen proses yang efektif

  3. Contoh Perintah renice di Linux

  1. bunuh Contoh Perintah di Linux

  2. Contoh Perintah pkill di Linux

  3. Membunuh proses di Raspbian

  1. 12 Contoh Perintah IP untuk Pengguna Linux

  2. Cara Membunuh Proses di Linux

  3. Bunuh Perintah di Linux