一、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的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 显示使用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:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser ztao 4u IPv6 0t0 TCP *: (LISTEN)
redis-ser ztao 5u IPv4 0t0 TCP *: (LISTEN)
redis-ser ztao 6u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
redis-ser ztao 7u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
redis-ser ztao 8u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
redis-ser ztao 9u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
redis-ser ztao 10u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
redis-ser ztao 11u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsProvi ztao 6u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsProvi ztao 7u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsProvi ztao 8u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsProvi ztao 9u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsDistr ztao 12u IPv4 0t0 TCP localhost:->localhost: (ESTABLISHED)
newsDistr ztao 13u IPv4 0t0 TCP localhost:->localhost: (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 thread
linux-gate.so. => (0x00151000)
libboost_thread.so.1.55. => /usr/local/lib/libboost_thread.so.1.55. (0x009fe000)
libstdc++.so. => /usr/lib/libstdc++.so. (0x00cd7000)
libm.so. => /lib/libm.so. (0x007d3000)
libgcc_s.so. => /lib/libgcc_s.so. (0x00cb1000)
libc.so. => /lib/libc.so. (0x0061d000)
libboost_system.so.1.55. => /usr/local/lib/libboost_system.so.1.55. (0x00b0c000)
libpthread.so. => /lib/libpthread.so. (0x007b6000)
librt.so. => /lib/librt.so. (0x00814000)
/lib/ld-linux.so. (0x005f7000)

linux常用命令之lsof 、netstat、ipcs、ldd的更多相关文章

  1. linux常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

    1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...

  2. linux常用命令--ps、netstat、find

     一.ps 1.1ps命令简介 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那 ...

  3. linux常用命令:lsof 命令

    lsof(list open files) 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 如传输控制 ...

  4. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

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

    Linux常用命令英文全称与中文解释Linux系统(转)   Linux常用命令英文全称与中文解释Linux系统 man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Pri ...

  6. linux常用命令 、查看日志、web排查

    linux常用命令 ps aux|grep xxx (比如 ps aux|grep tomcat ps aux|grep tomcat-portalvip ps aux|grep nginx 等) r ...

  7. 100个命令Linux常用命令大全

    Linux常用命令大全100条: 1,echo "aa" > test.txt 和 echo "bb" >> test.txt//>将原 ...

  8. 【Linux】Linux 常用命令汇总

    查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ...

  9. linux常用命令的全拼

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

随机推荐

  1. Linux Network配置

    /etc/sysconfig/network [root@mytest ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=mytest /e ...

  2. 【Henu ACM Round#20 F】 Arthur and Brackets

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 所给的li,ri是左括号从左到右的顺序给的. (且注意长度是2*n 现在我们先把第一个左括号放在第1个位置. 然后考虑第二个位置. ...

  3. HttpService解析

    HttpServlet容器响应Web客户请求流程如下: 1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个Htt ...

  4. POJ 3263 差分+set判重

    题意: 思路: 对于每一个区间 [a,b] [a+1,b-1]肯定是比a,b低至少1的 因为题目要求最大值 所以就直接差分一下 搞之 (复杂度 O(n)) Discuss里说有重复的数据 用set判一 ...

  5. 洛谷P4051 [JSOI2007]字符加密

    题目描述 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法. 例如‘JSOI07’,可以读作 ...

  6. 【转】Android应用底部导航栏(选项卡)实例

    现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...

  7. js正则学习分享

    http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html http://www.cnblogs.com/tylerdonet/ ...

  8. SP1026 FAVDICE - Favorite Dice 数学期望

    题目描述: 一个n面的骰子,求期望掷几次能使得每一面都被掷到. 题解:先谈一下期望DP. 一般地,如果终止状态固定,我们都会选择逆序计算. 很多题目如果顺序计算会出现有分母为 0 的情况,而逆序计算中 ...

  9. Linux学习总结(6)——CenterOS7安装mysql5.5的方法

    首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...

  10. 可靠的UDP连接 & MTU MSS

    这个网页里面写了: http://blog.csdn.net/plusboy/article/details/1523308 其可靠性必须由上层应用实现.一般都会采用消息重传来实现其可靠性,采用消息重 ...