踩坑教训

[踩坑] 记录一次代码追踪流程 lsof

By karp 1344 Views 5 MIN READ 0 Comments

今天遇到的场景很常见, 所以收藏一下.

场景是这样的, 我们维护了一个 redis 数据, 用户反馈数据错误 , 我们观察的确存在问题. 需要去读代码. 但是 代码非常久远了.
找了很多地方 并没有进行更新操作. 所以采用如下方案找到代码.

1. redis monitor

# redis-cli -h 127.0.0.1  monitor |grep -i redis:test:hash |grep  SET > test.log

2. 去重检索 IP:端口

$ cat test.log  |grep SET  |awk  '{print $3 }' |awk -F "\]" '{print $1}' |awk -F ':' '{print $1 " "$2}' |sort -rn |uniq  


10.0.0.1 31945
10.0.0.1 31813
10.0.0.1 31801
10.0.0.1 31757
10.0.0.1 31723
10.0.0.1 31703
10.0.0.1 31669
10.0.0.1 31647
10.0.0.1 31623
10.0.0.1 31611
10.0.0.1 31609
10.0.0.1 31607
10.0.0.1 31605
10.0.0.1 31587
10.0.0.1 31551
10.0.0.1 31549
10.0.0.1 31535
10.0.0.1 31533
10.0.0.1 31521
10.0.0.2 38693

montor 中输出的 客户端ip 及 客户端连接时使用端口.

3.通过客户端连接和端口找到具体的进程.

从上面的日志能看出 10.0.0.2 这台机器只有一个单端口 访问. 查看服务器IP 是其他服务的机器.

$ sudo lsof -i :38693

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
php     10963 root   71u  IPv4 84827196      0t0  TCP test-service-1.internal:38693->172.0.0.1:6379 (ESTABLISHED)

上面已经给到了进程名称 和 进程ID

$ ps -ef |grep -i 10963

root     10963 10939  0 Apr28 ?        00:01:09 test-swoole-worker-18
root     14254 14111  0 09:43 pts/1    00:00:00 grep --color=auto -i 10963

本文由 karp 原创

采用 CC BY-NC-SA 4.0 协议进行许可

转载请注明出处:https://www.ikarp.top/index.php/archives/673.html

标签: lsof

相关推荐

  • 暂无相关推荐,看看别的吧。

0 评论