句柄数lsof 和 lsof -p pid的区别 lsof -p pid获取的是当前pid进程文件句柄数 通过 lsof 查看当前pid线程句柄数 lsof -n|awk ‘{print $2 }’|sort|uniq -c |sort -nr|more 查看当前pid线程句柄数 相差很大,再分析lsof其他字段,最终发现问题所在,tid字段,线程字段,通过线程重新统计发现: 统计3370 pid 下所有tid线程出现的次数发现: lsof |grep 3370 |awk ‘{print $3}’|sort|uniq -c |sort -nr|more > 3370.log 第一列是出现次数,
lsof -p pid获取的是当前pid进程文件句柄数 image.png 通过 lsof 查看当前pid线程句柄数 lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more image.png 相差很大,再分析lsof其他字段,最终发现问题所在,tid字段,线程字段,通过线程重新统计发现: 统计3370 pid下所有tid线程出现的次数发现: lsof |more > 3370.log 第一列是出现次数,第二列是线程id image.png 每个线程出现次数几乎一模一样,导致这个结果是因为进程持有资源,线程基本不持有资源,共享进程所持有的资源,导致lsof
一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied” 我总结一下lsof指令的用法: lsof abc.txt 显示开启文件abc.txt的进程 lsof -i :22 知道22端口现在运行什么程序 lsof -c abc 显示abc进程现在打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新 -r,lsof会永远不断的执行,直到收到中断信号 +r,lsof会一直执行,直到没有档案被显示 例子:不断查看目前ftp连接的情况:lsof lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied” 我总结一下lsof指令的用法: lsof abc.txt 显示开启文件abc.txt 的进程 lsof -i :22 知道22端口现在运行什么程序 lsof -c abc 显示abc进程现在打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local
lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。 是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。 因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 lsof (选项) 选项: -a:列出打开文件存在的进程; -c<进程名>:列出指定进程所打开的文件; -g:列出GID号进程详情; -d<文件号>:列出占用该文件号的进程; +d<目录>:列出目录下被打开的文件 获取端口对应的进程ID=>pid lsof -i:8080
安装lsof Centos > yum install lsof -y Ubuntu > sudo apt-get install lsof -y 命令格式 lsof [参数][文件] 命令功能 用于查看你进程开打的文件 > lsof -p ^123 列出所有的网络连接 > lsof -i [image-20210314230138367] 列出谁在使用某个端口 > lsof -i :3306 同时指定多个端口 > lsof -i :3306,80 列出谁在使用某个特定的udp端口 > lsof -i udp:123 特定的tcp端口 > lsof -i tcp:80 列出所有tcp 网络连接信息 > lsof -i tcp 列出所有udp网络连接信息 > lsof -i tcp 列出某个用户的所有活跃的网络端口 > lsof -a -u root -i 列出所有网络文件系统 > lsof -N 列出COMMAND列中包含字符串 lsof -d 1 > lsof -d 2 0表示标准输入,1表示标准输出,2表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始 根据文件描述范围列出文件信息 > lsof
常用参数 lsof语法格式是: lsof [options] filename lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 1234 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr/local/ 显示目录下被进程开启的文件 lsof +D /usr /local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d 4 显示使用fd为4的进程 lsof -i 用以显示符合条件的进程情况 lsof -i[46] [protocol][@hostname 实用命令 lsof `which httpd` //那个进程在使用apache的可执行文件 lsof /etc/passwd //那个进程在占用/etc/passwd lsof /dev/hda6 // 但是symbol文件并不在列 lsof -u1000 //查看uid是100的用户的进程的文件使用情况 lsof -utony //查看用户tony的进程的文件使用情况 lsof -u^tony //
lsof lsof 是一个在类 Unix 操作系统中用于列出打开文件的工具。这个命令的名字来源于 "list open files" 的缩写。 使用 lsof 命令,你可以查看哪些进程打开了哪些文件,以及这些文件的状态。 lsof命令在最小化安装的情况下也是不会自带的,需要手工安装。 yum -y install lsof 常用选项和用法 1.列出所有打开的文件 lsof 这个命令将列出系统中所有打开的文件和相关的进程信息,但是由于信息实在太多,一般情况下不具有什么参考意义,除非用于过滤搜索 5.根据端口查找 lsof -i :<port> 显示所有使用指定端口的网络连接和进程,可替补netstat和ss命令的部分功能。 6.查看网络文件 lsof -i 列出所有网络连接和相关的进程。 7.查看目录文件 lsof +D /usr 列出该目录被打开的文件。
安装lsof Centos > yum install lsof -y Ubuntu > sudo apt-get install lsof -y 命令格式 lsof [参数][文件] 命令功能 用于查看你进程开打的文件 > lsof -p ^123 列出所有的网络连接 > lsof -i image-20210314230138367 列出谁在使用某个端口 > lsof -i :3306 同时指定多个端口 > lsof -i :3306,80 列出谁在使用某个特定的udp端口 > lsof -i udp:123 特定的tcp端口 > lsof -i tcp:80 列出所有tcp 网络连接信息 > lsof -i tcp 列出所有udp网络连接信息 > lsof -i tcp 列出某个用户的所有活跃的网络端口 > lsof -a -u root -i 列出所有网络文件系统 > lsof -N 列出 lsof -d 1-2 原文链接:https://rumenz.com/rumenbiji/linux-lsof.html
虽然使用此选项将减少 lsof 启动开销,但也可能导致 lsof 在内核不响应函数时挂起。 lsof +D . lsof -i (13)列出所有的 TCP 网络连接信息。 lsof -i tcp (14)列出所有 UDP 网络连接信息。 lsof -i udp (15)列出谁在使用某个端口。 lsof -a -u test -i (18)列出所有网络文件系统。 lsof -N (19)选择 UNIX 域套接字文件的列表。 lsof -U (20)查看某个用户组所打开的文件信息。 lsof -d txt lsof -d 1 lsof -d 2 0 表示标准输入,1 表示标准输出,2 表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始。
安装lsof Centos > yum install lsof -y Ubuntu > sudo apt-get install lsof -y 命令格式 lsof [参数][文件] 命令功能 用于查看你进程开打的文件 > lsof -p ^123 列出所有的网络连接 > lsof -i [image-20210314230138367] 列出谁在使用某个端口 > lsof -i :3306 同时指定多个端口 > lsof -i :3306,80 列出谁在使用某个特定的udp端口 > lsof -i udp:123 特定的tcp端口 > lsof -i tcp:80 列出所有tcp 网络连接信息 > lsof -i tcp 列出所有udp网络连接信息 > lsof -i tcp 列出某个用户的所有活跃的网络端口 > lsof -a -u root -i 列出所有网络文件系统 > lsof -N 列出COMMAND列中包含字符串 lsof -d 1 > lsof -d 2 0表示标准输入,1表示标准输出,2表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始 根据文件描述范围列出文件信息 > lsof
字段含义 在终端下输入lsof 即可显示系统打开的文件, lsof 一般需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。 ? lsof语法格式是: lsof [options] filename 常用的参数列表: lsof filename 显示打开指定文件的所有进程 lsof -a 表示两个参数都必须满足时才显示结果 lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件 lsof -u username 显示所属user进程打开的文件 lsof -g gid 显示归属gid 的进程情况 lsof +d /DIR/ 显示目录下被进程打开的文件 lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 lsof -d FD 显示指定文件描述符的进程 lsof 登上服务器使用 lsof 看了一下,果然如此。
linux下有哪些文件 普通文件 目录 符号链接 面向块的设备文件 面向字符的设备文件 管道和命名管道 套接字 当前系统中所有被打开的文件 > lsof COMMAND PID TID 我们可以通过lsof来发现这样的文件:lsof | grep deleted vpnserver 1490 root 19w REG 253,1 查看某个目录文件被打开情况 > lsof +D ./ 递归处理 显示目录下被进程开启的文件 > lsof +d /usr/local/ 查看当前进程打开了哪些文件 > lsof -c 进程名 查看某个端口被占用情况 > lsof -i :6379 查看所有TCP/UDP链接 > lsof -i tcp 查看某个用户打开了哪些文件 > lsof -u rumenz 通过某个进程号显示该进程打开的文件 > lsof -p 12345 原文链接:https://rumenz.com/rumenbiji/linux-lsof-skills.html 微信公众号:入门小站
常用lsof -i:***来查看 端口被什么程序正在使用 使用lsof时若提示command not found则可以通过 yum install lsof -y 来安装lsof 1.列出所有打开的文件 列出除了某个进程号,其他进程号所打开的文件信息 lsof -p ^1 13 . 列出所有的网络连接 lsof -i 14. 列出所有tcp 网络连接信息 lsof -i tcp 15. 列出所有udp网络连接信息 lsof -i udp 16. 列出谁在使用某个端口 lsof -i :3306 17. 列出谁在使用某个特定的udp端口 lsof -i udp:55 特定的tcp端口 lsof -i tcp:80 18. 列出所有网络文件系统 lsof -N 20.域名socket文件 lsof -u 21.某个用户组所打开的文件信息 lsof -g 5555 22.
二 lsof 用法 权限需求 因为lsof命令需要访问核心内存和各种文件,所以需要具有root权限才能执行。 常用命令参数 usage: [-? -u mysql 找到某个用户的所有网络连接 lsof -a -u mysql -i 使用-a将-u和-i选项组合可以让lsof列出某个用户的所有网络行为。 使用-i:port来显示与指定端口相关的网络信息 lsof -i:22 使用@host来显示指定到指定主机的连接 lsof @10.215.20.13 仅显示TCP连接(同理可获得UDP连接) lsof -iTCP 使用-c查看指定的命令正在使用的文件和网络连接 lsof -c mysqld_safe 显示与指定目录交互的所有一切 lsof sandboxes/msb57_19/data COMMAND 四 小结 本文抛砖引玉,简单介绍lsof的使用方法和场景。其实lsof 命令还有非常多的"姿势",感兴趣的朋友可以去尝试解锁更多用法。
lsof 简介 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。 是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。 lsof(list open files)是一个列出当前系统打开文件的工具。 1、安装lsof [root@Ansible ~]# yum -y install lsof 2、查看losf命令帮助信息 [root@Ansible ~]# lsof -h 3、lsof ~]# lsof /usr/local/jdk1.8.0_181/bin/java 4、列出某个程序所打开的文件信息 # 统计java进程打开的文件数 [root@Ansible ~]# lsof - ~]# lsof -i 8、列出所有tcp 网络连接信息 [root@Ansible ~]# lsof -i tcp 9、列出所有udp网络连接信息 [root@Ansible ~]# lsof
linux下有哪些文件 普通文件 目录 符号链接 面向块的设备文件 面向字符的设备文件 管道和命名管道 套接字 当前系统中所有被打开的文件 > lsof COMMAND PID TID NODE NAME systemd 1 root cwd DIR 253,1 288 64 / lsof 我们可以通过lsof来发现这样的文件: > lsof | grep deleted vpnserver 1490 root 19w REG 253,1 查看某个目录文件被打开情况 > lsof +D ./ 递归处理 显示目录下被进程开启的文件 > lsof +d /usr/local/ 查看当前进程打开了哪些文件 > lsof -c 进程名 查看某个端口被占用情况 > lsof -i :6379 查看所有TCP/UDP链接 > lsof -i tcp 查看某个用户打开了哪些文件 > lsof -u rumenz 通过某个进程号显示该进程打开的文件 > lsof
: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf [root@wangzi teg]# lsof
lsof 简介 lsof(list open files)是一个列出当前系统中所有打开文件的工具 Linux中一切皆文件,所以在系统中,被打开的文件可以是普通文件、目录、网络文件系统中的文件、字符设备 lsof命令就是帮我们查看打开文件的信息的 基本用法 查看进程打开的文件 例如查看mysql在操作哪些文件 # lsof -c mysql 查看文件对应的进程 例如查看系统日志文件是在被谁操作 # lsof /var/log/messages 实用案例 (1)查看某进程正在操作哪些文件 命令 # lsof -p PID 这个命令很有用,例如系统I/O负载过高时,我们可以使用top 使用 lsof 还可以查找使用了某个端口的进程 比如发现系统有个不明端口,就需要使用lsof命令检查是谁在使用,来判定是否出现安全问题 命令 # lsof -i:端口号 (3)恢复删除的文件 linux中删除文件要谨慎,不像windows那么容易被恢复,如果文件被不小心删除,可以使用lsof来恢复,但前提是:这个文件正在被某个进程使用 还有,当系统受到入侵时,常见的情况是日志文件被删除
linux下有哪些文件 普通文件 目录 符号链接 面向块的设备文件 面向字符的设备文件 管道和命名管道 套接字 当前系统中所有被打开的文件 > lsof COMMAND PID TID 我们可以通过lsof来发现这样的文件:lsof | grep deleted vpnserver 1490 root 19w REG 253,1 查看某个目录文件被打开情况 > lsof +D ./ 递归处理 显示目录下被进程开启的文件 > lsof +d /usr/local/ 查看当前进程打开了哪些文件 > lsof -c 进程名 查看某个端口被占用情况 > lsof -i :6379 查看所有TCP/UDP链接 > lsof -i tcp 查看某个用户打开了哪些文件 > lsof -u rumenz 通过某个进程号显示该进程打开的文件 > lsof -p 12345 原文链接:https://rumenz.com/rumenbiji/linux-lsof-skills.html
# kill -9 `lsof -t -u daniel` 命令和进程 可以查看指定程序或进程由什么启动,这通常会很有用,而你可以使用lsof通过名称或进程ID过滤来完成这个任务。 :1234->1.1.1.1:31337 (ESTABLISHED) 同时使用-t和-c选项以给进程发送 HUP 信号 # kill -HUP `lsof -t -c sshd` lsof +L1显示所有打开的链接数小于 # lsof +L1 (hopefully nothing) 显示某个端口范围的打开的连接 # lsof -i @fw.google.com:2150=2180 结尾 本入门教程只是管窥了lsof功能的一斑 ,要查看完整参考,运行man lsof命令或查看在线版本。 资源 lsof手册页:http://www.netadmintools.com/html/lsof.man.html 本文由 Daniel Miessler撰写,首次在他博客上贴出 ---- via: