2013-02-09 13 views
1

我想弄清楚如何在Linux shell中獲得最多k個進程。很顯然,我頭上的第一件事是top,但它似乎沒有任何參數來指定要打印的進程數。Linux Shell - 查找前k個進程

使用批處理模式和迭代次數參數,我可以讓它產生所有進程的一個迭代並存儲輸出,但是我找不到一種方法將列表縮小到一定數量。 (當然,我可以把整個列表剪掉,但我使用的系統有27000個進程正在運行,因此檢索列表需要幾秒鐘的時間)。

例子:

>top -b -n1 
>... (lots more processes here) 
>26416 mcm101 20 0 4188 176 96 S 0.0 0.0 0:00.00 character_count 
>26604 root  20 0 180m 5684 3532 S 0.0 0.0 0:00.54 sshd 
>26616 pwf7  20 0 105m 1792 1432 S 0.0 0.0 0:00.10 bash 

我想是這樣的:

>top k 
>1 mcm101 20 0 4188 176 96 S 0.0 0.0 0:00.00 character_count 
>2 pwf7  20 0 105m 1792 1432 S 0.0 0.0 0:00.10 bash 
>... (more processes here) 
>k root  20 0 180m 5684 3532 S 0.0 0.0 0:00.54 sshd 

有誰知道如何使用top或任何其他命令(一個或多個)以實現這一結果?

+1

你如何排列你的'k'過程? – cnicutar 2013-02-09 20:55:01

+0

頂部命令的%CPU字段(我相信是默認值)。 – MrHappyAsthma 2013-02-09 21:07:54

回答

2

這樣如何:

top -b -n1 | grep '^ *[0-9]' | head -n $k 

top將輸出在CPU使用率的順序排列的所有過程,grep將選擇從輸出以數字開頭的那些行(即那些與PID開始)和head將從該輸出中輸出第一條k行。

+0

完美!我知道這很簡單,但我對linux命令比較陌生,所以看起來相當困難! :d – MrHappyAsthma 2013-02-09 21:09:20