【Linux常见命令】lsof命令
lsof - list open files
lsof命令用于查看你进程打开的文件,进程打开的端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。
语法:
lsof [选项] [文件]
常用选项:
-c <进程名> 列出指定进程所打开的文件+D <目录> 递归列出目录下被打开的文件-i <条件> 列出符号条件的进程(4、6、协议、:端口、@ip)-n <目录> 列出使用NFS的文件-p <进程号> 列出指定进程号所打开的文件-u s 列出login name或UID为s的程序
实例
1. 在没有任何参数时,显示当前系统已经打开的正在使用的所有文件
[root@oldboy ~]# lsof|more -10
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 150352 139708 /sbin/init
init 1 root mem REG 8,3 65928 132072 /lib64/libnss_fil
es-2.12.so
init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.
so
init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4
.4.7-20120601.so.1
--More--
显示的内容分析:
1. 名称详解
- COMMAND:进程名称
- PID:进程标识符
- TID:线程ID
- USER:所有者
- FD:文件描述符
- TYPE:文件类型
- DEVICE:磁盘名称
- SIZE/OFF:文件大小
- NODE:索引节点
- NAME:文件名称
2. FD(文件描述符)详解
- cwd:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行修改
- txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
- rtd:根目录
- 0:表示标准输出
- 1:表示标准输入
- 2:表示标准错误
3.文件类型详解
- DIR:目录
- CHR:字符类型
- BLK:块设备类型
- UNIX:UNIX域套接字
- FIFO:先进先出(FIFO)队列
- IPv4:国际协议(IP)套接字
2. 查看指定文件相关的进程信息,即找出此文件的进程
[root@oldboy ~]# lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld_sa 1298 root txt REG 8,3 941720 134686 /bin/bash
bash 5979 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
3. 递归查询某个目录的文件信息
[root@oldboy share]# lsof +D /usr/local/share
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6695 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6696 root cwd DIR 8,3 4096 129846 /usr/local/share
4. 不使用+D选项得到与某个文件有关的进程信息的方法
[root@oldboy share]# lsof |grep '/usr/local/share'
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6704 root cwd DIR 8,3 4096 129846 /usr/local/share
grep 6705 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6706 root cwd DIR 8,3 4096 129846 /usr/local/share
[root@oldboy share]#
5. 列出某个用户打开的所有文件相关的进程信息
[root@oldboy share]# lsof -u root|wc -l
508
[root@oldboy share]# lsof -u root|more -10
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 150352 139708 /sbin/init
init 1 root mem REG 8,3 65928 132072 /lib64/libnss_file
s-2.12.so
init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.s
o
init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4.
4.7-20120601.so.1
6. 使用不同方法列出与程序有关的文件
方法一:使用-c选项
[root@oldboy share]# lsof -c bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5979 root cwd DIR 8,3 4096 129797 /root
bash 5979 root rtd DIR 8,3 4096 2 /
bash 5979 root txt REG 8,3 941720 134686 /bin/bash
bash 5979 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5979 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5979 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5979 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5979 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5979 root 0u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 1u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 2u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 255u CHR 4,1 0t0 5614 /dev/tty1
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
bash 5990 root rtd DIR 8,3 4096 2 /
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0
方法二:使用grep重定向
lsof | grep bash
方法三:使用-p选项
[root@oldboy share]# ps aux|grep bash
root 5979 0.0 0.1 11472 1540 tty1 Ss+ 14:34 0:00 -bash
root 5990 0.0 0.1 11476 1580 pts/0 Ss 14:35 0:00 -bash
root 6744 0.0 0.0 6444 688 pts/0 S+ 15:46 0:00 grep --color=auto bash
[root@oldboy share]# lsof -p 5990
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
bash 5990 root rtd DIR 8,3 4096 2 /
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0
7. 列出所有网络连接,或指定条件的进程
[root@oldboy share]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN)
sshd 1261 root 4u IPv6 9349 0t0 TCP *:ssh (LISTEN)
mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN)
dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc
sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)
列出使用指定网络条件的进程:
[root@oldboy share]# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN)
mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN)
dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc
sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)
8. 列出指定目录下使用NFS文件系统的所有文件
lsof -n /home/zoe
【Linux常见命令】lsof命令的更多相关文章
- 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件
lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...
- Linux常见目录及命令介绍
一.Linux中常用的目录介绍: / -根目录 /bin -命令保存目录(普通用户亦可读取的命令) /boot -启动目录,启动相关文件 /d ...
- Linux进程管理 lsof命令:列出进程调用或打开的文件信息
lsof命令 通过 ps 命令查询到系统中所有的进程, 通过lsof 命令可以知道这个进程到底在调用哪些文件.lsof 命令格式如下: [root@localhost ~]# lsof [选项] 选项 ...
- linux 常见名词及命令(三)
tar 用于对文件打包压缩或解压. 示例: 打包并压缩文件:tar -czvf 压缩包名.tar.gz 文件名 解压并展开压缩包:tar -zxvf 压缩包名.tar.gz -c 创建压缩文件 -x ...
- Linux学习之lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...
- 性能工具之linux常见日志统计分析命令
引言 我前几天写过的性能工具之linux三剑客awk.grep.sed详解,我们已经详细介绍 linux 三剑客的基本使用,接下来我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 ...
- linux 常见名词及命令(一)
linux PK wondows 稳定且有效率.免费或少许费用.漏洞少且修补快.多任务多用户. 安全的用户及文件权限策略.适合小内核程序的嵌入系统.相对不耗资源. 热门的开源系统 红帽企业系统(R ...
- linux 常见名词及命令(五)
计划任务服务之一次性任务: at <时间> 安排一次性任务 atq 或at -l 查看任务列表 at -c 序号 预览任务与设置环境 atrm 序号 删除任务 安排任务示例: 在23:30 ...
- Linux常见的Shell命令
1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...
- linux yum安装lsof命令
[root@ITC-MCC ~]# yum install lsof[USM] permission denied^C[root@ITC-MCC ~]# [root@ITC-MCC ~]# [root ...
随机推荐
- 如何让Java应用成为杀不死的小强?(中篇)
各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期我们抛了一个砖:“如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否有机制能启动起来?” ...
- nexus Maven私服的相关配置
Maven私服中如需本地上传Maven私服内容则需在 setting.xml中配置如下: <server> <id>nexus-releases</id> < ...
- 深浅clone
原型模式 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 原型模式是基于深复制和浅复制的,在Java里面有2种复制: 浅复制将一个对象复制之后,生成一个新的对象,新对象的所有成员变量( ...
- 世界疫情app柱形图显示
访问云服务器的mysql实现数据的获取.最后通过柱形图的形式将数据显示在页面上: 遇到的主要困难时对于云服务器的mysql连接本地的navicat之间事情,最后通过网上的各种解决办法完成了相关的内容. ...
- C/C++内存详解
众所周知,堆和栈是数据结构中的两种数据结构类型,堆是一种具有优先顺序的完全二叉树(或者说是一种优先队列,因为它在一定的优先顺序下满足队列先进先出的特点),排队打饭就是它的典型实例,栈是一种后进先出的数 ...
- C语言 文件操作(七)
C语言获取文件状态 stat() #include <sys/stat.h> #include <unistd.h> int stat(const char *file_nam ...
- C语言 文件操作(四)
1.fprintf int fprintf(FILE *stream, const char *format, ...) stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流 ...
- Golang 性能测试 (3) 跟踪刨析 golang trace
简介 对于绝大部分服务,跟踪刨析是用不到的.但是如果遇到了下面问题,可以不妨一试: 怀疑哪个协程慢了 系统调用有问题 协程调度问题 (chan 交互.互斥锁.信号量等) 怀疑是 gc (Garbage ...
- 数据结构和算法(Golang实现)(16)常见数据结构-字典
字典 我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页. 计算机中,也有这种需求. 一.字典 字典是存储键值 ...
- 最长公共子窜和最长公共子序列(LCS)
他们都是用dp做;复杂度都是O(N方) 有一个大佬的博客写的很详细,是关于最长公共子序列的:https://blog.csdn.net/hrn1216/article/details/51534607 ...