首页 > 编程知识 正文

lsof相同命令,lsof清除已删除未释放的文件

时间:2023-05-06 15:27:10 阅读:33951 作者:788

列表打开文件(lsof )是一个列出在当前系统中打开的文件的工具。 在linux系统环境中,一切都作为文件存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。

适应条件: lsof正在访问核心文件和各种文件,因此必须以超级用户身份运行才能充分发挥其功能。

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

显示样品

[ root @ localhost~] # lsof/usr/sbin/httpdcommandpiduserfdtypedevicesize/offnodenamehttpd 6279 roottxtreg 8, 2344112415135/usr/sbin/httpd httpd 6281 apachetxtreg 8,2344112415135/usr/sbin/httpd httpd 6282 apachetxtreg 8, 2344112415135/usr/sbin/httpd httpd 6283 apachetxtreg 8,2344112415135/usr/sbin/httpd httpd 6284 apachetxtreg 8, 2344112415135/usr/sbin/httpd httpd 6285 apachetxtreg 8,2344112415135/usr/sbin/httpd httpd 6286 apachetxtreg 8, 2344112415135/usr/sbin/httpd httpd 6287 apachetxtreg 8,2344112415135/usr/sbin/httpd httpd 6288 apachetxtreg 8,234441112444

每行显示打开的文件。 默认情况下,如果后面什么也没有,系统中打开的所有文件都将打开

COMMAND :进程名称

PID :进程标识符

USER:工艺业主

FD:文件描述符。 该APP应用程序通过文件描述符识别该文件。 例如cwd、txt等

类型: dir、REG等文件类型

DEVICE:指定磁盘名称

SIZE:文件大小

NODE:索引节点(标识磁盘上的文件)

在NAME:中打开的文件的正确名称

补充说明:“软盘”列中的文件说明cwd值表示APP应用程序的当前工作目录。 这是程序启动的目录,除非它本身更改了此目录。 txt类型是程序代码,如APP应用程序二进制文件本身和公用库。 那个

子数值表示APP应用程序的文件描述符。 这是打开文件时返回的整数。

lsof 6660 root0uchr 136,00t 03/dev/pts/0 lsof 6660 root 1u chr 136,00t 03/dev/pts/0 lsof 6660 root 2u chr 136,0t 03/dev/ptts 301/proc lsof 6660 root4rdir 0,3036358/proc/6660/FD lsof 6660 root5w FIFO 0,80t 036360 root6r FIFO 0,80t 036364 pipe 24096130562/root lsof 6661 rootrtddir 8,240962/lsof 6661 roottxtreg 8,2154356415242/usr/sbin/lsof lsof 66661 rootmemreg 8,

914963 /lib/libdl-2.12.solsof 6661 root mem REG 8,2 141080 914950 /lib/ld-2.12.solsof 6661 root mem REG 8,2 120780 915040 /lib/libselinux.so.1lsof 6661 root mem REG 8,2 99154448 395123 /usr/lib/locale/locale-archivelsof 6661 root 4r FIFO 0,8 0t0 36363 pipelsof 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目录下恢复文件的内容
假如/贤惠的白猫/log/messages文件被删了,恢复这个文件的方法:
首先使用lsof 查看当前是否有进程打开/贤惠的白猫/log/messages文件,
#lsof |grep /贤惠的白猫/log/messages
[root@localhost ~]# rm /贤惠的白猫/log/messages
rm:是否删除普通文件 "/贤惠的白猫/log/messages"?y
[root@localhost ~]# lsof |grep /贤惠的白猫/log/messages
rsyslogd  5925      root    1w      REG        8,2     4369     266184 /贤惠的白猫/log/messages (deleted)

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

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

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

 

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

转载于:https://www.cnblogs.com/the-study-of-linux/p/5501593.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。