-
查看文件描述符是否关闭,持续增加
1.1.ls /proc/pid/fd/ -l
查看文件描述是否增加
1.2.lsof -p pid
查看文件描述符FD是否增加lsof: WARNING: can't stat() fuse file system /root/.cache/doc Output information may be incomplete. lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /root/.cache/gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME a.out 127505 jony cwd DIR 0,60 4096 4 /mnt/hgfs/ubuntu20/test_code a.out 127505 jony rtd DIR 8,5 4096 2 / a.out 127505 jony txt REG 0,60 16792 9 /mnt/hgfs/ubuntu20/test_code/a.out a.out 127505 jony mem REG 8,5 2029224 1841671 /usr/lib/x86_64-linux-gnu/libc-2.31.so a.out 127505 jony mem REG 8,5 191472 1841455 /usr/lib/x86_64-linux-gnu/ld-2.31.so a.out 127505 jony 0u CHR 136,1 0t0 4 /dev/pts/1 a.out 127505 jony 1u CHR 136,1 0t0 4 /dev/pts/1 a.out 127505 jony 2u CHR 136,1 0t0 4 /dev/pts/1 a.out 127505 jony 3w REG 0,60 0 10 /mnt/hgfs/ubuntu20/test_code/0.txt a.out 127505 jony 4w REG 0,60 0 11 /mnt/hgfs/ubuntu20/test_code/1.txt a.out 127505 jony 5w REG 0,60 0 12 /mnt/hgfs/ubuntu20/test_code/2.txt a.out 127505 jony 6w REG 0,60 0 13 /mnt/hgfs/ubuntu20/test_code/3.txt a.out 127505 jony 7w REG 0,60 0 14 /mnt/hgfs/ubuntu20/test_code/4.txt a.out 127505 jony 8w REG 0,60 0 15 /mnt/hgfs/ubuntu20/test_code/5.txt a.out 127505 jony 9w REG 0,60 0 16 /mnt/hgfs/ubuntu20/test_code/6.txt a.out 127505 jony 10w REG 0,60 0 17 /mnt/hgfs/ubuntu20/test_code/7.txt a.out 127505 jony 11w REG 0,60 0 18 /mnt/hgfs/ubuntu20/test_code/8.txt a.out 127505 jony 12w REG 0,60 0 19 /mnt/hgfs/ubuntu20/test_code/9.txt
-
查看进程停在什么位置
// 观察程序栈状态
$ sudo cat /proc/28593/stack
[sudo] password for jony:
[<0>] do_wait+0x1cd/0x230
[<0>] kernel_waitid+0x13a/0x1d0
[<0>] __do_sys_waitid+0x109/0x130
[<0>] __x64_sys_waitid+0x25/0x30
[<0>] do_syscall_64+0x38/0x90
[<0>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
// 查看进程停留位置
$ sudo cat /proc/28593/wchan
do_wait
t$ ps -p 28593-o pid,wchan,cmd
PID WCHAN CMD
28593 do_wai ./a.out
从上述可以发现, 程序停在 do_wait
处,/proc/28593/stack
相比于 /proc/28593/wchan
信息更详细。