linux lsof查询正在运行的,linux lsof命令
1、lsof命令简介
lsof是list open files的简称,它的作用主要是列出系统中打开的文件,基本上linux系统中所有的对象都可以看作文件,lsof可以查看用户和进程操作了哪些文件,也可以查看系统中网络的使用情况,以及设备的信息。
在终端下输入lsof命令即可显示系统打开的文件,它访问核心内存和各种文件,需要root用户身份才能发挥其功能。# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 8,2 4096 2 /
systemd 1 root rtd DIR 8,2 4096 2 /
systemd 1 root txt REG 8,2 1612152 2893576 /usr/lib/systemd/systemd
systemd 1 root mem REG 8,2 20112 2888194 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 8,2 261456 2888419 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 8,2 90664 2887685 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 8,2 157424 2888172 /usr/lib64/liblzma.so.5.2.2
......
直接运行lsof,会列出系统中所有打开的文件,每个文件一行,其中每列信息的含有如下:
COMMAND:进程名称
PID:进程ID
USER:进程运行的用户名
FD:表示文件描述符,如:cwd当前工作目录,mem内存映射文件,mmap内存映射设备,txt应用文本(代码和数据),其次数值表示应用程序的文件描述符,这是打开文件时返回的一个整数,u表示该文件处于读取和写入模式,®为只读,(w)为只写模式,大写W为对整个文件的写锁权限,初始打开一个应用程序时有具有三个文件描述符,从0到2分别表示标准输入,输出和错误输出,所以大多数应用程序打开的文件的PD都是从3开始的
TYPE:表示文件的类型,如,REG普通文件,DIR目录,CHR字符文件,BLK设备文件,UNIX为Unix套接字,FIFO先进先出队列,IPv4网际协议IP套接字
DEVICE:文件所在的设备
SIZE:文件的大小
NODE:索引节点,文件在磁盘的标识符
NAME:打开文件的名称
2、lsof查看文件和进程
lsof常用尝试列表:
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 -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 --> 端口号 (可以不只一个)
1)列出某个进程打开的所有文件lsof -p 1149
2)列出某个用户打开的文件lsof -u root
3)列出所有不是某个用户打开的文件,也就是取反,在用户名前添加^符号lsof -u ^root
4)列出某个文件被哪些进程打开使用lsof /dev/null
5)列出访问某个目录的所有进程lsof +d /dev/
6)递归列出访问某个目录下所有进程lsof +D /var/
7)列出某个进程名使用的文件信息lsof -c dhcpd
3、lsof查看网络信息
lsof也可以查看网络信息,如查看某个端口的使用情况
1)列出所有的网络链接信息lsof -i
2)只列出某个协议类型的网络链接信息lsof -i TCP
3)查看某个端口的网络链接状态lsof -i :67
4)查看链接到某个主机的网络状态lsof -i @192.168.146.1
5)查看连接到某个主机的特定端口的网络状态lsof -i @192.168.146.1:80
6)列出当前主机监听的端口lsof -i -s TCP:LISTEN
-s P:S参数跟着两个字段,协议和状态,中间用冒号隔开,如上表示TCP协议的监听状态,也可以查看处于连接的TCP网络状态:lsof -i -s TCP:ESTABLISHED
实用的命令:lsof `which httpd` #列出那个进程使用了apache的执行文件
lsof /dev/cdrom #列出那个进程在使用光驱
lsof -u 1000 #查看UID为1000的用户使用的进程
lsof -i TCP@[url] #查看哪个进程打开了TCP链接到主机的80端口
lsof -i tcp@ -r #不断查看目前tfp链接的情况
4、通过lsof恢复删除的文件
通过lsof恢复已删除的文件,前提条件的是这个文件有程序正在使用,可以通过lsof /path/to/filename能查看到正在使用此文件的程序,下面我们以日志文件message为例实验下:
1)查看使用文件的实用程序lsof /var/log/messages
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
abrt-watc 671 root 4r REG 8,2 516027 1311595 /var/log/messages
rsyslogd 1148 root 6w REG 8,2 516027 1311595 /var/log/messages
2)删除message文件rm -rf /var/log/messages
3)通过上面查看的进程ID我们在/proc目录下找到该进程的文件目录,然后通过FD,找到FD目录的文件编号,然后对文件进行恢复
如:上面PID为1148那我们先找到/proc目录下进程为1148的目录,然后cd到FD目录下,上面FD显示文件使用6w打开,表示在6文件中以锁的方式打开cd /proc/1148/fd
查看下6文件中的文件内容,是不是和之前删除的文件一样呢:tail -n 10 6
下面开始通过命令恢复:
cat /proc//1148/fd/6 >/var/log/messages
linux lsof查询正在运行的,linux lsof命令相关推荐
- oracle linux 版本 uek,在运行 Oracle Linux 7.1 UEK3 或 7.2 或者 RHEL 7.1 或 7.2 的系统上,RDMA 服务无法启动...
在运行 Oracle Linux 7.1 UEK3 或 7.2 或者 RHEL 7.1 或 7.2 的系统上,RDMA 服务无法启动 错误号 20912503 问题: 在运行 Oracle Linux ...
- linux 1.0 如何运行,观点|Linux 1.0 之旅:回顾这一切的开始
通过安装 SLS 1.05 展示了 Linux 内核在这 26 年间走过了多远. 我第一次安装 Linux 是在 1993 年.那时我跑的是 MS-DOS,但我真的很喜欢学校机房电脑的 Unix 系统 ...
- linux中mpich的运行线程,Linux下MPICH的安装与使用
1.下载安装包mpich2-1.0.8p1.tar.gz,解压. 2.进入目录mpich2-1.0.8p1, cd mpich2-1.0.8p1 3.配置. ./configure 4.编译.make ...
- linux怎么用gcc运行程序设计,linux应用程序设计--GCC程序编译
GCC程序编译 linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作之一.GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一 ...
- linux非图形界面运行vscode,linux无法启动vscode怎么办
linux无法启动vscode? 是否正确安装.不然是无法运行的 安装Visual Studio Code 首先需要安装Ubuntu Make.Ubuntu Make存在Ubuntu 15.04资源库 ...
- linux下查询汇编指令手册,Linux命令大全
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linu ...
- linux下mvn的运行配置,Linux内网环境下使用Nexus配置Maven私有仓库
一. 安装配置Nexus 1. 下载nexus 2. 解压:tar -zxf nexus-3.5.2-01-unix.tar.gz 3. 进入bin目录启动:./nexus run & 出现如 ...
- linux查看git是否运行,关于linux:使用脚本检查git分支是否领先于另一个
我有branch1和branch2,我想要某种形式: git branch1 isahead branch2 这将显示branch1是否具有branch2没有的提交(并且可能还指定了那些提交). 我无 ...
- linux fedora14 u盘运行,Fedora Linux系统下挂载U盘和Windows盘
前提是在mnt目录下,建立了F,D,U三个目录,还有就是sda,hda之分即串并口硬盘区别 [root@localhost yan]# vi /etc/fstab LABEL=/ / ext3 def ...
最新文章
- 26期20180601目录管理
- CSS复合选择器(后代选择器、子元素选择器、并集选择器、伪类选择器、:focus伪类选择器)
- oracle查询表的字段类型有哪些,oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)...
- 微信小程序-页面跳转传值
- 如何使用 ClickHouse 每天玩转千亿数据,纯PPT干货
- python求最大素数_Python实现求最大公约数及判断素数的方法
- linux mysql 修改root密码_Mac下重置mysql的root密码
- MATLAB字符转数据
- 苦逼的程序员怎么发展
- 【算法刷题2】二叉树的后序遍历
- Spoonwep破解wep加密无线路由密码
- 7.hdfs工作流程及机制
- SQL Server 2005 在64位win7操作系统下的安装及问题总结
- flash声音播放-Sound
- lammps软件介绍与使用
- 数据库实体间一对多(多对一)、多对多关系处理
- 复合梯形公式C语言程序,求运用c++来实现复合梯形公式的代码
- android中如何打开指定卡上的数据连接开关,Android 代码控制手机数据网络的开关(5.0以上)...
- 使用Jupyter Notebook远程连接服务器
- 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 5.0 ETH中GHOST协议篇
热门文章
- 用devc++表白_中山院表白墙丨电科大中山院的帅哥,不会走路吗?没事出来走两步给我瞧瞧...
- java 获取bean_spring如何获取bean的6种方法,你知道几个?
- CSS制作类似 Photoshop 模糊蒙版效果
- System.out.println()中的System,out,println 分别是什么?
- 加点JavaScript魔法
- 为啥打开桌面计算机很慢,为什么电脑开机很慢
- 远程文件拷贝(fastcopy为例)
- k8s动力节点的部署
- 计算机远程桌面在哪里打开,电脑远程桌面怎么打开,教你电脑远程桌面怎么打开...
- 启动魔兽war3关于FATAL ERROR!的问题