zoukankan      html  css  js  c++  java
  • 处理异常未知端口 Lsof命令

    需要使用的命令:
     ss -tnl 显示所有tcp已被监听的端口 
    lsof -i:端口 显示所有打开该端口的进程 工作实例: 


    某天通过ss -tnl发现有不认识的正在被监听的端口 ?
    于是使用lsof -i命令查看该端口都打开了哪些进程 这里发现该端口对应的是rpc.statd命令。 
    (如果提示没有该命令记得yum install lsof)
     如果大家不认识rpc.statd,一个很简单的方法就是Google或者Baidu 
    通过Baidu可以知道该命令是nfslock服务的一个进程,
    如果想将该端口关闭只需要关闭nfslock服务即可 service nfslock stop 
    再执行ss -tnl发现49994端口消失 
    今后若遇到未知的端口可以使用上面的方法进行判断。

    lsof简介
    lsof(list open files)是一个列出当前系统打开文件的工具。
    在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
    所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息.
    因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 
    lsof使用
    
    lsof输出信息含义
    在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。 
    COMMAND    PID      USER   FD      TYPE     DEVICE     SIZE       NODE      NAME
    init       1         root  cwd      DIR       3,3       1024       2         /
    init       1         root  rtd      DIR       3,3       1024       2         /
    init       1         root  txt      REG       3,3       38432      1763452  /sbin/init
    每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下: 
    COMMAND:进程的名称
    PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
    TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称
     
    
    
    lsof语法格式是: 
    lsof [options] filename
    常用的参数列表: 
    lsof  filename 显示打开指定文件的所有进程
    lsof -a 表示两个参数都必须满足时才显示结果
    lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件
    lsof -u username  显示所属user进程打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /DIR/ 显示目录下被进程打开的文件
    lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
    lsof -d FD 显示指定文件描述符的进程
    lsof -n 不将IP转换为hostname,缺省是不加上-n参数
    lsof -i 用以显示符合条件的进程情况
    lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
              
    46 --> IPv4 or IPv6
    
    
                protocol --> TCP or UDP
                hostname --> Internet host name
                hostaddr --> IPv4地址
                service --> /etc/service中的 service name (可以不只一个)
                port --> 端口号 (可以不只一个)
    
    
     
    
    
    
    
     

    例如: 查看22端口现在运行的情况 
    # lsof -i:22
    COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
    sshd    1409 root    3u  IPv6   5678       TCP *:ssh (LISTEN)
    
    
    
    查看所属root用户进程所打开的文件类型为txt的文件: 
    # lsof -a -u root -d txt
    COMMAND    PID USER  FD      TYPE DEVICE    SIZE    NODE NAME
    init       1    root txt       REG    3,3   38432 1763452 /sbin/init
    mingetty  1632 root txt       REG    3,3   14366 1763337 /sbin/mingetty
    mingetty  1633 root txt       REG    3,3   14366 1763337 /sbin/mingetty
     
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896671.html
Copyright © 2011-2022 走看看