linux下的一個診斷分析工具lsof(轉)
linux下的一個診斷分析工具lsof(轉)[@more@]lsof能顯示出由系統里正在執行的程式所開啟的檔案,也能顯示出每一個程式的通訊socket.
下面,lsof的用法總結:
1、檢視檔案系統阻塞
lsof 目錄名 可以檢視還有哪些程式在使用這個目錄,例:
當一個使用者以oracle的身份telnet到伺服器,那麼用lsof /home/oracle 就可以看到它的程式號.
[root@vm4 ~]# lsof /home/oracle
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tnslsnr 2709 oracle cwd DIR 8,3 4096 1087047 /home/oracle
bash 3827 oracle cwd DIR 8,3 4096 1087047 /home/oracle
2、搜尋開啟的網路連線
搜尋某個ip開啟的所有網路連線:
我從一個windows客戶端用sqlplus連線伺服器,在伺服器上可以看到:
[root@vm4 ~]# lsof -i@192.168.5.168
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3354 root 3u IPv6 9276 TCP 192.168.2.134:ssh->192.168.5.168:2030 (ESTABLISHED)
sshd 3356 oracle 3u IPv6 9276 TCP 192.168.2.134:ssh->192.168.5.168:2030 (ESTABLISHED)
oracle 3860 oracle 13u IPv4 12962 TCP 192.168.2.134:1521->192.168.5.168:2372 (ESTABLISHED)
其中前2個是telnet的連結,第3個是sqlplus的連結,埠是2372
3、尋找本地斷開的開啟檔案
lsof +L1
4、搜尋被程式開啟的所有檔案及開啟的檔案相關聯程式
我在windows的機器上sqlplus連線一個linux上面的oracle10g,在linux上面會有一個process作為我的連結的server process.
ps看一下:
[root@vm4 ~]# ps -ef | grep oracle
oracle 2709 1 0 20:17 ? 00:00:00 /u01/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
root 3354 2218 0 20:33 ? 00:00:00 sshd: oracle [priv]
oracle 3356 3354 0 20:34 ? 00:00:00 sshd: oracle@pts/1
oracle 3357 3356 0 20:34 pts/1 00:00:00 -bash
oracle 3390 1 0 20:35 ? 00:00:00 ora_pmon_rawdb
oracle 3392 1 0 20:35 ? 00:00:00 ora_psp0_rawdb
oracle 3394 1 0 20:35 ? 00:00:00 ora_mman_rawdb
oracle 3396 1 0 20:35 ? 00:00:00 ora_dbw0_rawdb
oracle 3398 1 0 20:35 ? 00:00:00 ora_lgwr_rawdb
oracle 3400 1 0 20:35 ? 00:00:00 ora_ckpt_rawdb
oracle 3402 1 0 20:35 ? 00:00:00 ora_smon_rawdb
oracle 3404 1 0 20:35 ? 00:00:00 ora_reco_rawdb
oracle 3406 1 0 20:35 ? 00:00:00 ora_cjq0_rawdb
oracle 3408 1 0 20:35 ? 00:00:01 ora_mmon_rawdb
oracle 3410 1 0 20:35 ? 00:00:00 ora_mmnl_rawdb
oracle 3414 1 0 20:35 ? 00:00:00 ora_qmnc_rawdb
oracle 3420 1 0 20:35 ? 00:00:00 ora_q000_rawdb
oracle 3422 1 0 20:35 ? 00:00:00 ora_q001_rawdb
oracle 3464 1 1 20:38 ? 00:00:00 oraclerawdb (LOCAL=NO)
root 3499 3466 0 20:39 pts/1 00:00:00 grep oracle
3464就是那個為我的客戶端服務的server process的程式號.用lsof來看看他使用的檔案和通訊埠.
lsof -p 3464
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
oracle 3464 oracle cwd DIR 8,3 4096 1184867 /u01/oracle/product/10.2.0/db_1/dbs
oracle 3464 oracle rtd DIR 8,3 4096 2 /
oracle 3464 oracle txt REG 8,3 86175221 551701 /u01/oracle/product/10.2.0/db_1/bin/oracle
oracle 3464 oracle mem REG 8,3 106441 391214 /lib/ld-2.3.4.so
oracle 3464 oracle mem REG 8,3 1451681 391215 /lib/tls/libc-2.3.4.so
oracle 3464 oracle mem REG 8,3 15340 391217 /lib/libdl-2.3.4.so
oracle 3464 oracle mem REG 8,3 178307 391216 /lib/tls/libm-2.3.4.so
oracle 3464 oracle mem REG 8,3 93993 391218 /lib/tls/libpthread-2.3.4.so
oracle 3464 oracle mem REG 8,3 95192 391226 /lib/libnsl-2.3.4.so
oracle 3464 oracle DEL REG 0,6 163841 /SYSV9a02403c
oracle 3464 oracle mem CHR 1,5 1608 /dev/zero
oracle 3464 oracle mem REG 8,3 45816 389426 /lib/libnss_files-2.3.4.so
oracle 3464 oracle mem REG 8,3 2628 696392 /usr/lib/libaio.so.1.0.1
oracle 3464 oracle mem REG 8,3 5480533 1188614 /u01/oracle/product/10.2.0/db_1/lib/libnnz10.so
oracle 3464 oracle mem REG 8,3 98079 1187068 /u01/oracle/product/10.2.0/db_1/lib/libdbcfg10.so
oracle 3464 oracle mem REG 8,3 70077 1188456 /u01/oracle/product/10.2.0/db_1/lib/libclsra10.so
oracle 3464 oracle mem REG 8,3 9017903 1185770 /u01/oracle/product/10.2.0/db_1/lib/libjox10.so
oracle 3464 oracle mem REG 8,3 728411 1188452 /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so
oracle 3464 oracle mem REG 8,3 1211519 1188451 /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so
oracle 3464 oracle mem REG 8,3 854560 1188450 /u01/oracle/product/10.2.0/db_1/lib/libocr10.so
oracle 3464 oracle mem REG 8,3 8069 1187147 /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so
oracle 3464 oracle mem REG 8,3 2365801 1188455 /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so
oracle 3464 oracle mem REG 8,3 143485 113871 /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so
oracle 3464 oracle 0u CHR 1,3 1607 /dev/null
oracle 3464 oracle 1u CHR 1,3 1607 /dev/null
oracle 3464 oracle 2u CHR 1,3 1607 /dev/null
oracle 3464 oracle 3r REG 0,1 955 34 /init
oracle 3464 oracle 4r CHR 1,3 1607 /dev/null
oracle 3464 oracle 5r CHR 1,3 1607 /dev/null
oracle 3464 oracle 6r CHR 1,3 1607 /dev/null
oracle 3464 oracle 7r CHR 1,3 1607 /dev/null
oracle 3464 oracle 8r CHR 1,5 1608 /dev/zero
oracle 3464 oracle 9r REG 8,3 834560 568806 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
oracle 3464 oracle 10u CHR 162,10 5795 /dev/raw/raw10
oracle 3464 oracle 11u CHR 162,6 5682 /dev/raw/raw6
oracle 3464 oracle 12r REG 8,3 584704 568815 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/orazhs.msb
oracle 3464 oracle 13u IPv4 9944 TCP 192.168.2.134:1521->192.168.5.168:2057 (ESTABLISHED)
oracle 3464 oracle 14r REG 8,3 834560 568806 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
其中:
oracle 3464 oracle 13u IPv4 9944 TCP 192.168.2.134:1521->192.168.5.168:2057 (ESTABLISHED)
說明了這個server process 這在用tcpip連結我機器的2057埠.
其它資訊表明了他所使用的檔案.
5、 其它使用命令
-c c 顯示出以字母 c開頭程式現在開啟的檔案
例:顯示以init程式現在開啟的檔案
[root@vm4 ~]# lsof -c init
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 32684 324537 /sbin/init
init 1 root mem REG 8,3 106441 391214 /lib/ld-2.3.4.so
init 1 root mem REG 8,3 1451681 391215 /lib/tls/libc-2.3.4.so
init 1 root mem REG 8,3 53736 389497 /lib/libsepol.so.1
init 1 root mem REG 8,3 56320 391229 /lib/libselinux.so.1
init 1 root 3r REG 0,1 955 34 /init
init 1 root 10u FIFO 0,13 1094 /dev/initctl
下面,lsof的用法總結:
1、檢視檔案系統阻塞
lsof 目錄名 可以檢視還有哪些程式在使用這個目錄,例:
當一個使用者以oracle的身份telnet到伺服器,那麼用lsof /home/oracle 就可以看到它的程式號.
[root@vm4 ~]# lsof /home/oracle
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tnslsnr 2709 oracle cwd DIR 8,3 4096 1087047 /home/oracle
bash 3827 oracle cwd DIR 8,3 4096 1087047 /home/oracle
2、搜尋開啟的網路連線
搜尋某個ip開啟的所有網路連線:
我從一個windows客戶端用sqlplus連線伺服器,在伺服器上可以看到:
[root@vm4 ~]# lsof -i@192.168.5.168
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3354 root 3u IPv6 9276 TCP 192.168.2.134:ssh->192.168.5.168:2030 (ESTABLISHED)
sshd 3356 oracle 3u IPv6 9276 TCP 192.168.2.134:ssh->192.168.5.168:2030 (ESTABLISHED)
oracle 3860 oracle 13u IPv4 12962 TCP 192.168.2.134:1521->192.168.5.168:2372 (ESTABLISHED)
其中前2個是telnet的連結,第3個是sqlplus的連結,埠是2372
3、尋找本地斷開的開啟檔案
lsof +L1
4、搜尋被程式開啟的所有檔案及開啟的檔案相關聯程式
我在windows的機器上sqlplus連線一個linux上面的oracle10g,在linux上面會有一個process作為我的連結的server process.
ps看一下:
[root@vm4 ~]# ps -ef | grep oracle
oracle 2709 1 0 20:17 ? 00:00:00 /u01/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
root 3354 2218 0 20:33 ? 00:00:00 sshd: oracle [priv]
oracle 3356 3354 0 20:34 ? 00:00:00 sshd: oracle@pts/1
oracle 3357 3356 0 20:34 pts/1 00:00:00 -bash
oracle 3390 1 0 20:35 ? 00:00:00 ora_pmon_rawdb
oracle 3392 1 0 20:35 ? 00:00:00 ora_psp0_rawdb
oracle 3394 1 0 20:35 ? 00:00:00 ora_mman_rawdb
oracle 3396 1 0 20:35 ? 00:00:00 ora_dbw0_rawdb
oracle 3398 1 0 20:35 ? 00:00:00 ora_lgwr_rawdb
oracle 3400 1 0 20:35 ? 00:00:00 ora_ckpt_rawdb
oracle 3402 1 0 20:35 ? 00:00:00 ora_smon_rawdb
oracle 3404 1 0 20:35 ? 00:00:00 ora_reco_rawdb
oracle 3406 1 0 20:35 ? 00:00:00 ora_cjq0_rawdb
oracle 3408 1 0 20:35 ? 00:00:01 ora_mmon_rawdb
oracle 3410 1 0 20:35 ? 00:00:00 ora_mmnl_rawdb
oracle 3414 1 0 20:35 ? 00:00:00 ora_qmnc_rawdb
oracle 3420 1 0 20:35 ? 00:00:00 ora_q000_rawdb
oracle 3422 1 0 20:35 ? 00:00:00 ora_q001_rawdb
oracle 3464 1 1 20:38 ? 00:00:00 oraclerawdb (LOCAL=NO)
root 3499 3466 0 20:39 pts/1 00:00:00 grep oracle
3464就是那個為我的客戶端服務的server process的程式號.用lsof來看看他使用的檔案和通訊埠.
lsof -p 3464
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
oracle 3464 oracle cwd DIR 8,3 4096 1184867 /u01/oracle/product/10.2.0/db_1/dbs
oracle 3464 oracle rtd DIR 8,3 4096 2 /
oracle 3464 oracle txt REG 8,3 86175221 551701 /u01/oracle/product/10.2.0/db_1/bin/oracle
oracle 3464 oracle mem REG 8,3 106441 391214 /lib/ld-2.3.4.so
oracle 3464 oracle mem REG 8,3 1451681 391215 /lib/tls/libc-2.3.4.so
oracle 3464 oracle mem REG 8,3 15340 391217 /lib/libdl-2.3.4.so
oracle 3464 oracle mem REG 8,3 178307 391216 /lib/tls/libm-2.3.4.so
oracle 3464 oracle mem REG 8,3 93993 391218 /lib/tls/libpthread-2.3.4.so
oracle 3464 oracle mem REG 8,3 95192 391226 /lib/libnsl-2.3.4.so
oracle 3464 oracle DEL REG 0,6 163841 /SYSV9a02403c
oracle 3464 oracle mem CHR 1,5 1608 /dev/zero
oracle 3464 oracle mem REG 8,3 45816 389426 /lib/libnss_files-2.3.4.so
oracle 3464 oracle mem REG 8,3 2628 696392 /usr/lib/libaio.so.1.0.1
oracle 3464 oracle mem REG 8,3 5480533 1188614 /u01/oracle/product/10.2.0/db_1/lib/libnnz10.so
oracle 3464 oracle mem REG 8,3 98079 1187068 /u01/oracle/product/10.2.0/db_1/lib/libdbcfg10.so
oracle 3464 oracle mem REG 8,3 70077 1188456 /u01/oracle/product/10.2.0/db_1/lib/libclsra10.so
oracle 3464 oracle mem REG 8,3 9017903 1185770 /u01/oracle/product/10.2.0/db_1/lib/libjox10.so
oracle 3464 oracle mem REG 8,3 728411 1188452 /u01/oracle/product/10.2.0/db_1/lib/libocrutl10.so
oracle 3464 oracle mem REG 8,3 1211519 1188451 /u01/oracle/product/10.2.0/db_1/lib/libocrb10.so
oracle 3464 oracle mem REG 8,3 854560 1188450 /u01/oracle/product/10.2.0/db_1/lib/libocr10.so
oracle 3464 oracle mem REG 8,3 8069 1187147 /u01/oracle/product/10.2.0/db_1/lib/libskgxn2.so
oracle 3464 oracle mem REG 8,3 2365801 1188455 /u01/oracle/product/10.2.0/db_1/lib/libhasgen10.so
oracle 3464 oracle mem REG 8,3 143485 113871 /u01/oracle/product/10.2.0/db_1/lib/libskgxp10.so
oracle 3464 oracle 0u CHR 1,3 1607 /dev/null
oracle 3464 oracle 1u CHR 1,3 1607 /dev/null
oracle 3464 oracle 2u CHR 1,3 1607 /dev/null
oracle 3464 oracle 3r REG 0,1 955 34 /init
oracle 3464 oracle 4r CHR 1,3 1607 /dev/null
oracle 3464 oracle 5r CHR 1,3 1607 /dev/null
oracle 3464 oracle 6r CHR 1,3 1607 /dev/null
oracle 3464 oracle 7r CHR 1,3 1607 /dev/null
oracle 3464 oracle 8r CHR 1,5 1608 /dev/zero
oracle 3464 oracle 9r REG 8,3 834560 568806 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
oracle 3464 oracle 10u CHR 162,10 5795 /dev/raw/raw10
oracle 3464 oracle 11u CHR 162,6 5682 /dev/raw/raw6
oracle 3464 oracle 12r REG 8,3 584704 568815 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/orazhs.msb
oracle 3464 oracle 13u IPv4 9944 TCP 192.168.2.134:1521->192.168.5.168:2057 (ESTABLISHED)
oracle 3464 oracle 14r REG 8,3 834560 568806 /u01/oracle/product/10.2.0/db_1/rdbms/mesg/oraus.msb
其中:
oracle 3464 oracle 13u IPv4 9944 TCP 192.168.2.134:1521->192.168.5.168:2057 (ESTABLISHED)
說明了這個server process 這在用tcpip連結我機器的2057埠.
其它資訊表明了他所使用的檔案.
5、 其它使用命令
-c c 顯示出以字母 c開頭程式現在開啟的檔案
例:顯示以init程式現在開啟的檔案
[root@vm4 ~]# lsof -c init
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 32684 324537 /sbin/init
init 1 root mem REG 8,3 106441 391214 /lib/ld-2.3.4.so
init 1 root mem REG 8,3 1451681 391215 /lib/tls/libc-2.3.4.so
init 1 root mem REG 8,3 53736 389497 /lib/libsepol.so.1
init 1 root mem REG 8,3 56320 391229 /lib/libselinux.so.1
init 1 root 3r REG 0,1 955 34 /init
init 1 root 10u FIFO 0,13 1094 /dev/initctl
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960342/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉一個白老大的文章--- 一個診斷的思路
- 【轉】oracle診斷工具-RDA使用Oracle
- oracle診斷工具-RDA使用(轉)Oracle
- 分析一個linux下的蠕蟲 (轉)Linux
- 無工具情況下Oracle應急診斷思路(一)Oracle
- RDBMS提供了多種的診斷工具(轉)
- 一張圖記住常用Linux系統效能診斷工具Linux
- linux分析、診斷及調優的必備“殺器”之一Linux
- 容器內的Linux診斷工具0x.toolsLinux
- 動手實現一個適用於.NET Core 的診斷工具
- oracle 效能診斷工具Oracle
- ODX 診斷資料庫轉換工具 — DDC資料庫
- 網路診斷工具的使用
- 9. Oracle常用分析診斷工具——9.2. ASHOracle
- 9. Oracle常用分析診斷工具——9.1. AWROracle
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- 分析:全面診斷FACEBOOK
- 收集Oracle RAC跟蹤診斷資訊的幾個工具Oracle
- Linux 有用的命令之 - lsof(轉)Linux
- oracle診斷工具-RDA使用Oracle
- 故障診斷學習工具
- oracle sqlt(sqltxplain) 診斷工具OracleSQLAI
- Oracle診斷工具RDA使用Oracle
- 9. Oracle常用分析診斷工具——9.3.ADDMOracle
- 每天一個 Linux 命令(51): lsof 命令Linux
- 防火牆NAT轉換的一次診斷防火牆
- 【工具】lsof 的使用
- awr診斷分析之二
- 一次DG故障診斷過程分析
- 無工具情況下Oracle應急診斷思路(二)Oracle
- linux分析、診斷及調優必備的“殺器”之二Linux
- Win2k”秘密武器”診斷工具幾個問題解釋(轉)
- 如何選擇java診斷工具Java
- .NET Core 服務診斷工具
- GreysJava線上問題診斷工具Java
- DB2故障診斷工具DB2
- 選擇正確的 WebSphere 診斷工具Web
- 一個Linux病毒的原型分析(轉)Linux原型