每天一个Linux命令(45)lsof命令
lsof命令用于查看你进程打开的文件,端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。
(1)用法:
用法: lsof [参数] [文件]
(2)功能:
功能: lsof 命令可显示系统打开的文件.(因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。)
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
(3)选项参数:
1) +D<目录> 递归列出目录下被打开的文件
2) -u s 列出login name或UID为 s的程序
3) -c<进程名> 列出指定进程所打开的文件
4) -i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
5) -n -n<目录> 列出使用NFS的文件
(4)实例:
1)[sunjimeng@localhost ~]$ lsof |more -20 无任何参数,显示当前系统已经打开的正在使用的所有文件
[sunjimeng@localhost ~]$ lsof |more -
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
进程名称 标志符 线程id 所有者 文件描述符 文件类型 磁盘名称 文件大小 索引节点 文件名称
systemd root cwd unknown /proc//cwd (readlink: Permission denied)
systemd root rtd unknown /proc//root (readlink: Permission denied)
systemd root txt unknown /proc//exe (readlink: Permission denied)
systemd root NOFD /proc//fd (opendir: Permission denied)
kthreadd root cwd unknown /proc//cwd (readlink: Permission denied)
kthreadd root rtd unknown /proc//root (readlink: Permission denied)
kthreadd root txt unknown /proc//exe (readlink: Permission denied)
kthreadd root NOFD /proc//fd (opendir: Permission denied)
ksoftirqd root cwd unknown /proc//cwd (readlink: Permission denied)
ksoftirqd root rtd unknown /proc//root (readlink: Permission denied)
ksoftirqd root txt unknown /proc//exe (readlink: Permission denied)
ksoftirqd root NOFD /proc//fd (opendir: Permission denied)
kworker/ root cwd unknown /proc//cwd (readlink: Permission denied)
kworker/ root rtd unknown /proc//root (readlink: Permission denied)
kworker/ root txt unknown /proc//exe (readlink: Permission denied)
kworker/ root NOFD /proc//fd (opendir: Permission denied)
migration root cwd unknown /proc//cwd (readlink: Permission denied)
migration root rtd unknown /proc//root (readlink: Permission denied) //是根目录到软连接
migration root txt unknown /proc//exe (readlink: Permission denied)
--More--
FW的详解:
1)cwd(current work dirctory): 应用程序的当前工作目录,应用程序启动的目录,除非它本身对这个目录进行更改。
2)txt: 该类型的文件是程序代码,如应用程序二进制文件本身或共享库
3)rtd: root directory
4)0: 表示标准输出
5)1: 表示标准输入
6)2: 表示标准错误
TYPE:文件类型,如DIR、REG等,常见的文件类型:
(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字
DEVICE:指定磁盘的名称
SIZE: 文件的大小
NODE: 索引节点(文件在磁盘上的标识)
NAME: 打开文件的确切名称
2)[root@localhost root]# lsof /bin/bash 查看与指定文件相关的进程的信息,即找出使用此文件的进程
[root@localhost root]# lsof /bin/bash
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ksmtuned root txt REG , /usr/bin/bash
bash sunjimeng txt REG , /usr/bin/bash
bash root txt REG , /usr/bin/bash
3)[root@localhost /]# lsof +D /home/sunjimeng/.local/share 递归查看某个目录的文件信息
[root@localhost /]# lsof +D /home/sunjimeng/.local/share
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nautilus sunjimeng mem REG , /home/sunjimeng/.local/share/gvfs-metadata/home-ddf07f21.log
nautilus sunjimeng mem REG , /home/sunjimeng/.local/share/gvfs-metadata/home
nautilus sunjimeng 15r REG , /home/sunjimeng/.local/share/gvfs-metadata/home
nautilus sunjimeng 16r REG , /home/sunjimeng/.local/share/gvfs-metadata/home-ddf07f21.log
evolution sunjimeng 11u REG , /home/sunjimeng/.local/share/evolution/addressbook/system/contacts.db
tracker-s sunjimeng 15w REG , /home/sunjimeng/.local/share/tracker/data/tracker-store.journal
4)[root@localhost dir1]# lsof |grep '/home/sunjimeng/Document/dir1' 不用+D参数得到与某个文件有关的进程信息的方法
[root@localhost dir1]# lsof +D /home/sunjimeng/Document/dir1
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash root cwd DIR , /home/sunjimeng/Document/dir1
lsof root cwd DIR , /home/sunjimeng/Document/dir1
lsof root cwd DIR , /home/sunjimeng/Document/dir1
[root@localhost dir1]# lsof |grep '/home/sunjimeng/Document/dir1'
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
bash root cwd DIR , /home/sunjimeng/Document/dir1
lsof root cwd DIR , /home/sunjimeng/Document/dir1
grep root cwd DIR , /home/sunjimeng/Document/dir1
lsof root cwd DIR , /home/sunjimeng/Document/dir1
5)[root@localhost /]# lsof -u sunjimeng |more -20 列出某个用户打开的所有文件相关的进程信息
[root@localhost /]# lsof -u sunjimeng |more -
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gnome-key sunjimeng cwd DIR , /var/gdm
gnome-key sunjimeng rtd DIR , /
gnome-key sunjimeng txt REG , /usr/bin/gnome-keyring-daemon
gnome-key sunjimeng mem REG , /usr/lib64/gio/modules/libdconfsettings.so
gnome-key sunjimeng mem REG , /usr/lib/locale/locale-archive
gnome-key sunjimeng mem REG , /usr/lib64/liblzma.so.5.0.
gnome-key sunjimeng mem REG , /usr/lib64/libpcre.so.1.2.
gnome-key sunjimeng mem REG , /usr/lib64/librt-2.17.so
gnome-key sunjimeng mem REG , /usr/lib64/libresolv-2.17.so
gnome-key sunjimeng mem REG , /usr/lib64/libselinux.so.
gnome-key sunjimeng mem REG , /usr/lib64/libz.so.1.2.
gnome-key sunjimeng mem REG , /usr/lib64/libffi.so.6.0.
gnome-key sunjimeng mem REG , /usr/lib64/libgmodule-2.0.so.0.4000.
gnome-key sunjimeng mem REG , /usr/lib64/libc-2.17.so
gnome-key sunjimeng mem REG , /usr/lib64/libpthread-2.17.so
gnome-key sunjimeng mem REG , /usr/lib64/libcap-ng.so.0.0.
gnome-key sunjimeng mem REG , /usr/lib64/libgpg-error.so.0.10.
gnome-key sunjimeng mem REG , /usr/lib64/libdl-2.17.so
gnome-key sunjimeng mem REG , /usr/lib64/libgcrypt.so.11.8.
--More--
6)[root@localhost /]# lsof -c sleep 列出与程序有关的文件
[root@localhost /]# lsof -c sleep
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep root cwd DIR , /
sleep root rtd DIR , /
sleep root txt REG , /usr/bin/sleep
sleep root mem REG , /usr/lib/locale/locale-archive
sleep root mem REG , /usr/lib64/libc-2.17.so
sleep root mem REG , /usr/lib64/ld-2.17.so
sleep root 0r CHR , 0t0 /dev/null
sleep root 1u unix 0xffff880080995a00 0t0 socket
sleep root 2u unix 0xffff880080995a00 0t0 socket
[root@localhost /]# lsof |grep sleep //等价
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
sleep root cwd DIR , /
sleep root rtd DIR , /
sleep root txt REG , /usr/bin/sleep
sleep root mem REG , /usr/lib/locale/locale-archive
sleep root mem REG , /usr/lib64/libc-2.17.so
sleep root mem REG , /usr/lib64/ld-2.17.so
sleep root 0r CHR , 0t0 /dev/null
sleep root 1u unix 0xffff880080995a00 0t0 socket
sleep root 2u unix 0xffff880080995a00 0t0 socket
7)[root@localhost /]# lsof -i 列出所有的网络连接
[root@localhost /]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd chrony 1u IPv4 0t0 UDP *:ntp
chronyd chrony 2u IPv6 0t0 UDP *:ntp
chronyd chrony 3u IPv4 0t0 UDP localhost:
chronyd chrony 5u IPv6 0t0 UDP localhost:
avahi-dae avahi 12u IPv4 0t0 UDP *:mdns
avahi-dae avahi 13u IPv4 0t0 UDP *:
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
master root 13u IPv4 0t0 TCP localhost:smtp (LISTEN)
master root 14u IPv6 0t0 TCP localhost:smtp (LISTEN)
cupsd root 11u IPv6 0t0 TCP localhost:ipp (LISTEN)
cupsd root 12u IPv4 0t0 TCP localhost:ipp (LISTEN)
列出使用指定协议的网络连接:
[root@localhost /]# lsof -i TCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd root 3u IPv4 0t0 TCP *:ssh (LISTEN)
sshd root 4u IPv6 0t0 TCP *:ssh (LISTEN)
master root 13u IPv4 0t0 TCP localhost:smtp (LISTEN)
master root 14u IPv6 0t0 TCP localhost:smtp (LISTEN)
cupsd root 11u IPv6 0t0 TCP localhost:ipp (LISTEN)
cupsd root 12u IPv4 0t0 TCP localhost:ipp (LISTEN)
8)[root@localhost /]# lsof -n /home/sunjimeng 列出指定目录下使用NFS文件系统的所有文件
[root@localhost /]# lsof -n /home/sunjimeng
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gnome-ses sunjimeng cwd DIR , /home/sunjimeng
gnome-set sunjimeng cwd DIR , /home/sunjimeng
gnome-she sunjimeng cwd DIR , /home/sunjimeng
gsd-print sunjimeng cwd DIR , /home/sunjimeng
nautilus sunjimeng cwd DIR , /home/sunjimeng
vmtoolsd sunjimeng cwd DIR , /home/sunjimeng
tracker-m sunjimeng cwd DIR , /home/sunjimeng
tracker-s sunjimeng cwd DIR , /home/sunjimeng
abrt-appl sunjimeng cwd DIR , /home/sunjimeng
top sunjimeng cwd DIR , /home/sunjimeng
gnome-ter sunjimeng cwd DIR , /home/sunjimeng
(5)其他:
lsof可以打开的文件的类型:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS file、网络socket,unix域名socket)
9.还有其它类型的文件,等等。
每天一个Linux命令(45)lsof命令的更多相关文章
- 每天一个linux命令(38)--lsof命令
lsof (list open files )是一个列出当前系统打开文件的工具,在Linux 环境下,任何事情都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...
- 每天一个linux命令(45)--telnet命令
每天一个Linux命令,今天是网络命令中的Telnet. Telnet 命令通常用来远程登录,Telnet 程序是基于 Telnet 协议的远程登录客户端程序.Telnet 协议是TCP/IP协议族中 ...
- Linux学习之lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...
- Linux进程管理 lsof命令:列出进程调用或打开的文件信息
lsof命令 通过 ps 命令查询到系统中所有的进程, 通过lsof 命令可以知道这个进程到底在调用哪些文件.lsof 命令格式如下: [root@localhost ~]# lsof [选项] 选项 ...
- 【Linux常见命令】lsof命令
lsof - list open files lsof命令用于查看你进程打开的文件,进程打开的端口(TCP.UDP),找回/恢复删除的文件,打开文件的进程. 语法: lsof [选项] [文件] 常用 ...
- linux常用命令:lsof 命令
lsof(list open files) 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 如传输控制 ...
- linux yum安装lsof命令
[root@ITC-MCC ~]# yum install lsof[USM] permission denied^C[root@ITC-MCC ~]# [root@ITC-MCC ~]# [root ...
- Linux监控命令之==>lsof
一.命令说明 lsof 命令的原始功能是列出打开的文件的进程,但LINUX 下,所有的设备都是以文件的行式存在的,所以,lsof 的功能很强大. 二.参数说明 -a :列出打开文件存在的进程 -c&l ...
- 每天一个linux命令(51):lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...
随机推荐
- 学习spring1--跟我一起学Spring 3(2)–开发环境配置
http://www.importnew.com/13185.html#spring 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所 ...
- OpenCV中Camshitf算法学习
今天上午,结合OpenCV自带的camshitf例程,简单的对camshitf有了一个大致的认识和理解,现总结如下: 1:关于HSV H指hue(色相).S指saturation(饱和度).V指val ...
- 第一百八十八节,jQuery,选项卡 UI
jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...
- 代码备份:按模式划分椭圆轨迹渐变matlab
x=sqrt(a^*(-y^/b^)); r=ceil(+*y); x=ceil(x); I(m/,m/+x)=+*y; elseif r== I(m/::m/+,m/+x::m/++x)=+*y; ...
- day4笔记
今日讲解内容:1,int数字:运算.1 ,2,3... # 数字类型:int #范围.用于运算, + - * / // %.... bit_lenth :十进制数字用二进制表示的最小位数 a=10 p ...
- Eclipse集成resin服务器
就我遇到的问题来说吧: 1. resin-pro-4.0.36去官网下载,目前这是最新版,27M 2. Eclipse安装Resin服务器的插件 Help->Install New Soft-& ...
- eclipse + pydev 创建django项目
前提条件机器装好python,并装好django插件.(http://blog.csdn.net/lilongjiu/article/details/51405340) 1. 下载eclise Ver ...
- 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分
[BZOJ2325][ZJOI2011]道馆之战 Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过 ...
- 《从零开始学Swift》学习笔记(Day 9)——离开表达式你试试!
原创文章,欢迎转载.转载请注明:关东升的博客 表达式啊是很重要地. 在Swift中,表达式有3种形式. 不指定数据类型 var a1 = 10 指定数据类型 var a1:Int = 10 使用分号 ...
- 在前端眼中pc端和移动的开发区别
按照昨天所说,本包子今天将总结在前端开发中,pc端和移动端的区别,整理完这些区别,本包子将开始整理pc端的布局,会写实际的代码了,还是那句话,希望文章中有什么不足的地方,大家能多多指正,大家一起进步, ...