查看 Linux 中文件打开情况(lsof)
前言
Linux 下有哪些文件
- 普通文件
- 目录
- 符号链接
- 面向块的设备文件
- 面向字符的设备文件
- 管道和命名管道
- 套接字
lsof 命令实用用法介绍
查看当前打开的所有文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vi hyb 7u REG , /home/hyb/..txt.swp
lsof显示的结果,从左往右分别代表:打开该文件的程序名,进程id,用户,文件描述符,文件类型,设备,大小,iNode号,文件名。
列出被删除但占用空间的文件
$ lsof |grep deleted
Xorg root 125u REG , /memfd:xshmfence (deleted)
Xorg root 126u REG , /memfd:xshmfence (deleted)
Xorg root 129u REG , /memfd:xshmfence (deleted)
可以看到这些被删除的但仍然被打开文件,最后查找出来的时候,会被标记deleted。这个时候就可以根据实际情况分析,到底哪些文件可能过大但是却被删除了,导致空间仍然占满。
lsof | grep deleted | awk '{print $2}' | xargs -I {} kill - {}
恢复打开但被删除的文件
查看当前文件被哪些进程打开
查看某个目录文件被打开情况
查看当前进程打开了哪些文件
$ lsof -c hello
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hello hyb cwd DIR , /home/hyb/workspaces/c
hello hyb rtd DIR , /
hello hyb txt REG , /home/hyb/workspaces/c/hello
hello hyb mem REG , /lib/x86_64-linux-gnu/libc-2.23.so
hello hyb mem REG , /lib/x86_64-linux-gnu/ld-2.23.so
hello hyb 0u CHR , 0t0 /dev/pts/
hello hyb 1u CHR , 0t0 /dev/pts/
hello hyb 2u CHR , 0t0 /dev/pts/
我们可以从中看到,至少它用到了/lib/x86_64-linux-gnu/libc-2.23.so以及hello文件。
$ lsof -p
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hello hyb cwd DIR , /home/hyb/workspaces/c
hello hyb rtd DIR , /
hello hyb txt REG , /home/hyb/workspaces/c/hello
hello hyb mem REG , /lib/x86_64-linux-gnu/libc-2.23.so
hello hyb mem REG , /lib/x86_64-linux-gnu/ld-2.23.so
hello hyb 0u CHR , 0t0 /dev/pts/
hello hyb 1u CHR , 0t0 /dev/pts/
hello hyb 2u CHR , 0t0 /dev/pts/
当然这里还有一种方式,就是利用proc文件系统,首先找到hello进程的进程id
$ ps -ef|grep hello
hyb : pts/ :: ./hello
hyb : pts/ :: grep --color=auto hello
$ ls -l /proc//fd
lrwx------ hyb hyb 3月 : -> /dev/pts/
lrwx------ hyb hyb 3月 : -> /dev/pts/
lrwx------ hyb hyb 3月 : -> /dev/pts/
这种方式能够过滤很多信息,因为它只列出了该进程实际打开的,这里它只打开了1,2,3,即标准输入,标准输出和标准错误。
查看某个端口被占用情况
$ lsof -i:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser hyb 6u IPv6 0t0 TCP *: (LISTEN)
redis-ser hyb 7u IPv4 0t0 TCP *: (LISTEN)
这里可以看到redis-ser进程占用了6379端口。
查看所有的TCP/UDP连接
$ lsof -i tcp
ava hyb 6u IPv6 0t0 TCP localhost: (LISTEN)
java hyb 22u IPv6 0t0 TCP localhost:->localhost: (ESTABLISHED)
java hyb 23u IPv6 0t0 TCP localhost:->localhost: (ESTABLISHED)
当然我们也可以使用netstat命令。
$ netstat -anp|grep
这里的-i参数可以跟多种条件:
- -i 4 #ipv4地址
- -i 6 #ipv6地址
- -i tcp #tcp连接
- -i :3306 #端口
- -i @ip #ip地址
查看某个用户打开了哪些文件
$ lsof -u hyb
(内容太多,省略)
列出除了某个进程或某个用户打开的文件
lsof -p ^ #列出除进程id为1的进程以外打开的文件
lsof -u ^root #列出除root用户以外打开的文件
总结
lsof -p -i tcp
lsof参数很多,具体的可以使用man命令查看,但是对于我们来说,知道这些实用的基本足够
查看 Linux 中文件打开情况(lsof)的更多相关文章
- LSOF查看linux中文件打开情况
如何查看linux中文件打开情况 前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. lin ...
- 如何查看linux中文件打开情况
前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. linux下有哪些文件 在介绍lsof命 ...
- ulimit 命令详解 socket查看linux最大文件打开数
ulimit 命令详解 Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限 ...
- 在本机eclipse中创建maven项目,查看linux中hadoop下的文件、在本机搭建hadoop环境
注意 第一次建立maven项目时需要在联网情况下,因为他会自动下载一些东西,不然突然终止 需要手动删除断网前建立的文件 在eclipse里新建maven项目步骤 直接新建maven项目出了错 ...
- 查看linux中某个端口(port)是否被占用(netstat,lsof)
查看linux中某个端口(port)是否被占用(netstat,lsof) netstat命令可以显示网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组等信息.命令格式:netstat [ ...
- 查看linux中的TCP连接数【转】
转自:http://blog.csdn.net/he_jian1/article/details/40787269 查看linux中的TCP连接数 本文章已收录于: 计算机网络知识库 分类: ...
- 如何正确查看Linux机器内存使用情况
如何正确查看Linux机器内存使用情况 背景 只要工作上涉及到Linux机器,基本上都会有这样一个需求,查看内存使用情况,但是怎么看才正确呢?之前使用的是top命令,一直存在一个误区. 为什么top命 ...
- 如何查看 Linux 中所有正在运行的服务
有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...
- linux中文件IO
一. linux常用文件IO接口 1.1. 文件描述符 1.1.1. 文件描述符的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指 ...
随机推荐
- 256位AES加密和解密
/// <summary> /// 256位AES加密 /// </summary> /// <param name="toEncrypt">& ...
- 我终于学会了使用python操作postgresql
一 前言 这篇文章不仅适合pgsql,更适合mysql,思路都是一致的,如果读者学会使用psycopg2操作pgsql,那么使用PyMySQL 操作mysql也是很简单:本篇文章涵盖内容广泛,提供的操 ...
- css 脱离文档流
一.float <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&quo ...
- 9.JavaSE之运算符
Java语言支持如下运算符operator:优先级() 算数运算符 :+ ,- ,* ,/ ,% ,++ ,-- 赋值运算符 := 关系运算符 :> ,< ,>= ,<= ,= ...
- 异数OS 星星之火(一)-- 异数OS-织梦师云 用户使用手册
. 异数OS 星星之火(一)– 异数OS-织梦师云 用户使用手册 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...
- 学习 lind layerdiagram 第三弹
- 钝化 会钝化 订单审批流程 码一会er
先放一张订单审批流程图.预则立嘛
- Spring-事务(1)
一,注解的方式实现事务 1.Dao层 package com.atguigu.spring.tx; public interface BookShopDao { //根据书号获取书的单价 public ...
- linux--->用户管理和sudo权限
linux 用户 配置文件 linux主要通过用户配置文件来查看和修改用户信息 etc/passwd 第一个字段:用户名 第二个字段:密码标志 (表明这个用户有密码,密码放在etc/shadow文件) ...
- Dubbo Cluster集群那点你不知道的事。
这是why技术的第33篇原创文章 本周是在家办公的一周,上面的图就是我在家的工位. 工欲善其事,必先利其器.在家办公,我是认真的. 在家里开发的时候有需求是这样的:一个如果接口调用失败,需要自动进行重 ...