Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1365110
  • 博文数量: 416
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 4258
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-23 22:13
文章分类

全部博文(416)

文章存档

2015年(7)

2014年(42)

2013年(35)

2012年(14)

2011年(17)

2010年(10)

2009年(18)

2008年(127)

2007年(72)

2006年(23)

2005年(51)

分类: LINUX

2014-07-24 16:42:01

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以一定的时间间隔连续执行, 在监视文件/进程时会非常实用.

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

阅读(883) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~