当我在-p $PID上使用lsof时,我只得到进程的直接线程。为什么和如何有效地使用线程和lsof?
sudo lsof -p 5344 > lsof-p5344.log
sudo lsof | grep '\<5344\>' > lsofgrep5344.log
$ wc -l lsof*5344.log
1,120,208 lsofgrep5344.log
2,166 lsof-p5344.log这些是精确过程的线条。这与儿童进程无关。在这里,我使用awk来过滤进程PID数字( lsof输出的第二列),它位于输出的第二个字段上。
$ cat lsof-p5344.log | awk '{print $2}' | grep '^5344现在,如果我通过第一列“命令”进行筛选,那么我将看到java应用程序的不同线程,而lsof -p one将只显示主线程(例如,"COMMAND=java_daemon"),lsof | grep将会有很多。"COMMAND=pool123、JMX、Java2D、Quartz等“,"PID”全部等于5344) | wc -l
2,165
$ cat lsofgrep5344.log | awk '{print $2}' | grep '^5344现在,如果我通过第一列“命令”进行筛选,那么我将看到java应用程序的不同线程,而D5 one将只显示主线程(例如,"COMMAND=java_daemon"),D6将会有很多。"COMMAND=pool123、JMX、Java2D、Quartz等“,"PID”全部等于5344) | wc -l
1,120,207现在,如果我通过第一列“命令”进行筛选,那么我将看到java应用程序的不同线程,而D5 one将只显示主线程(例如,"COMMAND=java_daemon"),D6将会有很多。"COMMAND=pool123、JMX、Java2D、Quartz等“,"PID”全部等于5344)
发布于 2021-10-08 20:01:07
在我的系统中,lsof -k显示线程号。但我猜这些资源(文件,内存映射)分配给整个进程(线程打开的文件可以由另一个进程使用),然后挖掘线程似乎不相关。
在我的Linux系统上,我创建一个线程,该线程在打开文件后立即终止。lsof继续看到文件,而打开它的线程已经不在那里了。
https://unix.stackexchange.com/questions/672456
复制相似问题