-
查看进程打开了哪些文件
sudo lsof -p PID
如果是分析一个你不太了解的进程,这个命令比较有用。
可以使用 lsof -p PID | grep TCP 查看进程中的 TCP 连接信息。
-
查看文件被哪个进程使用
使用这个命令查看一个文件被哪些进程正在使用 sudo lsof /path/to/file,示例如下:
> sudo lsof /home/tu/.virtualenvs/mic/bin/uwsgi
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
uwsgi 2071 tu txt REG 253,17 1270899 13240576 /home/tu/.virtualenvs/mic/bin/uwsgi
uwsgi 13286 tu txt REG 253,17 1270899 13240576 /home/tu/.virtualenvs/mic/bin/uwsgi
uwsgi 13287 tu txt REG 253,17 1270899 13240576 /home/tu/.virtualenvs/mic/bin/uwsgi
uwsgi 13288 tu txt REG 253,17 1270899 13240576 /home/tu/.virtualenvs/mic/bin/uwsgi
-
查看进程当前状态
当我们发现一个进程启动了,端口也是正常的,但好像这个进程就是不“干活”。比如我们执行的是数据更新进程,这个进程不更新数据了,但还是在跑着。可能数据源有问题,可能我们写的程序有BUG,也可能是更新时要写入到的数据库出问题了(数据库连接不上了,写数据死锁了)。我们这里主要说下第二种,我们自己的程序如果有BUG,导致工作不正常,我们怎么知道它当前正在干什么呢,这时候就要用到Linux中的调试分析诊断strace,可以使用 sudo strace -p PID这个命令。
通过执行后输出的一些信息,推测分析看是哪些出了问题。