需求:统计每个进程使用的句柄(文件)数
方法一: 使用awk (可不要求排序)
sudo lsof |
sed '1,2d' | awk '{++map[$1]}END{ for( i in map ){print i,map[i] } }' | sort -rnk 2
(实际为统计第一列的的重复个数)
解释:map可理解为key-value对象
sort的中的-r表示降序,-n表示把要排序的列当作数字看待,不设置的则按字母顺序排
方法二:使用uniq -c (一定要排序)
sudo lsof | sed '1,2d' | awk '{print $1}' | sort -k 1 | uniq -c | sort -rnk 1
ps:后面的sort -rnk [NUM] 是方便看最大值.
lsof后的结果
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 43496 9240630 /sbin/init
init 1 root mem REG 253,0 144776 1802242 /lib64/ld-2.5.so
init 1 root mem REG 253,0 1722232 1802474 /lib64/libc-2.5.so
init 1 root mem REG 253,0 23360 1802489 /lib64/libdl-2.5.so
init 1 root mem REG 253,0 95464 1802503 /lib64/libselinux.so.1
init 1 root mem REG 253,0 247496 1802467 /lib64/libsepol.so.1
init 1 root 10u FIFO 0,17 0t0 1350 /dev/initctl
gration 2 root cwd DIR 253,0 4096 2 /
migtion 2 root rtd DIR 253,0 4096 2 /
migtion 2 root txt unknown /proc/2/exe
ksirqd 3 root cwd DIR 253,0 4096 2 /
ksirqd 3 root rtd DIR 253,0 4096 2 /
ksirqd 3 root txt unknown /proc/3/exe
migrtion 4 root cwd DIR 253,0 4096 2 /
migrtion 4 root rtd DIR 253,0 4096 2 /
migrtion 4 root txt unknown /proc/4/exe
ksofirqd 5 root cwd DIR 253,0 4096 2 /
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 43496 9240630 /sbin/init
init 1 root mem REG 253,0 144776 1802242 /lib64/ld-2.5.so
init 1 root mem REG 253,0 1722232 1802474 /lib64/libc-2.5.so
init 1 root mem REG 253,0 23360 1802489 /lib64/libdl-2.5.so
init 1 root mem REG 253,0 95464 1802503 /lib64/libselinux.so.1
init 1 root mem REG 253,0 247496 1802467 /lib64/libsepol.so.1
init 1 root 10u FIFO 0,17 0t0 1350 /dev/initctl
gration 2 root cwd DIR 253,0 4096 2 /
migtion 2 root rtd DIR 253,0 4096 2 /
migtion 2 root txt unknown /proc/2/exe
ksirqd 3 root cwd DIR 253,0 4096 2 /
ksirqd 3 root rtd DIR 253,0 4096 2 /
ksirqd 3 root txt unknown /proc/3/exe
migrtion 4 root cwd DIR 253,0 4096 2 /
migrtion 4 root rtd DIR 253,0 4096 2 /
migrtion 4 root txt unknown /proc/4/exe
ksofirqd 5 root cwd DIR 253,0 4096 2 /