lsof之列出已打开的文件
lsof命令常用解析
Linux中常用 lsof 来查看文件调用进程等相关信息,也可用来查看活跃的进程信息和端口监听进程信息等
1. lsof 命令介绍
NAME
lsof - list open files 用法
lsof [options] [filename] 常用选项
-c 显示指定进程现在正在打开的文件
-p 显示指定进程号现在正在打开的文件
-g 显示指定gid号进程正在打开的文件
-u 显示指定用户名启动的进程打开的文件
+d 显示指定目录下被进程打开的文件(不包含子目录)
+D 显示指定目录下被进程打开的文件(包含子目录)
-d 显示指定fd文件描述符的进程
-i [46][proto][@host|addr][:svc_list|port_list]按以上条件获取进程信息
[ipv4|ipv6][tcp|udp][@hostname|ipaddr][/etc/services定义的服务|服务端口port]
-U : 获取UNIX套接口地址
-t : 仅获取进程ID
-l : 在输出显示用户ID而不是用户名
2. lsof 常见用法
# 显示系统活跃进程打开的文件
lsof # 显示调用/var/log/messages文件的进程
lsof /var/log/messages # 显示crond进程打开的文件
lsof -c crond # 显示进程号为1328的进程打开的文件
lsof -p 1328 # 显示gid号为1的进程打开的文件
lsof -g 1 # 显示用户root启用的进程打开的文件
lsof -u root # 显示/var/log目录下被进程打开的文件
lsof +d /var/log/ #(不包含子目录)
lsof +D /var/log/ #(包含子目录) # 显示文件描述符fd为4的进程打开的文件
lsof -d 4 # 通过[46][proto][@host|addr][:svc_list|port_list]条件匹配进程信息输出
lsof -i tcp:22
3. lsof使用实例
生产实例:Web服务器磁盘满故障深入解析
模拟测试环境:
# 安装httpd
yum install httpd -y # 修改配置文件使日志内容指向/app/logs/access_log
sed -i '/CustomLog logs\/access_log common/ aCustomLog /app/logs/access_log common' /etc/httpd/conf/httpd.conf # 模拟磁盘/dev/sdc,注入80K的空间
dd if=/dev/zero of=/dev/sdc bs=8K count=10
# 格式化模拟磁盘
mkfs.ext4 /dev/sdc
y # 创建日志目录并将/dev/sdc挂载上去
mkdir -p /app/logs
mount -o loop /dev/sdc /app/logs
df -h # 重启httpd服务使其重新加载配置文件
/etc/init.d/httpd restart # 循环语句访问httpd服务使其日志空间写满
for n in `seq 10000`;do curl 127.0.0.1 &>/dev/null;done # 查看磁盘使用情况(/dev/sdc使用率达99%即可)
df -h # 删除日志文件/app/logs/access_log
rm -f /app/logs/access_log
df -h # 发现磁盘使用率没有降下来
lsof |grep /app/logs # 发现虽然文件已经被删除了,但是httpd进程仍旧在调用/app/logs/access_log文件,系统空间未释放 解决思路:删除日志文件磁盘空间没有降下来的原因是因为系统中httpd进程仍旧在调用access_log文件
根据原理,我们可以考虑清空/app/logs/access_log文件里的内容以解决该问题
若已经删除了/app/logs/access_log文件,则可以通过重启httpd服务以释放磁盘空间 解决方法1:清空被进程调用的文件内容
命令:>/app/logs/access_log && df -h 解决方法2:删除/app/logs/access_log,并重启httpd服务
命令:rm -f /app/logs/access_log && /etc/init.d/httpd restart && df -h
yum install httpd -y \
&& sed -i '/CustomLog logs\/access_log common/ aCustomLog /app/logs/access_log common' /etc/httpd/conf/httpd.conf \
&& dd if=/dev/zero of=/dev/sdc bs=8K count=10 \
&& mkfs.ext4 /dev/sdc
y mkdir -p /app/logs \
&& mount -o loop /dev/sdc /app/logs \
&& df -h \
&& /etc/init.d/httpd restart \
&& for n in `seq 10000`;do curl 127.0.0.1 &>/dev/null;done \
&& df -h \
&& rm -f /app/logs/access_log \
&& df -h \
&& lsof |grep /app/logs
模拟测试环境脚本
lsof之列出已打开的文件的更多相关文章
- openfiles_(命令)查看已打开的文件列表
效果: 功能: 查看Windows系统的进程信息,包括进程打开了哪些文件 描述: 允许管理员列出系统上已打开的文件和文件夹或与其断开连接. 参数列表: /Disconnect 中断至少一个打开的文件的 ...
- Python Cookbook(第3版)中文版:15.18 传递已打开的文件给C扩展
15.18 传递已打开的文件给C扩展¶ 问题¶ 你在Python中有一个打开的文件对象,但是需要将它传给要使用这个文件的C扩展. 解决方案¶ 要将一个文件转换为一个整型的文件描述符,使用 PyFile ...
- 由已打开的文件读取数据---read
头文件:#include<unistd.h> 函数原型:ssize_t read(int fd,void *buf,size_t count); 参数说明:fd:文件描述符 buf:存放读 ...
- Linux 命令 - lsof: 列出打开的文件
lsof 是一个列出当前系统打开文件的工具. 命令格式 lsof [ -?abChlnNOPRstUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ + ...
- 通过某个进程号显示该进行打开的文件 lsof -p 1 11. 列出多个进程号对应的文件信息 lsof -p 123,456,789 5. 列出某个用户打开的文件信息 lsof -u username
linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用 lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录 3.网络文件系 ...
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录 3.网络文件系统的文件,4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链 ...
- linux lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录 3.网络文件系统的文件,4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链 ...
- UNIX环境编程学习笔记(5)——文件I/O之fcntl函数访问已打开文件的性质
lienhua342014-08-29 fcntl 函数可以改变已打开的文件的性质. #include <fcntl.h> int fcntl(int filedes, int cmd, ...
- lsof命令查看端口关联的文件
lsof命令查看端口关联的文件 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网 ...
随机推荐
- windows下wchar_t的问题
使用vs新建工程或者编译工程的时候默认在编译设置里面讲wchar_t设置为内置类型,如下图: 但是在编译相互依赖的工程的时候,如果有的工程不将wchar_t设置为内置类型的时候,将会出现链接错误,需要 ...
- SDIO总线协议
SDIO采用HOST-DEVICE模式,所有通信都由HOST端发命令,DEVICE设备只要解析HOST命令就可与HOST进行通信. SDIO总线的几根线: 1. CLK信号:HOST给DEVICE的 ...
- 硬件工程师必须掌握的PCB叠层设计内容
总的来说叠层设计主要要遵从两个规矩: 1. 每个走线层都必须有一个邻近的参考层(电源或地层); 2. 邻近的主电源层和地层要保持最小间距,以提供较大的耦合电容; 下面列出从两层板到八层板的叠层来进行示 ...
- python画图的工具及网站
①Gallery - Matplotlib 3.4.3 documentation 学会模仿并超越 ②Examples - Apache ECharts js网页端动态展示 ③WEB色見本 原色大辞典 ...
- 文件上传漏洞Bypass总结
文件上传漏洞Bypass总结 前端JS验证文件类型: 上传后缀jpg,抓包改为php后缀 ======================================================= ...
- python中yield的理解
首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...
- 转载:10G以太网光口与Aurora接口回环实验
10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...
- Django(74)drf-spectacular自动生成接口文档
介绍 drf-spectacular是为Django REST Framework生成合理灵活的OpenAPI 3.0模式.它可以自动帮我们提取接口中的信息,从而形成接口文档,而且内容十分详细,再也不 ...
- DeWeb进阶 :控件开发 --- 1 完成一个纯html的demo
最近随着DeWeb(以下简称DW)的完善,和群友的应用的深入,已经有网友开始尝试做DeWeb支持控件的开发了! 这太令人兴奋了! 作为DeWeb的开发者,感觉DeWeb的优势之一就是简洁的第三方控件扩 ...
- 二层组网AP上线
一.实验目的 1)掌握配置WLAN源接口的命令 2)掌握配置DHCP服务器的命令 3)掌握手工确认AP上线的方法a 二.实验仪器设备及软件 仪器设备:一台AC,四台AP 软件:ENSP 三.实验原理 ...