[转帖]linux lsof 用法简介

https://www.cnblogs.com/saneri/p/5333333.html

1.简介:

lsof(list open files)是一个列出当前系统打开文件的工具。

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

常用参数:

lsof语法格式是:
lsof [options] filename


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

lsof  filename    显示打开指定文件的所有进程

lsof -a           表示两个参数都必须满足时才显示结果

lsof -c string    显示COMMAND列中包含指定字符的进程所有打开的文件

lsof -u username  显示所属user进程打开的文件

lsof -g gid       显示归属gid的进程情况

lsof +/DIR/     显示目录下被进程打开的文件

lsof +/DIR/     同上,但是会搜索目录下的所有目录,时间相对较长

lsof -d FD        显示指定文件描述符的进程

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

lsof -i           用以显示符合条件的进程情况

lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

            46 --> IPv4 or IPv6

            protocol --> TCP or UDP

            hostname --> Internet host name

            hostaddr --> IPv4地址

            service --/etc/service中的 service name (可以不只一个)

            port --> 端口号 (可以不只一个) 

lsof 的示例输出:


1

2

3

4

5

6

[[email protected] ~]# lsof

COMMAND     PID      USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME

init          1      root  cwd       DIR              253,0     4096          2 /

init          1      root  rtd       DIR              253,0     4096          2 /

init          1      root  txt       REG              253,0   150352    2228266 /sbin/init

init          1      root  mem       REG              253,0    65928    1966110 /lib64/libnss_files-2.12.so

lsof输出各列信息的意义如下:


1

2

3

4

5

6

7

8

lsof输出各列信息的意义如下:<br>

COMMAND:进程的名称 PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称 

2.lsof常用用法:

2.1 监控网络

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


1

2

3

4

5

6

[[email protected] ~]# lsof -i:22

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME

sshd    17909 root    3u  IPv4 2089344      0t0  TCP wx.9888.cn:ssh->bogon:61574 (ESTABLISHED)

sshd    17911  www    3u  IPv4 2089344      0t0  TCP wx.9888.cn:ssh->bogon:61574 (ESTABLISHED)

sshd    17933 root    3u  IPv4  277791      0t0  TCP *:ssh (LISTEN)

sshd    17933 root    4u  IPv6  277793      0t0  TCP *:ssh (LISTEN)

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


1

2

3

[[email protected] ~]# lsof -i -a -p 29091

或者

[[email protected] ~]#lsof -i -a -c ssh

列出所有 tcp、udp 连接:


1

2

lsof -i tcp;

lsof -i udp;

列出所有 NFS 文件:


1

[[email protected]-8th02 ~]# lsof -N -u www -a

2.2 监控打开的文件设备:

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


1

2

3

[[email protected] ~]# lsof /dev/tty1

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

Xorg    1648 root    6u   CHR    4,1      0t0 5613 /dev/tty1

2.3 监控文件系统:

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


1

2

3

4

# lsof /data/

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

bash    15983 jian  cwd    DIR    8,5     4096 8252 /data/backup

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

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


1

2

3

4

5

# lsof +D /var/log/

COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME

rsyslogd  488 syslog   1w   REG    8,1     1151 268940 /var/log/syslog

rsyslogd  488 syslog   2w   REG    8,1     2405 269616 /var/log/auth.log

console-144   root   9w   REG    8,1    10871 269369 /var/log/ConsoleKit/history

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


1

2

3

4

5

6

7

[[email protected] ~]# lsof -c ssh -c init

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME

init        1 root  cwd    DIR              253,0     4096       2 /

init        1 root  rtd    DIR              253,0     4096       2 /

init        1 root  txt    REG              253,0   150352 2228266 /sbin/init

init        1 root  mem    REG              253,0    65928 1966110 /lib64/libnss_files-2.12.so

init        1 root  DEL    REG              253,0          1966094 /lib64/libc-2.12.so

2.4 监控进程:

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


1

2

3

4

5

[[email protected] ~]# lsof -p 29084

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME

nginx   29084  www  cwd    DIR              253,0     4096 2359841 /apps/product/nginx/conf

nginx   29084  www  rtd    DIR              253,0     4096       2 /

nginx   29084  www  txt    REG              253,0  5497249 2359840 /apps/product/nginx/sbin/nginx

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


1

2

kill -9 `lsof --u www`

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

2.5 监控用户:

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


1

2

3

4

5

6

[[email protected] ~]# lsof -u www

COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME

tail       2409  www  cwd    DIR              253,0     4096       2 /

tail       2409  www  rtd    DIR              253,0     4096       2 /

tail       2409  www  txt    REG              253,0    61368  670089 /usr/bin/tail

tail       2409  www  mem    REG              253,0   156928 1972676 /lib64/ld-2.12.so

2.6 监控应用程序:

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


1

2

3

4

5

[[email protected] ~]# lsof -c nginx

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME

nginx   28624 root  cwd    DIR              253,0     4096 2359841 /apps/product/nginx/conf

nginx   28624 root  rtd    DIR              253,0     4096       2 /

nginx   28624 root  txt    REG              253,0  5497249 2359840 /apps/product/nginx/sbin/nginx

2.7 组合逻辑查询条件:

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


1

2

3

4

5

6

7

[[email protected] ~]# lsof -a -c bash -u root

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

bash    25602 root  cwd    DIR  253,0     4096 1572865 /root

bash    25602 root  rtd    DIR  253,0     4096       2 /

bash    25602 root  txt    REG  253,0   938832 1703983 /bin/bash

bash    25602 root  mem    REG  253,0   156928 1972676 /lib64/ld-2.12.so

bash    25602 root  mem    REG  253,0    22536 1972681 /lib64/libdl-2.12.so

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12049038.html

时间: 2024-10-31 18:15:35

[转帖]linux lsof 用法简介的相关文章

linux 系统监控、诊断工具之 lsof 用法简介

f 简介 lsof 是 linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~ 它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”, 包括但不限于 pipes, sockets, directories, devices, 等等. 因此,使用 lsof,你可以获取任何被打开文件的各种信息. 只需输入 lsof 就可以生成大量的信息,因为 lsof 需要访问核心内存和各种文件,所

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

grep用法简介之一

grep是Linux中个非常重要也是经常使用的文本搜索工具,最近又回顾学习了一遍,趁热自己总结一下. Linux中关于grep的命令一共有三个(以centos6.4为例) grep  :只支持基本正则表达式 egrep :支持扩展正则表达式,此命令其实是 "grep -E" 的别名 fgrep : 不支持正则表达式,搜索速度在3个命令中最快. grep命令用法格式: grep [OPTIONS] PATTERN [FILE...] 主要参数 --color=auto :使匹配的字符用彩

Linux Framebuffer编程简介

linux下,framebuffer设备文件名通常是/ dev/fb0,1,2等.控制framebuffer设备的一般步骤如下:1) 打开设备,映射framebuffer2)依照硬件要求,准备好数据3)把数据复制到framebuffer例子程序如下:1)打开设备,映射framebufferstatic void *fbbuf;int openfb(char *devname){    int fd;    fd = open(devname, O_RDWR);    if (ioctl(fd,

linux find用法总结

前言:我们为什么要学会使用find命令? 转自:http://blog.chinaunix.net/uid-24648486-id-2998767.html 每一种操作系统都有成千上万的文件组成,对于linux这样"一切皆文件"的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉,其实想玩linux的你更要牢牢掌握这个命令,因为linux不像windows那样有固定的文件名后缀,并且因为linux阵营下百家争鸣的特性,一

linux find用法

Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.-print: find命令将匹配的文件输出到标准输出.-exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' { } \;,注意{ }和\:之间的

display:table-cell的用法简介

display:table-cell的用法简介:display属性的使用相当频繁,比如display:block或者display:inline等,但是对于display:table-cell可能比较陌生,因为此属性在特定的情况下会发挥很大的作用,下面就简单介绍它的作用,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

Intent用法简介

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为:            Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xm

新一代 Linux 文件系统 btrfs 简介 【转载】

Btrfs 被称为是下一代 Linux 文件系统.近年来 ext2/3 遇到越来越多的扩展性问题,在期待 ext4 的同时,人们发现了 btrfs,据说它采用了很多先进的文件系统设计,不仅解决了 ext2/3 的扩展性问题,还让人们看到了下一代文件系统所具有的许多其他特性.这一切都让人不禁心生好奇,btrfs 究竟提供了哪些特性?它是如何实现的?本文便围绕这些问题展开探讨,首先研究了 btrfs 所提供的新特性,并简要介绍了 btrfs 内部实现这些特性的原理:然后演示了 btrfs 的常用命令