Linux lsof 命令簡介
losf 命令可以列出某個程式開啟的所有檔案資訊。開啟的檔案可能是普通的檔案,目錄,NFS檔案,塊檔案,字元檔案,共享庫,常規管道,明明管道,符號連結,Socket流,網路Socket,UNIX域Socket,以及其它更多。
1 列出系統上所有開啟的檔案:
[root@rac1 mysql]# lsof | more
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 43496 17727785 /sbin/init
2 檢視誰在使用指定的檔案
[root@rac1 ~]# lsof /tmp/mysql.sock
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 24319 mysql 16u unix 0xffff8100918a8c00 44743909 /tmp/mysql.sock
3 遞迴檢視指定目錄下所有開啟的檔案
[root@rac1 ~]# lsof +D /opt/mysql/
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 24319 mysql cwd DIR 8,3 4096 19824642 /opt/mysql/data
mysqld 24319 mysql 3u REG 8,3 152 19824646 /opt/mysql/data/mysql-log-bin.index
mysqld 24319 mysql 4uW REG 8,3 4875878400 20283611 /opt/mysql/data/ibdata1
mysqld 24319 mysql 9uW REG 8,3 5242880 20283612 /opt/mysql/data/ib_logfile0
mysqld 24319 mysql 10uW REG 8,3 5242880 20283613 /opt/mysql/data/ib_logfile1
mysqld 24319 mysql 12w REG 8,3 12957 19824652 /opt/mysql/data/slow_query.log
4 檢視指定使用者開啟的所有檔案
[root@rac1 ~]# lsof -u oracle
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nmz 3211 oracle cwd DIR 8,3 4096 10813466 /home/oracle
nmz 3211 oracle rtd DIR 8,3 4096 2 /
nmz 3211 oracle txt REG 8,3 673908 19398913 /opt/rac/oracle/11.2.0/rac/ccr/bin/nmz
nmz 3211 oracle mem REG 8,3 125736 2820762 /lib/ld-2.5.so
nmz 3211 oracle mem REG 8,3 1606808 2818065 /lib/libc-2.5.so
nmz 3211 oracle 3uW REG 8,3 0 19398727 /opt/rac/oracle/11.2.0/rac/ccr/hosts/rac1/log/sched.lock
nmz 3211 oracle 4w REG 8,3 853 19398726 /opt/rac/oracle/11.2.0/rac/ccr/hosts/rac1/log/sched.log
nmz 3211 oracle 5r REG 8,3 16896 20906832 /opt/rac/oracle/11.2.0/rac/ccr/mesg/nmzus.msb
注意:^符號,它執行取反操作 lsof -u ^oracle 表示除oracle 之外的使用者開啟的檔案
5 檢視某個程式開啟的所有檔案
-c選項限定只列出以apache開頭的程式開啟的檔案:
root@rac1 shell]# lsof -c mysql
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 24319 mysql cwd DIR 8,3 4096 19824642 /opt/mysql/data
mysqld 24319 mysql rtd DIR 8,3 4096 2 /
mysqld 24319 mysql txt REG 8,3 45648978 23429121 /usr/sbin/mysqld
mysqld 24319 mysql mem REG 8,3 139416 21201203 /lib64/ld-2.5.so
mysqld 24319 mysql mem REG 8,3 1713160 21201204 /lib64/libc-2.5.so
mysqld 24319 mysql mem REG 8,3 23360 21201206 /lib64/libdl-2.5.so
6 檢視某個使用者與某個程式開啟的檔案
lsof -u username -c 程式名 是或的關係,表示所有由某個使用者或某個程式開啟的檔案
lsof -a -u username -c 程式名 是與的關係
7 檢視所有由某個PID對應的程式開啟的檔案
使用 -p 引數來過濾輸出
[root@rac1 ~]# lsof -p 1
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 43496 17727785 /sbin/init
init 1 root mem REG 8,3 139416 21201203 /lib64/ld-2.5.so
init 1 root mem REG 8,3 1713160 21201204 /lib64/libc-2.5.so
init 1 root mem REG 8,3 23360 21201206 /lib64/libdl-2.5.so
init 1 root mem REG 8,3 95464 21201216 /lib64/libselinux.so.1
init 1 root mem REG 8,3 247528 21201215 /lib64/libsepol.so.1
init 1 root 10u FIFO 0,17 1477 /dev/initctl
8 檢視網路連線
-i 引數列出所有開啟了網路套接字(TCP和UDP)的程式
a 檢視tcp 連線
b 檢視udp 連線
c 找到使用某個埠的程式
# lsof -i :3306
:3306和-i選項組合可以讓lsof列出佔用TCP或UDP的25埠的程式。
d 找到使用某個udp埠號的程式
# lsof -i udp:53
e 可以找到使用某個tcp埠的程式:
# lsof -i tcp:80
f 找到某個使用者的所有網路連線
# lsof -a -u mysql -i
[root@rac1 ~]# lsof -a -u mysql -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 24319 mysql 11u IPv6 48586515 TCP rac1:mysql->rac1:39045 (ESTABLISHED)
mysqld 24319 mysql 14u IPv6 44743908 TCP *:mysql (LISTEN)
9 列出所有NFS(網路檔案系統)檔案
# lsof -N
這個引數很好記,-N就對應NFS。
10 列出所有對應某個組id的程式
# lsof -g 1234
程式組用來來邏輯上對程式進行分組,這個例子查詢所有PGID為1234的程式開啟的檔案。
11 列出所有與某個描述符關聯的檔案
# lsof -d 2 會列出所有以描述符2開啟的檔案。
可以為描述符指定一個範圍:
# lsof -d 0-2 會列出所有描述符為0,1,2的檔案。
-d選項還支援其它很多特殊值,下面的命令列出所有記憶體對映檔案:
# lsof -d mem
txt則列出所有載入在記憶體中並正在執行的程式:
# lsof -d txt
12 輸出使用某些資源的程式pid
# lsof -t -i
-t選項輸出程式的PID,你可以將它和-i選項組合輸出使用某個埠的程式的PID,下面的命令將會殺掉所有使用網路的程式:
# kill -9 `lsof -t -i`
13 迴圈列出檔案
# lsof -r 1
-r選項讓lsof可以迴圈列出檔案直到被中斷,引數1的意思是每秒鐘重複列印一次,這個選項最好同某個範圍比較小的查詢組合使用,比如用來監測網路活動:
# lsof -r 1 -u john -i -a
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2063816/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- lsof命令簡介
- 【系統】lsof命令簡介
- 【系統】lsof 命令簡介
- fuser與lsof命令使用簡介
- lsof簡介
- Linux命令--lsofLinux
- Linux lsof命令解析Linux
- linux每日命令(39):lsof命令Linux
- linux沒有lsof命令Linux
- 每日Linux命令(4):lsofLinux
- linux lsof命令詳解Linux
- Linux-lsof命令詳解Linux
- lsof 命令
- lsof命令
- 每天一個 Linux 命令(51): lsof 命令Linux
- linux tar命令簡介Linux
- linux下檢視埠命令lsofLinux
- Linux技術——lsof命令詳解Linux
- Linux 有用的命令之 - lsof(轉)Linux
- Linux cgroups 命令簡介Linux
- Linux/UNIX命令dd簡介Linux
- lsof命令詳解
- lsof命令小結
- Linux的命令列介面簡介Linux命令列
- Linux lsof命令如何使用?其作用是什麼?Linux
- linux命令下jq的用法簡介Linux
- lsof命令功能說明
- Linux下RPM 命令用法中文簡介Linux
- lsof命令學習筆記筆記
- chown 命令簡介
- nc命令簡介
- Cellcli命令簡介
- fortune 命令簡介
- crontab命令簡介
- Git命令簡介Git
- Linux lsof詳解Linux
- Linux中命令選項及引數簡介Linux
- 【Linux】nfs 服務的exportfs命令的簡介LinuxNFSExport