Linux - 查看端口的佔用狀況、找出並殺死佔用進程的方法

[TOC]javascript

1 lsof查看端口的佔用狀況

1.1 命令使用示例

# 命令爲 lsof -i
[root@onepiece ~]# lsof -i
# 將會顯示 命令 + 進程ID + 進程所屬用戶, 以及監聽的協議、狀態等信息
COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
dhclient    728 root    6u  IPv4   11262      0t0  UDP *:bootpc
ntpd        839  ntp   16u  IPv4   13671      0t0  UDP *:ntp
ntpd        839  ntp   18u  IPv4   13677      0t0  UDP localhost:ntp
  • 注意: 若提示無此命令, 則須要安裝, 命令以下:html

    [root@onepiece ~]# lsof -i
    -bash: lsof: command not found
    [root@onepiece ~]# yum install -y lsof
    ......
    Installed:
      lsof.x86_64 0:4.87-6.el7
    Complete!
    # 出現上述的 "Complete!",說明安裝成功。

1.2 查看某一端口的佔用狀況

# 好比查看80端口的佔用狀況,命令爲:
[root@onepiece ~]# lsof -i:22
COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
sshd    3187 root    3u  IPv4   16278      0t0  TCP *:ssh (LISTEN)
sshd    9528 root    3u  IPv4 4436480      0t0  TCP onepiece:ssh->120.253.xx.xx:30214 (ESTABLISHED)

這裏顯示出22號端口正被sshd所使用, 狀態是LISTEN(監聽).java

1.3 殺死某個端口的全部進程

不建議經過 kill 的方式解決端口衝突問題! 某些極少的狀況下是能夠直接殺死進程、釋放端口的, 好比某個 Tomcat 進程沒有成功退出, 致使重啓失敗.linux

# 命令以下:
[root@onepiece ~]# killall sshd
# 這樣,全部sshd的進程都會被結束掉 —— 我這裏經過ssh遠程操做阿里雲服務器, 殺死以後將退出鏈接, 提示以下:
Connection to 47.52.xx.xx closed by remote host.
Connection to 47.52.xx.xx closed.
# 此時須要從阿里雲控制檯經過終端進入, 並開啓sshd服務, 命令以下:
service sshd start

這樣, 全部與 sshd 的相關進程都會被結束掉 —— 務必慎用.shell

2 netstat查看端口占用狀況

2.1 命令使用示例

# 命令示例以下:
[root@onepiece ~]# netstat -anp | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9646/sshd
tcp        0     36 172.31.xx.xx:22       120.253.xx.xx:30307     ESTABLISHED 9649/sshd: root@pts
unix  2      [ ]         DGRAM                    15722    476/dbus-daemon
unix  3      [ ]         STREAM     CONNECTED     11122    476/dbus-daemon

能夠看出22端口被9646號進程監聽着.安全

2.2 查看佔用某個端口的進程

# 命令爲fuser:
[root@onepiece ~]# fuser -v -n tcp 22
                     USER        PID ACCESS COMMAND
22/tcp:              root       9646 F.... sshd
                     root       9649 F.... sshd

2.3 殺死某個端口的佔用進程

[root@onepiece ~]# kill -s 9 9646(進程號)

說明:bash

-9參數表示告訴操做系統直接殺死進程, 不管進程的狀態是否可殺死; 該命令只殺死某個進程, 比 killall 命令相對安全一點.服務器

<br/>ssh

參考資料

Linux中如何解除端口占用tcp

linux下如何搜索一個文件或程序所在位置

版權聲明

做者: 馬瘦風(https://healchow.com)

出處: 博客園 馬瘦風的博客(https://www.cnblogs.com/shoufeng)

感謝閱讀, 若是文章有幫助或啓發到你, 點個[<a href="javascript:void(0);" onclick="DiggIt(11308614,cb_blogId,1);green_channel_success(this,'謝謝推薦😜');">好文要頂👆</a>] 或 [<a href="javascript:void(0);" onclick="votePost(11308614,'Digg')">推薦👍</a>] 吧😜

本文版權歸博主全部, 歡迎轉載, 但 [必須在文章頁面明顯位置標明原文連接], 不然博主保留追究相關人員法律責任的權利.

原文出處:https://www.cnblogs.com/shoufeng/p/11308614.html

相關文章
相關標籤/搜索