Linux进程活动
问题描述:
有没有可能在Linux的指定进程中显示发生了什么?Linux进程活动
例如,我运行SQL查询 - >select evil_function(); 并注意Linux下的进程使用全部cpu。
所以有什么我能看到的在这个过程中发生了什么?
我想要看看在这个过程下运行的查询。
谢谢!
答
strace
会告诉你什么系统调用该过程正在进行。
要查看所谓的例程占用的CPU最多,您需要运行一个分析工具,并确保您正确编译的进程的可执行文件(有时需要在编译时进行配置,以便进行性能分析,有时它只是需要使用调试符号进行编译,或者在编译后不会被剥离)。
你可能想看看oprofile
,valgrind
,gprof
和免费工具的初学者 - 也有商业产品可用。
这里有几个环节:
http://www.pixelbeat.org/programming/profiling/
http://en.wikipedia.org/wiki/List_of_performance_analysis_tools
答
你在混合一大堆东西。
如果你正在谈论的MySQL做:
show processlist;
对于信息特别是约Linux进程,你可以strace
过程中得到它调用系统功能的列表。除非你对Linux有经验,否则这对你来说将毫无用处。
如果进程暂停,那么您可以找出停止的功能,但这可能不是您想要的功能,因为您说该进程正在运行。
还有各种工具可以为您提供有关进程正在读取的磁盘的哪些部分以及它分配多少内存的信息。
最后,您可以使用gdb
打入流程和单步完成您的过程,以确切了解它在做什么。这对你来说也可能是无用的,因为SQL服务器做了很多事情 - 很多人通过这种方法来理解。