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
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# lsof -i -a -p 29091
或者
[root@localhost ~]#lsof -i -a -c ssh

列出所有 tcp、udp 连接:

1
2
lsof -i tcp;
lsof -i udp;

列出所有 NFS 文件:

1
[root@E08-8th02 ~]# lsof -N -u www -a

2.2 监控打开的文件设备:

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

1
2
3
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# 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

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

  1. linux lsof 用法简介

    1.简介: lsof(list open files)是一个列出当前系统打开文件的工具. 只需输入 lsof 就可以生成大量的信息,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用 ...

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

    1.lsof 简介 lsof 是 Linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 "ls + of"的组合 ...

  3. linux lsof用法

    linux lsof命令详解   简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可 ...

  4. lsof用法简介

    lsof:一个功能强大的命令 lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大!  [root@limt01 ~]# lsof ...

  5. Linux screen用法简介

    [admin@VM_0_2_centos ~]$ screen -bash: screen: 未找到命令 [admin@VM_0_2_centos ~]$ sudo su [sudo] passwor ...

  6. lsof命令简介

    lsof命令简介: lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件 ...

  7. linux lsof命令详解

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...

  8. Linux lsof 命令

    lsof(list open files)是一个查看进程打开的文件的工具. 在 linux 系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 lsof 命令不仅可以查 ...

  9. [转贴]linux lsof命令详解

    linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...

随机推荐

  1. Delphi2007 在Win10 下运行报错 Assertion failure

    Delphi2007 原来安装在Win7 下 运行正常, 自从升级到Win10 ,新建工程运行然后关闭报错, 报错信息如下: ---------------------------bds.exe - ...

  2. Laravel 创建指定表 migrate

    解决方案:打开创建表的那个 migration 文件,在创建表的方法执行之前加一个判断条件 if (!Schema::hasTable('password_resets')) { Schema::cr ...

  3. 错误记录PHP preg_match(): Compilation failed: range out of order in character class at offset 7 01_login.php</b> on line <b>13</b><br />

    <?php //响应头格式为json,编码为uft-8,注意有- header("Content-Type:application/json;charset=utf-8"); ...

  4. [日期工具分享][Shell]为特定命令依次传入顺序日期执行

    [日期工具分享][Shell]为特定命令依次传入顺序日期执行 使用方式: <本脚本文件名(必要时需要全路径)> <要执行的命令所在的文件名> <开始日期> < ...

  5. sql developer 17002报错无法连接

    问题登场: 使用sql developer 登录oracle 时报错,错误码17002 解决办法: 右键,点击properties 属性,检查每一项配置,发现ip 是之前的ip,更改为database ...

  6. 8. [mmc subsystem] host(第二章)——sdhci

    一.sdhci core说明 1.sdhci说明 具体参考<host(第一章)--概述> SDHC:Secure Digital(SD) Host Controller,是指一套sd ho ...

  7. xshell 远程登陆CentOS7 免密登陆

    首先说一下大体的思路: 1. 以密码登陆CentOS系统 2. 配置ssh 3. xshell 生成秘钥 4. 进行免密登陆 软件.设备: xshell(下载地址(免费版),也可以自行百度下载) Ce ...

  8. idea快捷键的使用

    IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中文字体显示乱码? 2.菜单项等的字体太小,怎么能设置下? -------------------------------- ...

  9. 201871010128-杨丽霞《面向对象程序设计(java)》第十六周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第十六周学习总结(1分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...

  10. 201871010128-杨丽霞《面向对象程序设计(Java)》第十一周学习总结

    201871010128-杨丽霞<面向对象程序设计(Java)>第十一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...