Linux系统lsof命令怎么用(linux,lsof,开发技术)

时间:2024-05-05 07:18:10 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

lsof是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

Linux系统lsof命令怎么用

lsof输出格式为:

COMMANDPIDUSERFDTYPEDEVICESIZENODENAME[root@uyhd000225~]#lsof|tail-5mysqld30275mysql146uREG3,13852841543089/var/lib/mysql/mysqldb/fiss_indx_info.MYDmysqld30275mysql156uREG3,1359842752534/var/lib/mysql/mysqldb/inf_res_cons_price_idx_m.MYDmysqld30275mysql157uREG3,102752535/var/lib/mysql/mysqldb/inf_res_cons_price_idx_y.MYDmysqld30275mysql158uREG3,142404042752536/var/lib/mysql/mysqldb/insure_baseinfo.MYDmysqld30275mysql159uREG3,102752538/var/lib/mysql/mysqldb/insure_fee.MYD[root@uyhd000225~]#

常见包括如下几个字段:更多的可见manual。 1、COMMAND 默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名 2、PID:进程的ID号 3、PPID 父进程的IP号,默认不显示,当使用-R参数可打开。 4、PGID 进程组的ID编号,默认也不会显示,当使用-g参数时可打开。 5、USER 命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。 6、FD 是文件的File Descriptor number,或者如下的内容: (这里很难翻译对应的意思,保留英文)

引用

cwdcurrentworkingdirectory;Lnnlibraryreferences(AIX);jldjaildirectory(FreeBSD);ltxsharedlibrarytext(codeanddata);Mxxhexmemory-mappedtypenumberxx.m86DOSMergemappedfile;memmemory-mappedfile;mmapmemory-mappeddevice;pdparentdirectory;rtdrootdirectory;trkerneltracefile(OpenBSD);txtprogramtext(codeanddata);v86VP/ixmappedfile;

文件的File Descriptor number显示模式有:

引用

rforreadaccess;wforwriteaccess;uforreadandwriteaccess;NforaSolarisNFSlockofunknowntyperforreadlockonpartofthefile;Rforareadlockontheentirefile;wforawritelockonpartofthefile;Wforawritelockontheentirefile;uforareadandwritelockofanylength;Uforalockofunknowntype;xforanSCOOpenServerXenixlockonpartofthefile;XforanSCOOpenServerXenixlockontheentirefile;spaceifthereisnolock.

7、TYPE 引用 IPv4 IPv4的包; IPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址; DIR 目录 LINK 链接文件 详情请看manual中更多的注释。

8、DEVICE 使用character special、block special表示的设备号

9、SIZE 文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。

10、NODE 本地文件的node码,或者协议,如TCP等

11、NAME 挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等

常用示例: 1.显示开启文件/home/oracle/10.2.0/db_1/bin/tnslsnr的进程

[root@svr-db-test~]#lsof/home/oracle/10.2.0/db_1/bin/tnslsnrCOMMANDPIDUSERFDTYPEDEVICESIZENODENAMEtnslsnr3520oracletxtREG253,543106211408866/home/oracle/10.2.0/db_1/bin/tnslsnr

2.知道22端口现在运行什么程序

[root@svr-db-test~]#lsof-i:22COMMANDPIDUSERFDTYPEDEVICESIZENODENAMEsshd3101root3uIPv68670TCP*:ssh(LISTEN)sshd4545root3uIPv64237972TCP203.aibo.com:ssh->win-avbmq9e8ka7.gdgg.local:nsjtp-ctrl(ESTABLISHED)

3.显示init进程现在打开的文件

[root@svr-db-test~]#lsof-cinitCOMMANDPIDUSERFDTYPEDEVICESIZENODENAMEinit1rootcwdDIR253,040962/init1rootrtdDIR253,040962/init1roottxtREG253,043496524446/sbin/initinit1rootmemREG253,0130448917826/lib64/ld-2.5.soinit1rootmemREG253,01678480917827/lib64/libc-2.5.soinit1rootmemREG253,023520917686/lib64/libdl-2.5.soinit1rootmemREG253,0247528917844/lib64/libsepol.so.1init1rootmemREG253,095480917845/lib64/libselinux.so.1init1root10uFIFO0,162311/dev/initctl
  1. 看进程号为1的进程打开了哪些文件

[root@svr-db-test~]#lsof-p1COMMANDPIDUSERFDTYPEDEVICESIZENODENAMEinit1rootcwdDIR253,040962/init1rootrtdDIR253,040962/init1roottxtREG253,043496524446/sbin/initinit1rootmemREG253,0130448917826/lib64/ld-2.5.soinit1rootmemREG253,01678480917827/lib64/libc-2.5.soinit1rootmemREG253,023520917686/lib64/libdl-2.5.soinit1rootmemREG253,0247528917844/lib64/libsepol.so.1init1rootmemREG253,095480917845/lib64/libselinux.so.1init1root10uFIFO0,162311/dev/initctl
  1. 显示归属3520的进程情况

[root@svr-db-test~]#lsof-g3520COMMANDPIDPGIDUSERFDTYPEDEVICESIZENODENAMEtnslsnr35203520oraclecwdDIR253,5409611059201/home/oracletnslsnr35203520oraclertdDIR253,040962/tnslsnr35203520oracletxtREG253,543106211408866/home/oracle/10.2.0/db_1/bin/tnslsnrtnslsnr35203520oraclememREG253,0130448917826/lib64/ld-2.5.sotnslsnr35203520oraclememREG253,01678480917827/lib64/libc-2.5.sotnslsnr35203520oraclememREG253,023520917686/lib64/libdl-2.5.sotnslsnr35203520oraclememREG253,0615136917834/lib64/libm-2.5.sotnslsnr35203520oraclememREG253,0141208917829/lib64/libpthread-2.5.sotnslsnr35203520oraclememREG253,0109824917839/lib64/libnsl-2.5.sotnslsnr35203520oraclememREG253,52070662211405436/home/oracle/10.2.0/db_1/lib/libclntsh.so.10.1tnslsnr35203520oraclememREG253,5380309711410641/home/oracle/10.2.0/db_1/lib/libnnz10.sotnslsnr35203520oraclememREG253,58349311407251/home/oracle/10.2.0/db_1/lib/libons.sotnslsnr35203520oraclememREG253,053880917532/lib64/libnss_files-2.5.sotnslsnr35203520oraclememREG253,5854511407615/home/oracle/10.2.0/db_1/lib/libskgxn2.so...

6.依照文件夹/home/oracle来搜寻,但不会打开子目录,用来显示目录下被进程开启的文件

[root@svr-db-test~]#lsof+d/home/oracleCOMMANDPIDUSERFDTYPEDEVICESIZENODENAMEtnslsnr3520oraclecwdDIR253,5409611059201/home/oracle
  1. 打开/home/oracle文件夹以及其子目录搜寻,用来显示目录下被进程开启的文件

[root@svr-db-test~]#lsof+D/home/oracle

显示内容太多了,不显示了

  1. lsof -i 用以显示符合条件的进程情况 语法: lsof -i[46] protocol[:service|port] 46 –> IPv4 or IPv6 protocol –> TCP or UDP hostname –> Internet host name hostaddr –> IPv4位置 service –> /etc/service中的 service name (可以不只一个) port –> 端口号 (可以不只一个) 例:

[root@svr-db-test~]#lsof-itcp@192.168.2.245:1521-nCOMMANDPIDUSERFDTYPEDEVICESIZENODENAMEoracle15633oracle16uIPv44069605TCP192.168.2.203:31580->192.168.2.245:ncube-lm(ESTABLISHED)或[root@svr-db-test~]#lsof-itcp@192.168.2.245:1521COMMANDPIDUSERFDTYPEDEVICESIZENODENAMEoracle15633oracle16uIPv44069605TCP203.aibo.com:31580->192.168.2.245:ncube-lm(ESTABLISHED)

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

  1. 显示某用户的已经打开的文件(或该用户执行程序已经打开的文件)

[root@svr-db-test~]#lsof-uoracle或[root@svr-db-test~]#lsof-u0
  1. 仅打印进程,方便shell脚本调用

[root@svr-db-test~]#lsof-tcsshd31014545

关注: 进程调试命令:truss、strace和ltrace

进程无法启动,软件运行速度突然变慢,程序的”SegmentFault”等等都是让每个Unix系统用户头痛的问题,而这些问题都可以通过使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的”疑难杂症”。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Linux系统lsof命令怎么用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Linux系统如何启动、停止、重启MySQL下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18