lsof u mysql wc l_linux常用命令之lsof 、netstat、ipcs、ldd

本文详细介绍了Linux系统中的三个实用工具:lsof用于查看进程打开的文件,包括网络连接;ipcs展示了系统中的进程间通信资源,如消息队列、信号量和共享内存;ldd则用于检查可执行文件的动态库依赖。这些工具对于系统监控、问题排查和性能优化至关重要。
摘要由CSDN通过智能技术生成

一、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:6379COMMAND 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)

newsProvi5349 ztao 6u IPv4 23530 0t0 TCP localhost:6633->localhost:6379(ESTABLISHED)

newsProvi5349 ztao 7u IPv4 23532 0t0 TCP localhost:6634->localhost:6379(ESTABLISHED)

newsProvi5349 ztao 8u IPv4 23536 0t0 TCP localhost:6635->localhost:6379(ESTABLISHED)

newsProvi5349 ztao 9u IPv4 23539 0t0 TCP localhost:6636->localhost:6379(ESTABLISHED)

newsDistr5456 ztao 12u IPv4 23838 0t0 TCP localhost:6747->localhost:6379(ESTABLISHED)

newsDistr5456 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 thread

linux-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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值