Linux lsof命令详解

Linux lsof命令详解,第1张

lsof全名list opened files,也就是列举系统中已经被打开文件。我们都知道,linux环境中,任何事物都是文件,

设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。

lsof是linux最常用的命令之一,通常的输出格式为:

引用

常见包括如下几个字段:更多的可见manual。

1、COMMAND

默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名

2、PID:进程的ID号

3、PPID

父进程的IP号,默认不显示,当使用-R参数可打开。

4、PGID

进程组的ID编号,默认也不会显示,当使用-g参数时可打开。

5、USER

命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。

6、FD

是文件的File Descriptor number,或者如下的内容:

(这里很难翻译对应的意思,保留英文)

引用

文件的File Descriptor number显示模式有:

引用

7、TYPE

引用

IPv4 IPv4的包;

IPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址;

DIR 目录

LINK 链接文件

详情请看manual中更多的注释。

8、DEVICE

使用character special、block special表示的设备号

9、SIZE

文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。

10、NODE

本地文件的node码,或者协议,如TCP等

11、NAME

挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等

常用示例:

1.显示开启文件/home/oracle/10.2.0/db_1/bin/tnslsnr的进程

2.知道22端口现在运行什么程序

3.显示init进程现在打开的文件

6.依照文件夹/home/oracle来搜寻,但不会打开子目录,用来显示目录下被进程开启的文件

显示内容太多了,不显示了

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

关注:

进程调试命令:truss、strace和ltrace

进程无法启动,软件运行速度突然变慢,程序的"SegmentFault"等等都是让每个Unix系统用户头痛的问题,而这些问题都可以通过使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。

lsof命令用于查看你进程打开的文件、打开文件的进程、进程打开的端口。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议和用户数据协议套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础 *** 作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

语法:

losf (选项)

选项:

-a 列出打开文件存在的进程

-c<进程名>列出指定进程所打开的文件

-g 列出GID号进程详情

-d<文件名>列出占用该文件号的进程

+d<目录>列出目录下被打开的文件

+D<目录>递归列出目录下被打开的文件

-n<目录>列出使用NFS的文件

-i<条件>列出符合条件的进程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7224278.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存