Linux中端口占用检查

端口检查指令

lsof

lsof -i:端口号用于查询某一端口的占用情况,比如查询我们熟悉的3306端口的使用情况,可以使用lsof -i:3306

root@iZbp11s2rh7xf6u48hlcroZ:~# lsof -i:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  20109 mysql   16u  IPv6  50086      0t0  TCP *:mysql (LISTEN)

可以看到3306端口已经被mysql数据库的守护进程mysqld给占用了。

netstat

netstat -tunpl|grep 端口号,用于查看指定的端口号的进程情况,如查看3306端口的进程情况,可以使用netstat -tunpl|grep 3306

root@iZbp11s2rh7xf6u48hlcroZ:~# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      4350/java       
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      16977/java      
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      16977/java      
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      23371/redis-server 
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      16977/java      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      911/sshd        
tcp        0      0 127.0.0.1:8088          0.0.0.0:*               LISTEN      18522/influxd   
tcp6       0      0 :::3306                 :::*                    LISTEN      20109/mysqld    
tcp6       0      0 :::6379                 :::*                    LISTEN      23371/redis-server 
tcp6       0      0 :::8086                 :::*                    LISTEN      18522/influxd   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           614/dhclient    
udp        0      0 172.16.113.172:123      0.0.0.0:*                           755/ntpd        
udp        0      0 127.0.0.1:123           0.0.0.0:*                           755/ntpd        
udp        0      0 0.0.0.0:123             0.0.0.0:*                           755/ntpd        
udp6       0      0 :::123                  :::*                                755/ntpd   
root@iZbp11s2rh7xf6u48hlcroZ:~# netstat -tunpl|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      20109/mysqld  

对上述指令中的关键参数进行一下介绍:

-t (tcp):仅显示tcp相关的选项;
-u(udp):仅显示udp相关的选项;
-n:拒绝显示别名,能显示为数字的全部显示为数字;
-p:显示建立连接的程序名;
-l:仅列出在listen的服务状态;

端口扫描程序

下面给出一个python编写的简单的扫描的端口占用检测的程序ip_scan.py,该程序可以检测指定的IP地址下0-65534端口的占用情况,完整的脚本程序如下,无需引用任何的第三方的包:

#!/usr/bin/env python
# -*- encoding:utf-8 -*-

import socket, time, thread

socket.setdefaulttimeout(3)  # 设置套接字的默认超时时间

def socket_scan(ip, port):
    """
    输入IP和端口号,扫描判断端口是否被占用
    :param ip: 待扫描的IP地址
    :param port: 待扫描的端口号
    :return:
    """
    try:
        if port > 65535:
            print u'端口扫描结束'
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 使用了socket.connect_ex方法,该方法不会抛出异常,只会给出错误码,
        result = s.connect_ex((ip, port))
        # 如果错误码为0表示成功连上了某个端口;如果返回其他值表示出错了,端口没有打开。
        if result == 0:
            lock.acquire()
            print ip, u':', port, u'端口已经被占用'
            lock.release()
    except:
        print u'端口扫描异常'


def ip_scan(ip):
    """
    输入IP地址,扫描0-65534端口情况
    :param ip:
    :return:
    """
    try:
        print u'开始扫描 %s' % ip
        start_time = time.time()
        for i in range(0, 65534):
            thread.start_new_thread(socket_scan, (ip, int(i)))
        print u'端口扫描完成,总共耗时:%.2f秒' % (time.time() - start_time)
        # raw_input("Please press enter to exit")
    except:
        print u'扫描ip出错'

if __name__ == '__main__':
    ip_address = raw_input("Please input the IP address you want to scan: ")
    lock = thread.allocate_lock()
    ip_scan(ip_address)

在本人的一台阿里云的云主机上的测试结果如下所示:

root@iZbp11s2rh7xf6u48hlcroZ:/home/louxj424/document# python ip_scan.py 
Please input the IP address you want to scan: 127.0.0.1
开始扫描 127.0.0.1
127.0.0.1 : 22 端口已经被占用
127.0.0.1 : 3306 端口已经被占用
127.0.0.1 : 6379 端口已经被占用
127.0.0.1 : 8005 端口已经被占用
127.0.0.1 : 8009 端口已经被占用
127.0.0.1 : 8080 端口已经被占用
127.0.0.1 : 8086 端口已经被占用
127.0.0.1 : 8088 端口已经被占用
127.0.0.1 : 32000 端口已经被占用
端口扫描完成,总共耗时:5.05秒
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容