购物网站建设投资预算,网站的引导页面是什么意思,各种网站末班,兼容模式网站错位文章目录1、前言2、lsof介绍2.1、问题来了#xff1a; 所有用户都可以采用该命令吗#xff1f;3、 服务器安装lsof3.1、安装3.2、检查安装是否正常。4、lsof 命令4.1、常用功能选项4.2、输出内容4.2.1 、FD和 TYPE列5、 lsof 命令实操常见用法6 、常用组合命令7、 结语1、前言…
文章目录1、前言2、lsof介绍2.1、问题来了 所有用户都可以采用该命令吗3、 服务器安装lsof3.1、安装3.2、检查安装是否正常。4、lsof 命令4.1、常用功能选项4.2、输出内容4.2.1 、FD和 TYPE列5、 lsof 命令实操常见用法6 、常用组合命令7、 结语1、前言
在服务器领域Linux占有绝对地位我们日常大量需要与它打交到。上线部署的应用与相关软件安装后运行状况我们需要了解这时我们就需要用到监控、诊断工具了这可是各位运维大神们的拿手菜so easy! 今天的主角 是系统级的监控、诊断工具---- lsof 本文主要介绍了Linux lsof命令使用详解文中会通过非常详细的示例代码介绍对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随我来一起学习吧
2、lsof介绍
lsof List Open Files 是 linux 下的一个极其实用的系统级监控、诊断工具。 List Open Files让我们很容易就记住了它是 ls of的组合它可以用来列出被各种进程打开的文件信息。 记住在linux环境下 “一切皆文件”任何事物都以文件的形式存在用户通过文件不仅可以访问常规数据还可以访问网络连接和硬件 如传输控制协议 (TCP) 和用户数据报协议 (UDP)套接字等系统在后台都为该应用程序分配了一个文件描述符该文件描述符提供了大量关于此应用程序的信息。 因此使用 lsof你可以获取任何被打开文件的各种信息只需输入 lsof 就可以生成大量的信息。
2.1、问题来了 所有用户都可以采用该命令吗
因为 lsof 需要访问核心内存和各种文件所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
3、 服务器安装lsof
3.1、安装
在 linux服务器上我们使用 yum -y install lsof命令来安装lsof工具 lsof -h查看命令帮助。 你也可以直接下载源代码~abe/。 BSD系统有一个类似的工具可以做同样的事情叫做fstat。 你可以通过man lsof来了解关于lsof的完整文档或者通过lsof -h查看。
3.2、检查安装是否正常。
lsof -i 显示端口占用的进程 lsof -i: 8801 如图可以看到端口启动的服务是nginx。
4、lsof 命令
4.1、常用功能选项
lsof, LiSt Opened Files, 列出打开的文件, 听起来很简单的样子. 因Linux认为”一切皆文件”, 那么”打开的文件”就不仅仅是传统意义上打开的文件了, 还可以是网络/Unix域套接字, 匿名/具名管道, 共享库文件, 目录文件, 设备文件等等. 很多场景下, 查看进程或系统打开的文件会给调试带来极大的帮助。 下面我们简单地介绍lsof常被使用的功能选项 -a 指示其它选项之间为与的关系 -c 进程名 输出指定进程所打开的文件 -d 文件描述符 列出占用该文件号的进程 d 目录 输出目录及目录下被打开的文件和目录(不递归) D 目录 递归输出及目录下被打开的文件和目录 -i 条件 输出符合条件与网络相关的文件 -n 不解析主机名 -p 进程号 输出指定 PID 的进程所打开的文件 -P 不解析端口号 -t 只输出 PID -u 输出指定用户打开的文件 -U 输出打开的 UNIX domain socket 文件 -h 显示帮助信息 -v 显示版本信息 4.2、输出内容
如果我们不带任何选项执行 lsof 命令会输出系统中所有 active 进程打开的所有文件结果就是我们被输出的信息所淹没这没有任何的意义。 我们先让 lsof 命令输出当前 Bash 进程打开的文件并截取其中的一部分结果来介绍输出内容中都包含哪些信息
COMMAND程序的名称
PID进程标识符
USER进程所有者
FD文件描述符应用程序通过文件描述符识别该文件
TYPE文件类型如 DIR、REG 等
DEVICE以逗号分隔设备编号
SIZE文件的大小(bytes)
NODE索引节点(文件在磁盘上的标识)
NAME打开文件的确切名称使用时 我们可以 4.2.1 、FD和 TYPE列
很多人可能比较陌生FD和 TYPE列表示什么下面我们来介绍一下。 1. FD 列中的常见内容有 cwd、rtd、txt、mem 和一些数字等等。 cwd 表示当前的工作目录 rtd 表示根目录 txt 表示程序的可执行文件 mem 表示内存映射文件。 还有一部分 FD 是以数字表示的比如标准输入输出文件 数字后面的字母表示进程对该文件的读写模式如上图中的 u 表示该文件被打开并处于读取/写入模式。除了 u还有 r 表示只读模式w 表示只写模式 我们还可以同时应用 W 表示该进程拥有对文件写操作的锁。 如下图是截取的 docker daemon 进程打开的文件列表其中显示了 FD 的不同模式 2. TYPE 列中常见的 REG 和 DIR 分别表示普通文件和目录。 CHR 和 BLK 则分别表示字符和块设备unix、fifo 和 IPv4/IPv6 分别表示 UNIX domain 套接字、先进先出(FIFO)队列和 IPv4/IPv6 套接字。
5、 lsof 命令实操常见用法
lsof : 简单地执行lsof会列出当前系统中所有被打开的文件, 但为了看到完整的信息, 通常需要具有root权限;
1. 显示与指定目录交互的所有一切 lsof /var/log/messages/ 2. 用户信息 你也可以获取各种用户的信息以及它们在系统上正干着的事情包括它们的网络活动、对文件的操作等。 使用-u显示指定用户打开了什么 lsof -u fyydlz : 列出用户fyydlz打开的文件, 可指定多个用户, 默认是OR的关系;
3. 使用-c查看指定的命令正在使用的文件和网络连接
lsof -c syslog-ng
lsof -c indp : 列出名称以indp开头的进程打开的文件, c for command, 可指定多个;
lsof -c /^t.*r$/ : 列出名称以t开头, r结尾的进程打开的文件;4. 使用-p查看指定进程ID已打开的内容 查看指定进程号打开的文件对于查看日志很有帮助。 lsof -p 8081 : 列出进程号为8081的进程打开的文件, 可指定多个;
其它类似常见命令如下
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逻辑;
6 、常用组合命令
1. 列出进程号杀死指定用户所做的一切事情 可以消灭指定用户运行的所有东西这真不错。 lsof -t: 只列出进程号, 可以借此得到特定的进程列表, 以方便对这些进程的自动处理, 比如kill lsof -t -i :5198会杀死所有打开5198端口的进程; lsof -r [seconds]: -r选项可以让lsof以一定的时间间隔连续执行, 在监视文件/进程时会非常实用.
2. 查看有哪些进程占用指定目录 lsof | grep /usr/local
磁盘空间达到100% 现象 lsof | grep delete 有时候会发现linux上磁盘空间达到100%但是占用的文件没有这么大就会出现此种进程原因为文件实际上已经删除 但是进程没有释放可以使用kill -9 pid杀死进程的方式进行释放。
7、 结语
在linux环境下 “一切皆文件”作为系统管理员lsof 允许用户对核心内存进行查看以找出系统当前如何使用这些文件。 lsof的简单用法可以告诉用户哪些进程打开了哪些文件以及哪些文件由哪些进程打开。 在收集关于应用程序工作情况的信息或在进行某些可能损坏数据的操作前要确保文件未被使用这一点尤其重要。 lsof 更高级的用法可以帮助用户查找删除的文件并获得关于网络连接的信息。lsof 是一个功能强大的工具它几乎可以用于任何地方哦。