附录:lsof工具的使用

Linux平台提供了lsof工具可以查看某个进程打开的文件句柄。可以用于跟踪swoole的工作进程所有打开的socket、file、资源。

使用方法

  1. lsof -p [进程ID]

运行结果

  1. lsof -p 26821
  2. lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
  3. Output information may be incomplete.
  4. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  5. php 26821 htf cwd DIR 8,4 4096 5375979 /home/htf/workspace/swoole/examples
  6. php 26821 htf rtd DIR 8,4 4096 2 /
  7. php 26821 htf txt REG 8,4 24192400 6160666 /opt/php/php-5.6/bin/php
  8. php 26821 htf DEL REG 0,5 7204965 /dev/zero
  9. php 26821 htf DEL REG 0,5 7204960 /dev/zero
  10. php 26821 htf DEL REG 0,5 7204958 /dev/zero
  11. php 26821 htf DEL REG 0,5 7204957 /dev/zero
  12. php 26821 htf DEL REG 0,5 7204945 /dev/zero
  13. php 26821 htf mem REG 8,4 761912 6160770 /opt/php/php-5.6/lib/php/extensions/debug-zts-20131226/gd.so
  14. php 26821 htf mem REG 8,4 2769230 2757968 /usr/local/lib/libcrypto.so.1.1
  15. php 26821 htf mem REG 8,4 162632 6322346 /lib/x86_64-linux-gnu/ld-2.23.so
  16. php 26821 htf DEL REG 0,5 7204959 /dev/zero
  17. php 26821 htf 0u CHR 136,20 0t0 23 /dev/pts/20
  18. php 26821 htf 1u CHR 136,20 0t0 23 /dev/pts/20
  19. php 26821 htf 2u CHR 136,20 0t0 23 /dev/pts/20
  20. php 26821 htf 3r CHR 1,9 0t0 11 /dev/urandom
  21. php 26821 htf 4u IPv4 7204948 0t0 TCP *:9501 (LISTEN)
  22. php 26821 htf 5u IPv4 7204949 0t0 UDP *:9502
  23. php 26821 htf 6u IPv6 7204950 0t0 TCP *:9503 (LISTEN)
  24. php 26821 htf 7u IPv6 7204951 0t0 UDP *:9504
  25. php 26821 htf 8u IPv4 7204952 0t0 TCP localhost:8000 (LISTEN)
  26. php 26821 htf 9u unix 0x0000000000000000 0t0 7204953 type=DGRAM
  27. php 26821 htf 10u unix 0x0000000000000000 0t0 7204954 type=DGRAM
  28. php 26821 htf 11u unix 0x0000000000000000 0t0 7204955 type=DGRAM
  29. php 26821 htf 12u unix 0x0000000000000000 0t0 7204956 type=DGRAM
  30. php 26821 htf 13u a_inode 0,11 0 9043 [eventfd]
  31. php 26821 htf 14u unix 0x0000000000000000 0t0 7204961 type=DGRAM
  32. php 26821 htf 15u unix 0x0000000000000000 0t0 7204962 type=DGRAM
  33. php 26821 htf 16u unix 0x0000000000000000 0t0 7204963 type=DGRAM
  34. php 26821 htf 17u unix 0x0000000000000000 0t0 7204964 type=DGRAM
  35. php 26821 htf 18u a_inode 0,11 0 9043 [eventpoll]
  36. php 26821 htf 19u a_inode 0,11 0 9043 [signalfd]
  37. php 26821 htf 20u a_inode 0,11 0 9043 [eventpoll]
  38. php 26821 htf 22u IPv4 7452776 0t0 TCP localhost:9501->localhost:59056 (ESTABLISHED)
  • so文件是进程加载的动态连接库
  • IPv4/IPv6 TCP (LISTEN) 是服务器监听的端口
  • UDP 是服务器监听的UDP端口
  • unix type=DGRAM 时是进程创建的UnixSocket管道
  • IPv4 (ESTABLISHED) 表示连接到服务器的TCP客户端,包含了客户端的IP和PORT,以及状态(ESTABLISHED)
  • 9u / 10u 表示该文件句柄的fd值(文件描述符)
  • 其他更多信息可以参考lsof的手册