乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Linux优化排错 2.2 查看进程打开的文件句柄
2017-08-13 11:21:39
45
0
0
admin
> 通过lsof查看 #命令lsof 介绍 ##lsof filename 只看打开指定文件的进程 -u username 只看某用户的进程  COMMAND => 进程的命令 PID => 进程id USER => 进程的用户 FD => 文件描述符 ``` cwd 当前工作目录 txt 程序代码或者可执行文件 更多细节看 man lsof ``` TYPE => 文件类型,如DIR、REG等 ``` REG 普通文件 DIR 目录 PIPE 管道 IPv4 IPv4 socket 更多细节看 man lsof ``` DEVICE => 磁盘的名称 SIZE => 文件的大小 NODE => inode NAME => 打开文件的名称 ##用lsof看一些网络相关文件 ``` lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 => IPv4/IPv6 protocol => TCP/UDP hostname => hostname hostaddr => IP service => /etc/service中的service name port => 端口号 ``` 例:查看打开22端口的进程  *** ##用lsof恢复删除的文件 如果误删了某个文件,只要还有进程在访问这个文件,那么就可以通过这个进程访问文件的文件句柄来恢复这个文件 ``` [root@test1 ~]# cat ./a 123 [root@test1 ~]# flock -n ./a -c "sleep 100" & [1] 2222 [root@test1 ~]# lsof ./a COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME flock 2222 root 3rW REG 253,0 4 181265 ./a sleep 2223 root 3r REG 253,0 4 181265 ./a [root@test1 ~]# rm -f ./a [root@test1 ~]# lsof |grep /root/a flock 2222 root 3rW REG 253,0 4 181265 /root/a (deleted) sleep 2223 root 3r REG 253,0 4 181265 /root/a (deleted) [root@test1 ~]# ls -l /proc/2222/fd total 0 lrwx------ 1 root root 64 Aug 14 04:24 0 -> /dev/pts/0 lrwx------ 1 root root 64 Aug 14 04:24 1 -> /dev/pts/0 lrwx------ 1 root root 64 Aug 14 04:24 2 -> /dev/pts/0 lr-x------ 1 root root 64 Aug 14 04:24 3 -> /root/a (deleted) [root@test1 ~]# cat /proc/2222/fd/3 123 [root@test1 ~]# cat /proc/2222/fd/3 > ./a [root@test1 ~]# cat ./a 123 ```
上一篇:
Linux优化排错 2.1 查看一个进程的系统调用
下一篇:
Linux优化排错 3.1 系统性能监控工具sar
文档导航