一、lsof

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:

#COMMAND:进程的名称
#PID:进程标识符
#USER:进程所有者
#FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
#TYPE:文件类型,如DIR、REG等
#DEVICE:指定磁盘的名称
#SIZE:文件的大小
#NODE:索引节点(文件在磁盘上的标识)
#NAME:打开文件的确切名称

lsof常用参数

lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程

1.1   字段说明

其中FD 列中的文件描述符

cwd   值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。

txt      类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序。其次数值表示应用程序的文件描述符,这是打开该文件时返回的一个整数。如上的最后一行文件/dev/initctl,其文件描述符为10。

u        表示该文件被打开并处于读取/写入模式,而不是只读 ® 或只写 (w) 模式。同时还有大写 的W 表示该应用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。初始打开每个应用程序时,都具有三个文件描述符,从 0 到 2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的 FD 都是从 3 开始。与 FD 列相比,

Type 列则比较直观。

文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。

lsof 常见的用法是查找应用程序打开的文件的名称和数目。可用于查找出某个特定应用程序将日志数据记录到何处,或者正在跟踪某个问题。

例如,linux限制了进程能够打开文件的数目。通常这个数值很大,所以不会产生问题,并且在需要时,应用程序可以请求更大的值(直到某个上限)。

如果你怀疑应用程序耗尽了文件描述符,那么可以使用 lsof 统计打开的文件数目,以进行验证。

lsof |wc -l

 1.2  常用例子说明

1)查找指定端口号的进程信息

-i  //显示所有打开的端口
[ztao@MongoDB ~]$ lsof -i:6379
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 5341 ztao    4u  IPv6  23457      0t0  TCP *:6379 (LISTEN)
redis-ser 5341 ztao    5u  IPv4  23459      0t0  TCP *:6379 (LISTEN)
redis-ser 5341 ztao    6u  IPv4  23533      0t0  TCP localhost:6379->localhost:6633 (ESTABLISHED)
redis-ser 5341 ztao    7u  IPv4  23535      0t0  TCP localhost:6379->localhost:6634 (ESTABLISHED)
redis-ser 5341 ztao    8u  IPv4  23538      0t0  TCP localhost:6379->localhost:6635 (ESTABLISHED)
redis-ser 5341 ztao    9u  IPv4  23540      0t0  TCP localhost:6379->localhost:6636 (ESTABLISHED)
redis-ser 5341 ztao   10u  IPv4  23839      0t0  TCP localhost:6379->localhost:6747 (ESTABLISHED)
redis-ser 5341 ztao   11u  IPv4  23842      0t0  TCP localhost:6379->localhost:6748 (ESTABLISHED)
newsProvi 5349 ztao    6u  IPv4  23530      0t0  TCP localhost:6633->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao    7u  IPv4  23532      0t0  TCP localhost:6634->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao    8u  IPv4  23536      0t0  TCP localhost:6635->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao    9u  IPv4  23539      0t0  TCP localhost:6636->localhost:6379 (ESTABLISHED)
newsDistr 5456 ztao   12u  IPv4  23838      0t0  TCP localhost:6747->localhost:6379 (ESTABLISHED)
newsDistr 5456 ztao   13u  IPv4  23841      0t0  TCP localhost:6748->localhost:6379 (ESTABLISHED)

2. 列出某个程序所打开的文件信息

lsof -c mysql

备注: -c 选项将会列出所有以mysql开头的程序的文件,

其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了

3. 通过某个进程号显示该进行打开的文件

lsof -p 1972

4.查找谁在使用某个文件

可以查看 在使用某个目录的的程序的相关信息

这里可以看到  smbd(samba服务)在使用 /home/james目录

[root@centos1 src]# lsof /home/james/

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

smbd    1972 root  cwd    DIR  253,2     4096 2093057 /home/james

smbd    1975 root  cwd    DIR  253,2     4096 2093057 /home/james

nmbd    1981 root  cwd    DIR  253,2     4096 2093057 /home/james

smbd    6191 root  cwd    DIR  253,2     4096 2093057 /home/james

5、列出某个用户打开的所有文件

[root@centos1 src]# lsof -u james

二、 IPCS

pcs是一个uinx/linux的命令。用于报告系统的消息队列、信号量、共享内存等

ipcs -a  是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息

ipcs -m  打印出使用共享内存进行进程间通信的信息

ipcs -q   打印出使用消息队列进行进程间通信的信息

ipcs -s  打印出使用信号进行进程间通信的信息

三、ldd查看动态库依赖

[ztteng@ztteng boost]$ ldd threadlinux-gate.so.1 =>  (0x00151000)libboost_thread.so.1.55.0 => /usr/local/lib/libboost_thread.so.1.55.0 (0x009fe000)libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00cd7000)libm.so.6 => /lib/libm.so.6 (0x007d3000)libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00cb1000)libc.so.6 => /lib/libc.so.6 (0x0061d000)libboost_system.so.1.55.0 => /usr/local/lib/libboost_system.so.1.55.0 (0x00b0c000)libpthread.so.0 => /lib/libpthread.so.0 (0x007b6000)librt.so.1 => /lib/librt.so.1 (0x00814000)/lib/ld-linux.so.2 (0x005f7000)

linux常用命令之lsof 、netstat、ipcs、ldd相关推荐

  1. linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件

    Linux系统把软硬件都抽象成文件,所以通过文件可以追踪到很多重要信息,如读取的配置文件.打开的端口等. 下面是常见的用法: 默认测试文件名为text.txt 1,显示打开text.txt的进程: l ...

  2. Linux常用命令(netstat/ps/zgrep)

    Linux常用命令 netstat netstat命令用于显示网络状态 动作说明: r :显示路由表内容 i :显示网络接口及统计信息 g :显示多播组信息 s :按网络协议显示统计信息.默认情况下, ...

  3. Linux常用命令英文全称与中文解释Linux系统

    Linux常用命令英文全称与中文解释Linux系统 man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 意思是密码. su: ...

  4. linux shell编程 ppt,Linux常用命令与Shell基本编程.ppt

    Linux常用命令与Shell基本编程.ppt Shell 脚本基本编程,无线产品部 katanazhang 2009-11-09,课程目标,linux 常用命令 shell 脚本编程 awk 的用法 ...

  5. Linux常用命令和快捷键大全

    Linux常用命令和快捷键大全 最近总结了以下常用的Linux命令和快捷键,用于以后遗忘时方便快速查询,也可以反复观看,加深印象 Linux常用命令 命令 功能说明 线上查询及帮助命令(2个) man ...

  6. Linux 常用命令全称,看看你 get 到了哪些?

    作者丨飘飘雪 https://www.cnblogs.com/wangcp-2014/p/6539035.html 从事IT行业的很多人都会使用Linux常用命令,但是知道这些常用命令全称的人并不多, ...

  7. linux 复制包括子目录_【Linux分享】Linux常用命令+教程分享

    今天分享分为两部分 :)PART01 Linux常用命令分享/PART02 关于BD面试经验分享    30mins  Linux Command:PART 1 你本可以张口就来.....本篇内容分享 ...

  8. linux常用命令_Linux常用命令全称

    从事IT行业的很多人都会使用Linux常用命令,但是知道这些常用命令全称的人并不多,让我们来看看这些常用命令对应的全称吧! 必备Linux命令和C语言基础_C语言_嵌入式开发工程师-创客学院​www. ...

  9. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 转自:https://www. ...

最新文章

  1. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。
  2. CNN边缘检测--Richer Convolutional Features for Edge Detection
  3. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)(转)
  4. [GXOI/GZOI2019]旧词——树链剖分+线段树
  5. 1574: [Usaco2009 Jan]地震损坏Damage
  6. Linux学习总结(32)——Shell脚本高效编写技巧
  7. python循环输入若干学生信息网_python最简学生信息系统,练习while
  8. Tuxedo FAQs 整理
  9. vi编辑器 末尾添加_VI编辑器的使用方法
  10. REST及RESTful原则
  11. 自媒体赚钱网站有哪些(写文章赚钱的网站大全)
  12. 1对1直播源码开源系统,一对一视频聊天系统成品源码
  13. wamp php 如何安装,WAMP的详细安装过程分享
  14. python3 安装 pillow报错
  15. php 读取 eml,php如何读取解析eml文件以及生成网页的示例分享
  16. 3.22续上篇详细版本的参数保存方法(使用用户自定义Application来保存全局参数)
  17. Java项目:人才管理系统(java+SpringBoot+FreeMarker+jpa+Mysql)
  18. Zigbee入网流程
  19. PS抠图:将猫咪图片打造成唯美星空效果图
  20. 最新研究表明人类的智力正在退化

热门文章

  1. spark python 开发环境_Eclipse配置Spark Python开发环境
  2. asp.net 开发疑问?
  3. memcache及其telnet命令使用详解
  4. Linux 计划任务整理
  5. MySIAM与Innodb引擎
  6. centos7 安装oracle jdk 与openjdk 实现切换
  7. 3月了,春天在夏天的后面来到了
  8. 复习PHP-语言参考-类型
  9. 千里之行,始于足下。职场人士必读的寓言
  10. 一维循环数组最大子数组求解