Làm thế nào để giết một quá trình trên một cổng trên Ubuntu


488

Tôi đang cố gắng giết một tiến trình trong dòng lệnh cho một cổng cụ thể trong Ubuntu.

Nếu tôi chạy lệnh này, tôi nhận được cổng:

sudo lsof -t -i:9001

vì vậy ... bây giờ tôi muốn chạy:

sudo kill 'sudo lsof -t -i:9001'

Tôi nhận được thông báo lỗi này:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

Tôi cố gắng sudo kill 'lsof -t -i:9001'cũng


9
Các câu hỏi của FYI, Ubuntu có cơ hội được trả lời tốt hơn trên phần Ubuntu của mạng StackExchange (StackOverflow): Askubfox.com
JScoobyCed

Câu trả lời:


900

Bạn muốn sử dụng backtick không đánh dấu thường xuyên:

sudo kill -9 `sudo lsof -t -i:9001`

Nếu nó không hoạt động, bạn cũng có thể sử dụng $()cho nội suy lệnh:

sudo kill -9 $(sudo lsof -t -i:9001)

43
Bạn quên thêm tùy chọn tín hiệu. Nên đọc:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano 18/05/2015

7
@FrancescoGramano: bạn không muốn sử dụng -9 trừ khi bạn phải làm vậy.
zellio

2
khi sudo killkhông thể giết quá trình, phương pháp của @ putra.koreng hoạt động tốt
Fangxin

3
nếu ở trên không hoạt động thì hãy thử điều này: stackoverflow.com/a/50515868/9339242
Arayan Singh

1
Hệ điều hành này độc lập hay linux cụ thể? Nếu Linux cụ thể thì ngay cả lệnh này cũng hoạt độngos.system("fuser -k 8080/tcp");
Ridhuvarshan


78

CHO UBUNTU 1- Tìm ứng dụng / quy trình nào đang sử dụng pro, gõ:

sudo netstat -lpn |grep :8080

và nhấn Enter.

Bạn sẽ nhận được một đầu ra tương tự như cái này

tcp6       0      0 :::8080                 :::*                    LISTEN      6782/java

2- Tôi đã có Id quy trình, là 6782, bây giờ đây là quy trình đang sử dụng cổng 8080.

3- Giết quá trình, loại: giết 6782

kill 6782

3
Trả lời ngắn gọn và sắc nét
Vikas Kukreti

1
Hoạt động hoàn hảo
Tyler Bell

Bạn có thể vui lòng viết ra cách bạn đang sử dụng lệnh trên không?
Mohit Singh

1
Hoạt động rất tốt trong khi các lệnh trong asnwers có nhiều upvote hơn không được tìm thấy trên máy chủ Ubuntu 18.04 của tôi. Cảm ơn!
Salivan

38

Cách tốt nhất để giết một cổng trong thiết bị đầu cuối Ubuntu là fuser -k 9001/tcp


3
Làm việc hoàn hảo cho tôi
Gặp Zaveri

Nó làm việc cho tôi quá. Đây phải là câu trả lời được chấp nhận.
CodeSlave

35

Có một số quy trình không được hiển thị bằng lệnh netstat bình thường, vì vậy bạn phải kiểm tra bằng cách sử dụng sudo .

Làm sudo netstat -lpn |grep :8080. Quá trình chạy bởi hệ thống không hiển thị PID, để có được PID của quá trình này, bạn sẽ phải chạy nó bằng cách sử dụngsudo

Và sau đó killl quá trình sử dụng cổng 8080. Bạn có thể phải sử dụng sudoở đây là tốt. Vì vậy, để giết quá trình này sử dụngsudo kill -9 PID


19

Sử dụng lệnh killport :

sh killport 9001 

Để tải xuống shell, bạn có thể sử dụng wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport

1
nếu nó không hoạt động, điều đó có nghĩa là cổng mục tiêu đã bị đóng
Abdennour TOUMI

17

Để tắt dịch vụ cổng trong ubfox, hãy nhập lệnh bên dưới vào terminal

Trong thiết bị đầu cuối:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp

Điều này đơn giản làm rất tốt.
Tri

15

Bạn cũng có thể sử dụng bộ nhiệt áp để làm điều đó (gửi SIGKILL theo mặc định): sudo fuser -k 9001/tcp


15

chỉ cần nhập

    fuser -k -n tcp 3000

trong thiết bị đầu cuối, trong đó 3000 là số cổng của bạn


1
bằng cách sử dụng fuser: Hiển thị các quá trình sử dụng các tệp, ổ cắm hoặc hệ thống tệp được đặt tên -k: Stands for a kill -n: Netstat tcp: Đó là một giao thức để sử dụng cổng 3000 của bạn: Cổng tùy chỉnh ở đây là liên kết: askub Ubuntu.com/questions / 207609 / i-cant-kill-a-port-process
Kaushik shrimali

12

Để giết một quá trình chạy trên số cổng9001

sudo kill -9 $(sudo lsof -t -i:9001)


lsof   - list of files(Also used for to list related processes)

-t     - show only process ID

-i     - show only internet connections related process

:9001  - show only processes in this port number

kill   - command to kill the process

-9     - forcefully

sudo   - command to ask admin privilege(user id and password).

để biết thêm bạn có thể ghé thăm blog của tôi


11

Để tiêu diệt quá trình dựa trên cổng trước tiên, chúng ta phải tìm ra pid có liên quan cho cổng đã cho và giết bằng cách sử dụng pid đó,

Trong trường hợp của tôi, tôi muốn lấy pid (id quá trình) của 3000 cổng:

netstat -ltnp | grep -w '3000'

sau đó tìm pid đang nghe tcp

tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  

bạn sẽ nhận được pid 29972

Để tiêu diệt pid này, sử dụng lệnh dưới đây

kill -9 29972

mã giả cho quá trình tiêu diệt dựa trên cổng

 netstat -ltnp | grep -w 'PORT'

kill -9 PID


5

Giết PORT:

sudo là quan trọng để hiển thị quá trình id.

$ sudo netstat -antlp | grep 45136
tcp      0      0 0.0.0.0:45136         0.0.0.0:*        LISTEN           **-** 

$ kill -9 45136

5

Sử dụng lệnh

 netstat -plten |grep java

sử dụng grep java như tomcat sử dụng java làm quy trình của họ.

Nó sẽ hiển thị danh sách các tiến trình với số cổng và id tiến trình

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/java

số trước / java là id quá trình. Bây giờ sử dụng lệnh kill để giết tiến trình

kill -9 16085

-9 ngụ ý quá trình sẽ bị giết chết mạnh mẽ.


4

sudo fuser -n tcp -k [port_number]

sudo lsof -t -i: [port_number]


3

Sử dụng điều này cho quá trình tiêu diệt đang chạy trên số cổng "9001"

 kill $(lsof -t -i:9001)

Dự phòng với các ví dụ khác, bao gồm câu trả lời được chấp nhận.
Kenster

3

Thử cái này:

lsof -i :port

or 

sudo kill $(sudo lsof -t -i:8000)

or

kill -9 <pid>

or 

sh killport 8000

Tôi đang dùng Ubuntu 17 và kill -9 <pid>làm việc rất tốt cho tôi!
protoEveachion

1
sudo kill `sudo lsof -t -i:9001`

bạn không phải thêm -9tùy chọn tín hiệu


1

Quá trình hai bước của nó:

  1. Biết id quá trình trên cổng số. 8080 (có thể là bất kỳ)
  2. Quá trình tiêu diệt id 8689 đó (có thể khác)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    

1

bạn có thể làm việc này bằng nút

npm install freethenport -g

sau đó

node freethenport 9001

1

Hiển thị các kết nối TCP đang hoạt động, các cổng mà máy tính đang nghe.

netstat -tupln

Nó sẽ liệt kê cho bạn tất cả các kết nối dọc theo pid. Tìm và sao chép pid và chạy lệnh sau. Hãy chắc chắn rằng bạn thay thế bằng id thực tế trong lệnh sau.

kill -9 <copied pid>

-9 sử dụng để giết chết kết nối.


1

Hãy thử sudo fuser PORT/tcp -k Thay thế PORTbằng cổng bạn muốn giết, ví dụ:80


0

giết -9 $ (lsof -t -i: 9001)

có thể được sử dụng để giết quá trình. Bạn có thể sử dụng bất kỳ số cổng nào thay vì 9001


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.