我正在开发一个类似于我们在Linux中称为系统监视器的项目。我正在使用opensuse 11.4 gnome。我想知道是否有任何命令(除了ps)列出了系统上当前正在运行的所有应用程序。我正在为多核环境开发它。
例如,我正在使用Firefox浏览网页并同时说谷歌浏览器,另外我正在编辑文本文件中的文本。在这种情况下,当我打开我的项目时,我想要当前正在运行的所有应用程序的列表[在我的场景中,名称gEdit,谷歌浏览器和Firefox(但不是这三个应用程序生成的过程)必须显示为列表] < / p>
我想要的输出与我们在Windows中使用任务管理器时在“应用程序”选项卡中获得的输出相同。
如果有人有解决方案,请告诉我们会非常感激。我正在使用netbeans来实现该项目。感谢!!!
答案 0 :(得分:2)
我认为没有一种简单的方法可以完成这项工作。在Linux中,应用程序可能会在启动时创建多个进程 - 例如,让我们使用postfix:
localhost:~ # ps -ef|grep postfix root 3708 1 0 Apr24 ? 00:00:35 /usr/lib/postfix/master postfix 3748 3708 0 Apr24 ? 00:00:01 qmgr -l -t fifo -u postfix 3749 3708 0 Apr24 ? 00:00:00 pickup -l -t fifo -u -c postfix 13504 3708 0 16:05 ? 00:00:00 cleanup -z -t unix -u -c postfix 15458 3708 0 17:45 ? 00:00:00 cleanup -z -t unix -u -c postfix 19907 3708 0 19:25 ? 00:00:00 cleanup -z -t unix -u -c
进程“master”,“qmgr”,“pickup”和“cleanup”都属于应用程序后缀。通过查看第三列,您可以看到这些进程各自属于一个父进程“master”,该第三列告诉您具有启动此进程的父进程。在我的示例中,所有进程都是由id为3708的进程启动的。另一个例子是Apache Webserver,它在启动时创建了几个httpd进程 - 这里的进程名称都相同,只是计数因配置而异。
回到你想要解决的问题:从我的观点来看,有两种方法可以尝试:
希望这会有所帮助...
答案 1 :(得分:1)
你有没有尝试 pstree ?这会显示一个正在系统上运行的进程的树。
htop 是我通常用于多核环境的原因,因为它显示了资源利用率,您可以通过添加列来查看您的流程的固定位置。 htop比顶级用户更友好,有更多选择。当你运行它时,只需点击' t ',它将按父母对进程进行排序。
我不知道任何其他工具,但您的另一个选择是通过 / proc 并编写您自己的脚本来提取您需要的信息。
我希望它有所帮助。
编辑:我忘了提到进程是在linux中分叉的,所以有一个父进程启动了几个其他进程/线程。从您的问题来看,您似乎正在尝试为每个正在运行的流程找到父流程,我的答案基于该假设。答案 2 :(得分:0)
查看top(linux命令)
本文将为您提供很多帮助。 http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html
答案 3 :(得分:0)
您可能希望从xlsclients
开始。
它可能没有您需要的所有功能,但Linux没有明确定义的应用程序概念。
您可能会觉得有用的下一件事是xprop
(查找_NET_WM_PID
),但这不能保证适用于所有程序。