zoukankan      html  css  js  c++  java
  • lsof命令

     

      lsof, LiSt Opened Files, 列出打开的文件, 听起来很简单的样子. 但想*nix中很多其他工具一样, lsof把这件简单的事情做到了炉火纯青. 因为Unix认为”一切皆文件”, 那么”打开的文件”就不仅仅是传统意义上打开的文件了, 还可以是网络/Unix域套接字, 匿名/具名管道, 共享库文件, 目录文件, 设备文件等等. 很多场景下, 查看进程或系统打开的文件会给调试带来极大的帮助. 下面简单地介绍lsof常被使用的功能选项.

    • lsof : 简单地执行lsof会列出当前系统中所有被打开的文件, 但为了看到完整的信息, 通常需要具有root权限; 
    • lsof -u dutor : 列出用户dutor打开的文件, 可指定多个用户, 默认是OR的关系; 
    • lsof -c tair : 列出名称以tair开头的进程打开的文件, c for command, 可指定多个; 
    • lsof -c /^t.*r$/ : 列出名称以t开头, r结尾的进程打开的文件; 
    • lsof -p 12315 : 列出进程号为12315的进程打开的文件, 可指定多个; 
    • lsof server.log : 列出打开server.log文件的进程, 可指明多个文件; 
    • lsof . : 列出打开当前目录的进程; 
    • lsof +D . : 递归地列出当前目录中被打开的文件, 当然也可以lsof | grep `pwd`; 
    • lsof -i : 列出打开的套接字; 
    • lsof -i tcp : 列出打开的tcp套接字; 
    • lsof -i :5198 : 列出打开5198端口的进程; 
    • lsof -i :ssh : 列出打开22端口的进程; 
    • lsof -i tcp:5198 : 列出打开5198号tcp端口的进程; 
    • lsof -U  : 列出打开Unix域套接字的进程; 
    • lsof -d 0-2 : 列出在0到2文件描述符上打开文件的进程; 
    • lsof -d mem : 列出打开映射文件的进程; 
    • lsof -d txt : 列出打开的可执行文件. 

      还有其他一些非常有用的选项, 可以对lsof的行为进行控制.

    • lsof -a: 上述功能性选项可以组合使用, 但默认采用OR逻辑列出, -a选项令lsof使用AND逻辑;
    • lsof -t: 只列出进程号, 可以借此得到特定的进程列表, 以方便对这些进程的自动处理, 比如kill `lsof -t -i :5198`会杀死所有打开5198端口的进程;
    • lsof -r [seconds]: -r选项可以让lsof以一定的时间间隔连续执行, 在监视文件/进程时会非常实用.

      这只是一个实用的不完全选项的罗列, 如果你知道其他非常实用的选项, 还望留言分享之.

    祝好

  • 相关阅读:
    解决RobotFramework的关键字不能高亮的问题
    使用Python遇到:'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 问题
    通过Jekins执行bat脚本始终无法完成
    Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
    [转]The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    HDU 2686 MCMF
    HDU 4278 卡特兰,区间DP
    POJ 2985 名次树
    POJ 2531 深搜剪枝
    Uva 10061 进制问题
  • 原文地址:https://www.cnblogs.com/olenji/p/4756494.html
Copyright © 2011-2022 走看看