2014-04-04 31 views

回答

1

请参阅top的命令行选项。 -b用于非交互式使用。可能你会想调用-n来告诉它要使用多少次迭代。

top -b -n1 | other_program 

至于选择列,这可能需要更交互方法(如使用伪终端或在TclExpect)操作top的。如果不是这样,直接从/proc/收集所需信息...


举个例子,看看丰富的可用于大多数进程的信息,在这个例子中,我选择了PID 1429,Firefox浏览器我用来写这个。

[[email protected] VMs]$ ll /proc/1429/ 
total 0 
dr-xr-xr-x. 2 wally wally 0 Apr 4 05:58 attr 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 autogroup 
-r--------. 1 wally wally 0 Apr 4 05:58 auxv 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 cgroup 
--w-------. 1 wally wally 0 Apr 4 05:58 clear_refs 
-r--r--r--. 1 wally wally 0 Mar 10 16:55 cmdline 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 comm 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 coredump_filter 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 cpuset 
lrwxrwxrwx. 1 wally wally 0 Apr 4 05:58 cwd -> /home/wally 
-r--------. 1 wally wally 0 Apr 4 05:58 environ 
lrwxrwxrwx. 1 wally wally 0 Mar 23 18:37 exe -> /usr/lib64/firefox/firefox 
dr-x------. 2 wally wally 0 Apr 4 05:58 fd 
dr-x------. 2 wally wally 0 Apr 4 05:58 fdinfo 
-r--------. 1 wally wally 0 Apr 4 05:58 io 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 limits 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 loginuid 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 maps 
-rw-------. 1 wally wally 0 Apr 4 05:58 mem 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 mountinfo 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 mounts 
-r--------. 1 wally wally 0 Apr 4 05:58 mountstats 
dr-xr-xr-x. 5 wally wally 0 Apr 4 05:58 net 
dr-x--x--x. 2 wally wally 0 Apr 4 05:58 ns 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 numa_maps 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 oom_adj 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 oom_score 
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 oom_score_adj 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 pagemap 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 personality 
lrwxrwxrwx. 1 wally wally 0 Apr 4 05:58 root ->/
-rw-r--r--. 1 wally wally 0 Apr 4 05:58 sched 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 sessionid 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 smaps 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 stack 
-r--r--r--. 1 wally wally 0 Mar 10 16:56 stat 
-r--r--r--. 1 wally wally 0 Apr 4 05:56 statm 
-r--r--r--. 1 wally wally 0 Mar 10 16:56 status 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 syscall 
dr-xr-xr-x. 43 wally wally 0 Mar 10 16:56 task 
-r--r--r--. 1 wally wally 0 Apr 4 05:58 wchan 

例如,在命令行:

[[email protected] VMs]$ cat /proc/1429/cmdline 
/usr/lib64/firefox/firefox[[email protected] VMs]$ 
+0

是的,但我怎么设置从批处理模式中显示的列?我无法找到任何可以完成此任务的命令行选项。 – JohnDoe

+0

例如,在文档(http://unixhelp.ed.ac.uk/CGI/man-cgi?top)中,在第2b节中讨论了如何选择和排序列。虽然,它只讨论如何在交互模式下做到这一点。 – JohnDoe

+0

@JohnDoe:对不起,我中断了更新我的答案。我讨论解决这个问题的方法。 – wallyk