1、lsof 简介

lsof 是 Linux 下的一个非常实用的系统级的监控、诊断工具。

它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~

它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”,

包括但不限于 pipes, sockets, directories, devices, 等等。

因此,使用 lsof,你可以获取任何被打开文件的各种信息。

只需输入 lsof 就可以生成大量的信息,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

lsof 的示例输出:

2、lsof 常用用法

2.1 监控打开的文件、设备

查看文件、设备被哪些进程占用

2.2 监控文件系统

指定目录、挂载点,可以看到有哪些进程打开了其下的文件:

这在 umount 某个文件系统失败时非常有用(通常会报该 FS is busy)。

列出某个目录(挂载点 如 /home 也行)下被打开的文件:

列出被指定进程名打开的文件:

2.3 监控进程

指定进程号,可以查看该进程打开的文件:

当你想要杀掉某个用户所有打开的文件、设备,你可以这样:

此处 -t 的作用是单独的列出 进程 id 这一列。

关于杀死进程的 4 种方式,请参考:

http://www.thegeekstuff.com/2009/12/4-ways-to-kill-a-process-kill-killall-pkill-xkill/

2.4 监控网络

查看指定端口有哪些进程在使用(lsof -i 列出所有的打开的网络连接):

列出被某个进程打开所有的网络文件:

或者

列出所有 tcp、udp 连接:

列出所有 NFS 文件:

查看指定网口有哪些进程在使用:

3、更多使用技巧

3.1 监控用戶

查看指定用戶打开的文件(lsof -u ^lakshmanan 可以排除某用户):

3.2 监控应用程序

查看指定程序打开的文件:

4、命令模式技巧

4.1 组合逻辑查询条件

只有多个查询条件都满足, 用 "-a" 参数,默认是 -o 。

4.2 lsof 命令的重复执行模式:

基于给定的参数延时多少秒重复执行 lsof

+r 表示 当没有文件被打开的时候,repeat mode 将自行结束。

-r 表示 不管文件是否存在或者被打开,它都将执行,直到你中断它。

每个循环的输出使用 ‘=======’ 做分隔符,你也可以用 ‘-r’ | ‘+r’ 指定延时时间。

以上输出是前 5 秒没有输出,然后 “inita.sh” 启动后,开始有了输出。

5、最后的技巧

关于磁盘空间告警 df -h --max=1 与 du -hx --max=1 显示不一致的问题,

最常见的的还是下面这种情况:

lsof|grep -i delete

看看被删除的文件:有些删了文件,但是进程没 reload,那些空间还是占用的,你可以理解为类似 windows 下的进程句柄没释放的概念吧~ 只是 windows 下如果有文件被进程使用,你一般是删不掉的,而 linux 虽然不做删除限制,但却要等到进程使用完文件才能完全释放,以防止进程奔溃,这是操作系统对资源的管理差异吧~

例如 nginx 会有很多临时文件占用了 /tmp 目录,删掉后,依然占用着空间,

此时你可以:

pkill -9 nginx && /etc/init.d/nginx restart

好吧,本文到此结束了,关于 lsof 还有很多很多,不过哥常用、知道的就这些了,哥也只能帮你到这儿了,

如果你还需要其它的内容,请自行 google 吧,骚年。。。

6、refer:

使用 lsof 查找打开的文件

http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html

15 Linux lsof Command Examples (Identify Open Files)

http://www.thegeekstuff.com/2012/08/lsof-command-examples/

实用的系统工具之 lsof

http://www.ylinux.org/forum/t/276

转载于:https://blog.51cto.com/410617/1878110

lsof 功能使用详解相关推荐

  1. python画简单的图形的代码-Python实现画图软件功能方法详解

    概述 虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户 ...

  2. 17个之多!Windows Vista各版本功能区别详解

           Vista 开始全球同步上市,版本达17个之多.                Windows Vista各版本功能区别详解 : http://digi.it.sohu.com/2006 ...

  3. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  4. php怎么自定义设置打印区域,JavaScript_jQuery实现区域打印功能代码详解,使用CSS控制打印样式,需要设 - phpStudy...

    jQuery实现区域打印功能代码详解 使用CSS控制打印样式,需要设置样式media="print",并且将页面中不需要打印的元素的样式display属性设置为none.如DEMO ...

  5. android搜索功能xml,Android_Android ActionBar搜索功能用法详解,本文实例讲述了Android ActionBar - phpStudy...

    Android ActionBar搜索功能用法详解 本文实例讲述了Android ActionBar搜索功能用法.分享给大家供大家参考,具体如下: 使用ActionBar SearchView时的注意 ...

  6. python实现文本编辑器_Python实现文本编辑器功能实例详解

    这篇文章主要介绍了Python实现的文本编辑器功能,结合实例形式详细分析了基于wxpython实现文本编辑器所需的功能及相关实现技巧,需要的朋友可以参考下 本文实例讲述了Python实现的文本编辑器功 ...

  7. python画图代码大全-Python实现画图软件功能方法详解

    概述 虽然Python的强项在人工智能,数据处理方面,但是对于日常简单的应用,Python也提供了非常友好的支持(如:Tkinter),本文主要一个简单的画图小软件,简述Python在GUI(图形用户 ...

  8. js购物车功能php,使用JS实现购物车功能步骤详解

    这次给大家带来使用JS实现购物车功能步骤详解,使用JS实现购物车功能的注意事项有哪些,下面就是实战案例,一起来看一下. 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪 ...

  9. python画图软件是哪个_Python实现画图软件功能方法详解

    Python实现画图软件功能方法详解,按钮,事件,绑定,快捷键,直线 Python实现画图软件功能方法详解 易采站长站,站长之家为您整理了Python实现画图软件功能方法详解的相关内容. 概述 虽然P ...

最新文章

  1. rem是如何实现自适应布局的
  2. Struts2+Android (3) 多种方式向服务器发送信息
  3. 前端一HTML:二十二元素显示方式案例
  4. 世界围棋人机大战、顶峰对决第二战:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,AlphaGo再次胜出!
  5. php smtp验证,php通过smtp验证登陆
  6. 硬质合金销售真的有那么难么?
  7. 随想录(学校研究和公司研发)
  8. vue中supermap iserver绘制使用的插件安装
  9. springboot获取客户端发来的数据
  10. 如何利用用户业务行为画像,做套餐与用户之间个性化智能匹配模型?
  11. 获取变量数据类型(JS)
  12. 怎么使用PVS stream Linux
  13. 小芋头君的知乎 Live 直播-前端开发者成长之路
  14. java默认字符串排序规则_Java 字符串排序--------请对一组字符串进行排序,字符串由大小写字母和数字组成,需要满足一下比较规则...
  15. 【常用 JS 插件】jQuery TreeTable 树表格插件
  16. CentOS安全运维检查命令
  17. JS获取浏览器UA(User Agent 用户代理)方法
  18. 分治法 —— 快速排序(递归,迭代,非递归)
  19. 飞协博携手顺丰速运推出综合物流解决方案
  20. springboot整合 swagger2

热门文章

  1. 操作可能会破坏运行时稳定性的解决办法
  2. 《DSP using MATLAB》示例Example4.2
  3. Java阻塞队列的实现
  4. ArcGIS API for Silverlight 入门学习笔记(一)hello world 补充问题
  5. Java实现简单的在聊天面板中显示emoji
  6. Eclipse编译时函数报错:Undefined reference to 'pthread_create'
  7. 树莓派系统的安装、初步配置与远程访问
  8. 幼儿园调查过程怎么写_幼儿园对孩子的重要性你真的清楚吗?
  9. (03)两个模型的交集、并集、差集
  10. mysql 5.6 2002_MySQL错误ERROR 2002 (HY000): Can't connect to local MySQL server