Cara Membunuh Proses Linux dengan Nomor Port

  • Post author:
  • Post category:Tutorial

Untuk mematikan proses Linux, Anda memerlukan ID atau namanya. Jika yang Anda tahu hanyalah port yang digunakannya, apakah Anda masih dapat mematikannya? Ya, dalam beberapa cara berbeda.

Kadang-kadang proses Linux bisa menjadi tidak responsif. Itu mungkin berhenti beroperasi dengan benar, atau mungkin terus bekerja tetapi mengabaikan permintaan untuk mematikannya, atau mulai melahap memori, CPU, atau bandwidth jaringan.

Apa pun motif Anda, ada cara untuk mematikan proses dari baris perintah Linux. Metode klasiknya adalah menggunakan perintah kill dengan ID proses dari proses yang ingin Anda hentikan. Perintah pembunuhan memiliki beberapa kerabat dekat. Perintah pkill akan mematikan proses berdasarkan nama, dan killall akan mematikan semua proses yang dapat ditemukan yang berbagi bagian dari sebuah nama.

Jika semua yang Anda ketahui tentang suatu proses adalah menggunakan port di komputer Anda, masih ada cara untuk mengidentifikasi dan bunuh itu. Dalam istilah jaringan, “port” dapat berarti koneksi fisik tempat Anda memasukkan kabel dengan steker di ujungnya, seperti kabel jaringan CAT5 atau 6, atau dapat berarti port perangkat lunak.

A port perangkat lunak adalah bagian terakhir dari koneksi jaringan. Alamat IP perangkat mengidentifikasi komputer atau peralatan jaringan lainnya. Aplikasi di dalam komputer menggunakan port yang berbeda. Ini memberikan tingkat granularitas yang lain. Lalu lintas jaringan telah tiba di komputer yang benar menggunakan alamat IP, dan dengan menggunakan pengalamatan port, lalu lintas dapat dikirimkan ke aplikasi yang benar.

Ini seperti surat pos yang tiba di hotel, kemudian disortir dan dikirim ke kamar yang sesuai. Alamat IP seperti alamat jalan hotel, dan nomor kamar seperti nomor port.

Jika Anda melihat aktivitas jaringan di port dan Anda tidak mengenali proses yang membuatnya, atau perilakunya bermasalah atau mencurigakan , Anda mungkin ingin mematikan prosesnya. Bahkan jika Anda hanya mengetahui nomor port, Anda dapat melacak prosesnya dan mematikannya.

Membuat Koneksi Dengan socat

Agar kami memiliki beberapa koneksi untuk dimatikan, kami akan menggunakan socat untuk membuat koneksi jaringan menggunakan protokol yang berbeda. Anda harus menginstal socat . Untuk menginstalnya di Ubuntu, gunakan perintah ini:

sudo apt install socat

Di Fedora use dnf:

sudo dnf install socat

Di Manjaro Anda perlu mengetik:

sudo pacman -S socat

Sintaks untuk socat sedikit panjang- mudah. Kita perlu memberikan alamat sumber dan tujuan. Untuk masing-masing, kita perlu menyediakan protokol, alamat IP, dan nomor port. Kita dapat mengganti STDIN atau STDOUT sebagai sumber atau tujuan.

Perintah ini membuat koneksi antara soket pendengar TCP pada port 7889, pada alamat IP loopback 127.0.0.1, dan STDOUT. Ampersand “&” menjalankan perintah di latar belakang, sehingga kami mempertahankan akses ke baris perintah.

socat tcp-listen:7889,bind=127.0.0.1 stdout &

Kami akan membuat dua koneksi lagi sehingga kami memiliki sedikit pilihan soket menggunakan protokol yang berbeda. Kami akan membuat koneksi UDP dan koneksi SCTP. Satu-satunya bagian dari perintah yang berubah adalah protocol.

socat udp-listen:7889,bind=127.0.0.1 stdout &socat sctp-listen:9999,bind=127.0.0.1 stdout &

Menggunakan Kill

Tentu saja, kita dapat menggunakan kill untuk menghentikan proses, asalkan kita tahu apa ID prosesnya. Untuk menemukan PID, kita dapat menggunakan perintah lsof.

Untuk mencantumkan detail proses pada port 7889 yang menggunakan protokol TCP, kita menggunakan opsi -i (alamat internet), seperti ini.

lsof -i tcp:7889

PID dari proses ini adalah 3141, dan kita dapat melanjutkan dan menggunakannya dengan kill:

sudo kill 3141

Kita dapat menghemat beberapa upaya jika kita menggunakan pipa. Jika kita menyalurkan output lsof ke awk dan memberi tahu awk untuk mencari baris yang berisi port yang kita minati—7889—dan mencetak bidang kedua dari baris itu, kita akan mengisolasi PID.

lsof -i tcp:7889 | awk `/7889/{print $2}`

Kita kemudian dapat menyalurkan output dari awk ke perintah kill menggunakan xargs. Perintah xargs mengambil input yang disalurkan dan meneruskannya ke perintah lain sebagai parameter baris perintah. Kami akan menggunakan xargs dengan perintah kill.

lsof -i tcp:7889 | awk `/7889/{print $2}` | xargs kill

Kami tidak mendapatkan umpan balik visual. Dengan cara khas Linux, tidak ada berita adalah berita baik. Jika Anda ingin memeriksa apakah proses telah dihentikan, Anda dapat menggunakan lsof sekali lagi.

lsof -i tcp:7889

Karena lsof tidak melaporkan apa pun, kami tahu tidak ada koneksi seperti itu.

Kami dapat menghapus proses menggunakan protokol UDP hanya dengan mengganti “tcp” dengan “udp” di perintah sebelumnya.

lsof -i udp:7889 | awk `/7889/{print $2}` | xargs kill

Namun, lsof tidak mengenali protokol SCTP.

lsof -i sctp:7889

Kita dapat menggunakan perintah ss untuk melakukannya. Kami menggunakan opsi -S (SCTP) untuk mencari soket SCTP, opsi -a (semua) untuk mencari semua jenis soket (mendengarkan, menerima, terhubung, dll.), dan opsi -p (proses) untuk membuat daftar detail proses menggunakan socket.

ss -Sap

Kita dapat mengurai output tersebut menggunakan grep dan awk . Kami juga dapat menguraikannya menggunakan grep dan beberapa regex PERL, tetapi cara ini jauh lebih mudah dipahami. Jika Anda akan menggunakan ini lebih dari sekali atau dua kali, Anda mungkin akan membuat alias atau fungsi shell darinya.

Kami akan menyalurkan output dari ss ke grep dan mencari nomor port kami, 7889. Kami akan menyalurkan keluaran dari grep ke awk. Di awk, kami menggunakan opsi -F (string pemisah) untuk menyetel koma  “,” sebagai pembatas kolom. Kami menelusuri string yang berisi “pid=”, dan mencetak kolom kedua yang dipisahkan koma dari string tersebut.

ss -Sap | grep "7889" | awk -F`,` `/pid=/{print $2}`

Yang telah memberi kita string “pid=2859.”

Kita dapat menyalurkannya ke awk lagi, mengatur pembatas bidang ke tanda sama dengan “=” dan mencetak bidang kedua dari string itu, yang akan menjadi teks di belakang tanda sama dengan.

ss -Sap | grep "7889" | awk -F`,` `/pid=/{print $2}` | awk -F`=` `{print $2}`

Kami sekarang telah mengisolasi ID proses. Kita dapat menggunakan xargs untuk meneruskan PID ke kill sebagai parameter baris perintah.

ss -Sap | grep "7889" | awk -F`,` `/pid=/{print $2}` | awk -F`=` `{print $2}` | xargs kill

Itu mematikan proses yang menggunakan soket protokol SCTP pada port 7889.

Perintah fuser

Perintah fuser menyederhanakan banyak hal. Kelemahannya adalah, ini hanya berfungsi dengan soket TCP dan UDP. Di sisi positifnya, itu adalah dua jenis soket paling umum yang harus Anda tangani. Perintah fuser sudah terinstal di komputer Ubuntu, Fedora, dan Manjaro yang kami periksa.

Yang perlu Anda lakukan adalah menggunakan opsi -k (kill), dan menyediakan port dan protokol. Anda dapat menggunakan opsi -n (namespace) dan menyediakan protokol dan port, atau menggunakan “format pintasan garis miring” dan meletakkan nomor port terlebih dahulu.

fuser -n tcp 7889
fuser 7889/udp

Nomor port, protokol, dan PID dari proses yang dihentikan dicetak di jendela terminal.

Ini mungkin akan diinstal pada komputer yang Anda gunakan, dan protokolnya kemungkinan besar TCP atau UDP, jadi ada kemungkinan besar cara paling sederhana akan berhasil untuk Anda .

Itulah berita seputar Cara Membunuh Proses Linux dengan Nomor Port, semoga bermanfaat. Disadur dari HowToGeek.com.