iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux下Lsof命令的安装及基础操作
  • 442
分享到

Linux下Lsof命令的安装及基础操作

2023-06-15 16:06:58 442人浏览 泡泡鱼
摘要

这篇文章主要讲解了“linux下Lsof命令的安装及基础操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Lsof命令的安装及基础操作”吧!安装lsof 命令默认是没有安装的,而

这篇文章主要讲解了“linux下Lsof命令的安装及基础操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Lsof命令的安装及基础操作”吧!

安装

lsof 命令默认是没有安装的,而且它的使用需要有root权限或者赋予普通用于sudo权限, 使用以下命令安装

yum install -y lsof

lsof 命令有很多可选参数,本文根据我自己的使用经验整理了一些比较常用且重要的用法

列出所有打开的文件

不带任何参数执行 lsof 命令会输出当前所有活跃进程打开的所有文件

[root@ecs-Centos-7 ~]# lsof | more COMMAND     PID   TID    USER   FD      TYPE             DEVICE  SIZE/OFF       node NAME systemd       1          root  cwd       DIR              253,1      4096          2 / systemd       1          root  rtd       DIR              253,1      4096          2 / systemd       1          root  txt       REG              253,1   1624520     530313 /usr/lib/systemd/systemd systemd       1          root  mem       REG              253,1     20064     528340 /usr/lib64/libuuid.so.1.3.0 systemd       1          root  mem       REG              253,1    265600     532853 /usr/lib64/libblkid.so.1.1.0 systemd       1          root  mem       REG              253,1     90248     525942 /usr/lib64/libz.so.1.2.7 systemd       1          root  mem       REG              253,1    157424     525955 /usr/lib64/liblzma.so.5.2.2 systemd       1          root  mem       REG              253,1     23968     526159 /usr/lib64/libcap-ng.so.0.0.0 systemd       1          root  mem       REG              253,1     19896     526135 /usr/lib64/libattr.so.1.1.0 systemd       1          root  mem       REG              253,1     19288     525996 /usr/lib64/libdl-2.17.so systemd       1          root  mem       REG              253,1    402384     525931 /usr/lib64/libpcre.so.1.2.0 systemd       1          root  mem       REG              253,1   2156160

由于lsof命令会输出很多信息,所以上面例子中使用了 lsof | more 来分页显示命令输出结果

输出结果中,第一列中 systemd 的进程ID是 1,它是一个守护进程

其中列 COMMAND 、PID、USER 分别表示进程名、进程ID、所属用户

列 FD 是文件描述符,下面是可能的类型以及说明

FD说明
cwd当前目录
txttxt文件
rtdroot目录
mem内存映射文件

列 TYPE 是文件类型,下面是可能的值以及说明

TYPE说明
DIR目录
REG普通文件
CHR字符
a_inodeInode文件
FIFO管道或者Socket文件
netlink网络
unknown未知

列 DEVICE 表示设备ID

列 SIZE/OFF 表示进程大小

列 NODE 表示文件的Inode号

列NAME 表示路径或者链接

列出指定用户已打开的文件

使用 -u 选项可以列出指定用户已经打开的文件,该选项后面可以接多个用户名,每个用户名之间用空格隔开,表示列出所有指定用户已打开的所有文件

TYPE    说明 DIR 目录 REG 普通文件 CHR 字符 a_inode Inode文件 FIFO    管道或者socket文件 netlink 网络 unknown 未知

上面的例子中,lsof -u tt 命令表示列出 tt 用户已经打开了的文件,从结果可以看出,用户打开了  /home/tt、/、/usr/bin/bash、/usr/bin/vim、/home/tt/.p.txt.swp 这几个文件

如果要排除指定用户已经打开的文件,可以在用户名前加 ^ 符号,下面的命令会列出除tt用户外其他所有用户已打开了的文件

lsof -u ^tt | more

找出打开着但已被删除了的文件

有这样一种场景,有一个服务正在往日志文件中写日志,这个时候,不小心把正在写入的日志文件删除了

上面的场景中,日志文件虽然被删除了,但是文件仍然是打开着的,它仍然占用文件系统的空间,我们可以结合 grep  命令找出这种打开着,但是已经被删除的文件

[root@ecs-centos-7 ~]# lsof -u tt | grep deleted vim     27813   tt    4u   REG  253,1    12288 131167 /home/tt/.p.txt.swp(deleted)

上面例子中使用 lsof -u tt | grep deleted 命令查看用户 tt打开着的确被删除的文件

从结果可以看出,在往 p.txt写入内容的时候,文件被删除了

列出所有打开了的网络文件

[root@ecs-centos-7 ~]# lsof -i COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME ntpd       567   ntp   18u  IPv4  12657      0t0  UDP localhost:ntp ntpd       567   ntp   22u  IPv6  16095      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  dhclient   651  root    6u  IPv4  14594      0t0  UDP *:bootpc  master     960  root   13u  IPv4  15791      0t0  tcp localhost:smtp (LISTEN) master     960  root   14u  IPv6  15792      0t0  TCP localhost:smtp (LISTEN) mysqld    1053 Mysql   13u  IPv6  15147      0t0  TCP *:mysql (LISTEN) sshd      1348  root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN)
  • 列出所有 IPV4/6 网络文件

列出所有已经打开了的 ipv4 网络文件

[root@ecs-centos-7 ~]# lsof -i 4 COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME ntpd       567  ntp   16u  IPv4  12651      0t0  UDP *:ntp  ntpd       567  ntp   18u  IPv4  12657      0t0  UDP localhost:ntp  ntpd       567  ntp   21u  IPv4  16094      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  dhclient   651 root    6u  IPv4  14594      0t0  UDP *:bootpc  master     960 root   13u  IPv4  15791      0t0  TCP localhost:smtp (LISTEN) sshd      1348 root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN)

所有已经打开了的 ipv6 网络文件

[root@ecs-centos-7 ~]# lsof -i 6 COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME ntpd     567   ntp   17u  IPv6  12652      0t0  UDP *:ntp  ntpd     567   ntp   19u  IPv6  12658      0t0  UDP localhost:ntp  ntpd     567   ntp   22u  IPv6  16095      0t0  UDP ecs-centos-7.4-64bit-20200212:ntp  master   960  root   14u  IPv6  15792      0t0  TCP localhost:smtp (LISTEN) mysqld  1053 mysql   13u  IPv6  15147      0t0  TCP *:mysql (LISTEN) sshd    1348  root    4u  IPv6  16700      0t0  TCP *:ssh (LISTEN)
  • 列出在指定端口上打开的文件

使用 lsof -i:端口号 可以获得所有在指定端口号上打开的文件

[root@ecs-centos-7 ~]# lsof -i:22 COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME sshd     1348 root    3u  IPv4  16698      0t0  TCP *:ssh (LISTEN) sshd     1348 root    4u  IPv6  16700      0t0  TCP *:ssh (LISTEN) sshd    27741 root    3u  IPv4 458958      0t0  TCP ecs-centos-7.4-64bit-20200212:ssh->113.118.121.220:42395 (ESTABLISHED) sshd    27819 root    3u  IPv4 459250      0t0  TCP ecs-centos-7.4-64bit-20200212:ssh->113.118.121.220:19807 (ESTABLISHED) sshd    27895 root    3u  IPv4 459828      0t0  TCP

上面例子列出了所有在22号端口上打开的文件

服务器开发中,经常会部署一个网关或者代理程序,用来和客户端通讯,网关或者代理程序需要开放一个固定的端口供客户端连接用

如果客户端连接不上网关或者代理程序,我们可以用上述命令检查网关或代理程序的端口是否开启,来排除因为端口关闭了导致连接不上网关的情况

  • 列出使用了指定协议(TCP/UDP) 的文件

使用 lsof -i TCP/UDP 列出使用了TCP 或 UDP 协议的文件

[root@cghost8 /home/cgyx]# lsof -i TCP | more COMMAND      PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME sshd        1704   root    3u  IPv4   13593      0t0  TCP *:ssh (LISTEN) sshd        1704   root    4u  IPv6   13595      0t0  TCP *:ssh (LISTEN) redis-serer   1725   root    4u  IPv4   19773      0t0  TCP localhost:6380 (LISTEN) nc          2067   cgyx    4u  IPv4   39167      0t0  TCP *:60600 (LISTEN) mysqld      3020  mysql    4u  IPv6 5514608      0t0  TCP 192.168.70.10:mysql->192.168.70.10:37084 (ESTABLISHED)

使用 lsof -i TCP:3306 列出使用了TCP 协议并且端口为3306的文件

[root@cghost8 /home/cgyx]# lsof -i TCP:3306 COMMAND      PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME mysqld      3020 mysql    4u  IPv6 5514608      0t0  TCP 192.168.70.10:mysql->192.168.70.10:37084 (ESTABLISHED)

使用 lsof -i TCP:1-1024 列出使用了TCP协议并且端口范围为 1 到 1024 的文件

[root@cghost8 /home/cgyx]# lsof -i TCP:1-1024 COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME sshd     1704   root    3u  IPv4   13593      0t0  TCP *:ssh (LISTEN) sshd     1704   root    4u  IPv6   13595      0t0  TCP *:ssh (LISTEN) cupsd    1709   root   12u  IPv6   39148      0t0  TCP localhost:ipp (LISTEN) cupsd    1709   root   13u  IPv4   39149      0t0  TCP localhost:ipp (LISTEN) smbd     1824   root   35u  IPv6   17658      0t0  TCP *:microsoft-ds (LISTEN) smbd     1824   root   36u  IPv6   17659      0t0  TCP *:netbiOS-ssn (LISTEN) smbd     1824   root   37u  IPv4   17660      0t0  TCP *:microsoft-ds (LISTEN) smbd     1824   root   38u  IPv4   17661      0t0  TCP *:netbios-ssn (LISTEN)

列出目录中所有打开的文件

可以使用lsof命令列出指定目录中的所有打开文件

现有一个data目录 ,结构如下:

[root@ecs-centos-7 tt]# tree data/ data/ ├── dira │   └── a.txt └── d.s  1 directory, 2 files

列出 data 目录中打开的文件

[root@ecs-centos-7 tt]# lsof +D ./data/ COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME bash    28473 root  cwd    DIR  253,1     4096 131146 ./data bash    28502 root  cwd    DIR  253,1     4096 131172 ./data/dira vim     28530 root  cwd    DIR  253,1     4096 131172 ./data/dira vim     28530 root    4u   REG  253,1    12288 131174 ./data/dira/.a.txt.swp  [root@ecs-centos-7 tt]# lsof +d ./data/ COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME bash    28473 root  cwd    DIR  253,1     4096 131146 ./data bash    28502 root  cwd    DIR  253,1     4096 131172 ./data/dira vim     28530 root  cwd    DIR  253,1     4096 131172 ./data/dira

上面例子中,+D 和 +d 选项都是列出目录中打开的文件

+D 选项会列出一个目录和其子目录中打开的文件,而 +d 选项只会列出当前目录下已打开的文件

列出指定进程ID打开的文件

进程ID是操作系统进程的唯一标识,以下命令列出了进程ID为 1053 相关的文件, 从结果中可以知道这个进程ID对应的进程是MySQL

[root@ecs-centos-7 ~]# lsof -p 1053 COMMAND  PID  USER   FD   TYPE             DEVICE  SIZE/OFF    NODE NAME mysqld  1053 mysql  cwd    DIR              253,1      4096 1055765 /var/lib/mysql mysqld  1053 mysql  rtd    DIR              253,1      4096       2 / mysqld  1053 mysql  txt    REG              253,1 251841448  534935 /usr/sbin/mysqld mysqld  1053 mysql  mem    REG              253,1    209512  659436 /usr/lib64/mysql/plugin/validate_passWord.so mysqld  1053 mysql    1w   REG              253,1    206658  924771 /var/log/mysqld.log mysqld  1053 mysql    2w   REG              253,1    206658  924771 /var/log/mysqld.log

上述命令中,-p 选项后面可以指定多个进程ID,每个进程ID之间用逗号分隔,如果想排除掉某个进程打开的文件,可以在该进程ID前面加上 ^符号

lsof -p 1,2,3,^4

上述命令会列出进程1,进程2,进程3打开的所有文件,同时忽略进程4打开的文件

杀死指定用户的所有进程

前面介绍了列出指定用户所有打开的文件,我们可以组合 kill 命令一起使用,实现杀死指定用户的所有进程的功能,具体的命令如下

kill -9 `lsof -t -u tt`

上述命令中,lsof -u tt 是列出tt用户所有打开的文件,加上 -t 选项之后表示结果只列出PID列,也就是进程ID列,其他列都忽略,前面的  kill -9 表示强制结束指定的进程ID

感谢各位的阅读,以上就是“Linux下Lsof命令的安装及基础操作”的内容了,经过本文的学习后,相信大家对Linux下Lsof命令的安装及基础操作这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux下Lsof命令的安装及基础操作

本文链接: https://www.lsjlt.com/news/280920.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux下Lsof命令的安装及基础操作
    这篇文章主要讲解了“Linux下Lsof命令的安装及基础操作”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下Lsof命令的安装及基础操作”吧!安装lsof 命令默认是没有安装的,而...
    99+
    2023-06-15
  • Linux下有哪些操作邮件的基础命令
    本篇内容主要讲解“Linux下有哪些操作邮件的基础命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下有哪些操作邮件的基础命令”吧!系统提供了用户之间通信的邮件系统,当用户打开终端注册...
    99+
    2023-06-13
  • Linux基础命令-lsof查看进程打开的文件
    Linux基础命令-uptime查看系统负载 Linux基础命令-top实时显示系统状态 Linux基础命令-ps查看进程状态 文件目录 前言 一 命令的介绍 二 语法及参数 2.1 使用help查看命令的语法信息 2.2 常用参...
    99+
    2023-09-06
    linux 运维 服务器
  • MongoDB的安装及常用操作命令
    这篇文章主要讲解了“MongoDB的安装及常用操作命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MongoDB的安装及常用操作命令”吧!环境:cento...
    99+
    2024-04-02
  • Linux下CVS的安装配置与操作命令总结
    本篇内容介绍了“Linux下CVS的安装配置与操作命令总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在介绍CVS命令之前,先说点别的 如...
    99+
    2023-06-12
  • Linux基础命令cat的作用
    本篇内容主要讲解“Linux基础命令cat的作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux基础命令cat的作用”吧!cat连接文本文件或者标准输入,将结果输出到标准输出设备。此命令...
    99+
    2023-06-06
  • Linux操作系统学习,Linux基础命令大全
    目录 第一章、Linux简介和安装1.1)Linux简介和分类1.2)安装VMware虚拟机,在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1)什么是IP地址,如何查看2.2)虚拟机NAT模式中...
    99+
    2023-08-17
    linux 学习 运维
  • Redis基础类型及常用操作、命令有哪些
    Redis基础类型及常用操作、命令有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概念:Redis是用C语言开发的一个开源的高性能键值对数...
    99+
    2024-04-02
  • Mysql_5.7下载安装与配置基础操作教程
    目录 一、Mysql57下载与安装 二、尝试登录Mysql 三、配置Mysql环境变量 一、Mysql57下载与安装         首先,进入Mysql下载官网:MySQL Community Downloads         随后,...
    99+
    2023-09-27
    mysql 数据库
  • linux下mysql数据库基础及客户端命令详解
    linux下mysql数据库基础及客户端命令详解1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎常见有如下两个存储引擎:MyISAM:每表三...
    99+
    2024-04-02
  • linux下mysql操作命令合集
    linux下mysql操作命令大全   linux的mysql操作命令大全详解 linux的mysql操作命令大全一、有关mysql服务的操作命令 1.linux下启动mysql的命令: mysqladmin start /ect/init...
    99+
    2023-09-13
    mysql linux 数据库
  • SVN安装及基本操作
    SVN(Subversion)是一种版本控制系统,用于管理和追踪文件和目录的变化。下面是SVN的安装及基本操作步骤:**安装SVN*...
    99+
    2023-08-14
    SVN
  • CentOS简单操作命令及node.js怎么安装
    本篇内容主要讲解“CentOS简单操作命令及node.js怎么安装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS简单操作命令及node.js怎么安装”吧!查看centos内核的版本:...
    99+
    2023-06-17
  • Linux的CLI命令行界面系统操作基础有哪些
    本篇内容主要讲解“Linux的CLI命令行界面系统操作基础有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的CLI命令行界面系统操作基础有哪些”吧!常用快捷键:Ctrl+d&nbs...
    99+
    2023-06-12
  • Linux中基本的文件操作命令
    本篇内容介绍了“Linux中基本的文件操作命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!cdcd 是打开某个路径的命令,也就是打开某个文...
    99+
    2023-06-12
  • HDFS基础配置安装及命令使用的示例分析
    小编给大家分享一下HDFS基础配置安装及命令使用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!HDFS是基于Java的文件系统,可在Hadoop生态系统中提供可扩展且可靠的数据存储。因此,我们需要了解基本的HDF...
    99+
    2023-06-02
  • CentOS简单操作命令以及node.js的安装方法
    本篇文章为大家展示了CentOS简单操作命令以及node.js的安装方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这里实例讲述了CentOS简单操作命令及node.js的安装方法。具体如下:查看...
    99+
    2023-06-05
  • 在linux下MySQL的常用操作命令
    一、启动与退出 1、启动 MySQL 服务 net start mysql   或   service mysql start 2、关闭 MySQL 服务 net stop mysql    或   service mysql stop 3...
    99+
    2023-09-03
    linux mysql
  • Linux基础命令elinks的用法
    本篇内容主要讲解“Linux基础命令elinks的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux基础命令elinks的用法”吧!elinkselinks指令是一个纯文本格式的浏览器...
    99+
    2023-06-05
  • Linux基础命令exportfs的用法
    本篇内容介绍了“Linux基础命令exportfs的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!exportfsexportfs主要用...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作