lsof详解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html

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

适应条件:lsof访问的是核心文件和各种文件,所以必须以root用户的身份运行才能充分发挥其功能。

lsof [选项] [绝对路径的文件名]
显示示例

复制代码
[root@localhost ~]# lsof /usr/sbin/httpd
COMMAND  PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
httpd   6279   root txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6281 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6282 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6283 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6284 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6285 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6286 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6287 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6288 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
httpd   6546 apache txt    REG    8,2   344112 415135 /usr/sbin/httpd
复制代码

 


每行显示一个打开的文件,默认如果后面不跟任何东西,将打开系统打开的所有文件
COMMAND :进程名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别到该文件。如cwd、txt等
TYPE:文件类型,如DIR,REG
DEVICE:指定磁盘名称
SIZE:文件大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

补充:FD列中的文件描述cwd值表示应用程序的当前工作目录,这是该程序启动的目录,除非它本身对这个目录进行更改。txt类型的是程序代码,如应用程序二进制文件本身或者共享库。其

次数值表示应用程序的文件描述符,这是打开文件时一个返回的一个整数。

复制代码
lsof      6660      root    0u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    1u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    2u      CHR      136,0      0t0          3 /dev/pts/0
lsof      6660      root    3r      DIR        0,3        0          1 /proc
lsof      6660      root    4r      DIR        0,3        0      36358 /proc/6660/fd
lsof      6660      root    5w     FIFO        0,8      0t0      36363 pipe
lsof      6660      root    6r     FIFO        0,8      0t0      36364 pipe
lsof      6661      root  cwd       DIR        8,2     4096     130562 /root
lsof      6661      root  rtd       DIR        8,2     4096          2 /
lsof      6661      root  txt       REG        8,2   154356     415242 /usr/sbin/lsof
lsof      6661      root  mem       REG        8,2  1907156     914957 /lib/libc-2.12.so
lsof      6661      root  mem       REG        8,2    17892     914963 /lib/libdl-2.12.so
lsof      6661      root  mem       REG        8,2   141080     914950 /lib/ld-2.12.so
lsof      6661      root  mem       REG        8,2   120780     915040 /lib/libselinux.so.1
lsof      6661      root  mem       REG        8,2 99154448     395123 /usr/lib/locale/locale-archive
lsof      6661      root    4r     FIFO        0,8      0t0      36363 pipe
lsof      6661      root    7w     FIFO        0,8      0t0      36364 pipe
复制代码

 

其中u表示该文件被打开处于读取\写入模式,而不是只读或只写模式;
    r 只读 ; w 只写 ;W表示该应用程序具有对整个文件的写锁(确保每次只能打开一次应用程序实例)
初始打开每个应用程序时,都具有三个文件描述符,从0到2,分别表示标准输入、输出和错误流。因此,大多数应用程序
所打开的FD都是从3开始

TYPE:REG、DIR、CHR、BLK、UNIX、FIFO、IPV4

(2)
查看端口现在运行的情况
ls -i:port  #某个端口
ls -i:port1-port2 #
ls -i:1-1024      #查看端口1-1024运行情况

(3)恢复删除文件
当系统中的某个文件被意外删除了,只要这个时候系统中有进程正在访问这个文件,那么可以通过lsof 从/proc目录下恢复文件的内容
假如/var/log/messages文件被删了,恢复这个文件的方法:
首先使用lsof 查看当前是否有进程打开/var/log/messages文件,
#lsof |grep /var/log/messages
[root@localhost ~]# rm /var/log/messages
rm:是否删除普通文件 "/var/log/messages"?y
[root@localhost ~]# lsof |grep /var/log/messages
rsyslogd  5925      root    1w      REG        8,2     4369     266184 /var/log/messages (deleted)

从上面的信息可以看到PID 5925(syslogd)打开文件的文件描述符为1,同时发现/var/log/messages已经被删除了。
因此可以通过/var/log/messages文件描述符来查看文件信息。

复制代码
cat /pro/5925/fd/1
[root@localhost ~]# cat /proc/5925/fd/1
May 12 08:04:11 localhost kernel: hpet1: lost 3 rtc interrupts
May 12 08:04:11 localhost kernel: hpet1: lost 6 rtc interrupts
May 12 08:04:11 localhost kernel: hpet1: lost 1 rtc interrupts
May 12 09:25:33 localhost kernel: usb 2-2.1: USB disconnect, device number 10
May 12 09:25:33 localhost kernel: eth0: link down
May 12 09:25:33 localhost kernel: usb 2-2.1: new full speed USB device number 11 using uhci_hcd
May 12 09:25:33 localhost kernel: usb 2-2.1: New USB device found, idVendor=0e0f, idProduct=0008
May 12 09:25:33 localhost kernel: usb 2-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 12 09:25:33 localhost kernel: usb 2-2.1: Product: Virtual Bluetooth Adapter
May 12 09:25:33 localhost kernel: usb 2-2.1: Manufacturer: VMware
May 12 09:25:33 localhost kernel: usb 2-2.1: SerialNumber: 000650268328
May 12 09:25:33 localhost kernel: usb 2-2.1: configuration #1 chosen from 1 choice
复制代码

 

最后通过重定向的方法恢复被删除的/var/log/messages
cat /pro/5925/fd/1 >/var/log/messages

 

参考资料:http://baike.baidu.com/link?url=FsHZ0-as3vhzPOgTrHO8QyAmLQDPseHje2sYa0M-eZx-fiJe0vNjc4fi4d0fnc59MmooMh28Hmq2oEhnj4Vska

转载于:https://www.cnblogs.com/the-tops/p/8515399.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18.04上下载安装使用sogou输入法

下载地址:搜狗输入法Linux官网-首页 安装设置网址:搜狗输入法Linux官网-安装指导 这样Ubuntu下工作就更加方便了。

正则

(一)字符类 [...]  方括号内的任意字符 [^...]   不在方括号内的任意字符 .    除换行符和其它Unicode行终止符之外的任意字符 \w   任何ASCII字符组成的单词,等价于[a-zA-Z0-9] \W   任何非ASCII字符组成的单词,等价…

使用Cloud Studio写python

1、进入【腾讯云开发者平台】 2、点击【进入工作空间】 3、点击【新建工作空间】 4、点击【从模版创建】 选择你需要的空间环境,就可以开始啦!转载于:https://juejin.im/post/5c75f79051882562962ef5d7

显卡、显卡驱动、显存、GPU、CUDA、cuDNN

显卡Video card,Graphics card,又叫显示接口卡,是一个硬件概念(相似的还有网卡),执行计算机到显示设备的数模信号转换任务,安装在计算机的主板上,将计算机的…

ros rviz显示rosbag中的图像和imu数据

一、rosbag相关的指令 1. rostopic list //列举出系统中正在发布的ros 话题 2. rosbag record -a //录制系统中所有正在发布的ros 话题 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

PX4的workqueue

Workqueue相当于是中断子程序,然后在queue的cycle里面要注意,不能在cycle函数里面用printf打印,在cycle里面printf函数是打印不出来的。 也不能在cycle里面用while(1),就是不能让程序一直在queue里面执行,要想让cycle执…

企业选择 多云管理平台 六大注意事项

企业选择 多云管理平台 六大注意事项 1、是否足够简单,学习曲线有多长 2、是否可实现自动化环境部署,日常运维作业等一系列操作? 3、是否可以管理全异构的云环境,支持主流公有云厂商的云资源? 4、是否能提供管理成本、…

面向接口编程

面向接口编程 一般在实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应该是所有的定义与实现分离,尽管这对于系统中某些复杂的情况有些繁烦。面向接口编程设计 使用面向接口编程思想将层与层之间通过接口依赖,下…

Java并发学习之一——线程的创建

与每个java语言中的元素一样,线程是对象。在Java中,我们有两种方式创建线程: 1、通过直接继承thread类,然后覆盖run方法。 2、构建一个实现Runnable接口的类,然后创建一个thread类对象并传递Runnable对象作为构造参数 …

day1||python

测试题: 0. Python 是什么类型的语言? Python是一种面向对象、解释型、动态类型计算机程序设计语言解释型:程序无需编译成二进制代码,而是在执行时对语句一条一条编译动态类型:在程序执行过程中,可以改变变…

2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...

在金融科技领域,风险控制的重要性,从其关联的金融业务和结合的技术维度可见一斑:风控涉及信用借贷、保险、支付、供应链金融等场景,并运用了包括生物特征识别、机器学习、自然语言处理、大数据、云计算等多项技术。 区别于美国有…

【原创】QT简单计算器

代码 //main.cpp#include "calculator_111.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return…

cs堡垒机使用说明

一、堡垒机介绍 为了保证机房的网络安全&#xff0c;IDC内所有服务器不被允许从办公网直接ssh登录&#xff0c;必须通过跳板机进行间接登录。用户通过跳板机执行的所有命令&#xff08;包括通过跳板机登录的其他机器后的命令&#xff09;都会被保存并审计。 cs是我们登录IDC服…

export和export default的区别

es6中export和export default的区别 export与export default均可用于导出常量、函数、文件、模块&#xff1b;你可以在其它文件或模块中通过import(常量 | 函数 | 文件 | 模块)名的方式&#xff0c;将其导入&#xff0c;以便能够对其进行使用&#xff1b;在一个文件或模块中&am…

koa中间件机制详解

转自&#xff1a;https://cnodejs.org/topic/58fd8ec7523b9d0956dad945 koa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。 在我眼中&#xff0c;koa的确是比express轻量的多&#xff0c;koa给我的感觉更像是一个中间件框架&#xff0c;koa只是一个基础的…

极度推荐的文章和网站

推荐文章---收录中 因为是及时雨,这里就给他放在开头啦&#xff1a;http://www.cnblogs.com/zhuzhenwei918/p/7241971.html webpack3.0配置指南&#xff1a;http://www.cnblogs.com/caideyipi/articles/7080010.html 超酷的伪元素网站&#xff1a;https://tympanus.net/Develop…

倍道而行:选择排序

一、为什么学了之后过段时间又会忘记了&#xff1f; 因为没有去运用它和认为面试需要而没有真正的重视。现在给它赋予意义&#xff1a;1.那就是基础牢固&#xff0c;才可触类旁通2.真正记得和随时可以拿出手&#xff0c;那么面试可以PK掉一大批人。不然看到一个精妙的算法就学一…

如何构建一个真实的推荐系统?

AI 前线导读&#xff1a;随着互联网行业的井喷式发展&#xff0c;数据规模呈现爆炸式增长。大数据中蕴含了巨大的价值&#xff0c;但同时也来了很 “信息过载” 的问题。推荐系统作为一个广泛应用的信息过滤系统&#xff0c;在很多领域取得了巨大的成功。在电子商务上&#xff…

volatile的适用场景

介绍 把代码块声明为 synchronized&#xff0c;有两个重要后果&#xff0c;通常是指该代码具有 原子性&#xff08;atomicity&#xff09;和 可见性&#xff08;visibility&#xff09;。 原子性意味着个时刻&#xff0c;只有一个线程能够执行一段代码&#xff0c;这段代码通过…

link和@import的区别

1、link属于HTML标签&#xff0c;import是css提供的 2、link是HTML标签&#xff0c;没有兼容问题&#xff0c;而import只在IE5以上才能识别 3、页面被加载时&#xff0c;link会同时被加载&#xff0c;而import引用的css会等到页面加载完再加载 4、link方式的样式的权重高于impo…