-
查看進程打開了哪些文件
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這個命令。
通過執行后輸出的一些信息,推測分析看是哪些出了問題。