這篇文章主要介紹了Linux中如何使用ps命令輸出進(jìn)行排序,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)龍泉驛免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
ps命令是理解Linux系統(tǒng)上運(yùn)行的內(nèi)容和每個進(jìn)程使用的資源的關(guān)鍵。了解如何顯示ps以任何方式提供的信息都是非常有用的,這些信息可以幫助您集中精力解決您要解決的問題。這樣做的一個方面是能夠按任何列對ps aux命令的輸出進(jìn)行排序,以突出顯示特定的信息,例如進(jìn)程使用了多少內(nèi)存或運(yùn)行了多長時間。
技巧包括使用ps命令的 --sort 選項(xiàng)并知道如何指定要用于排序的列。默認(rèn)情況下,ps按進(jìn)程id(PID)排序,首先顯示最小的。PID 1將出現(xiàn)在列表的頂部,在列標(biāo)題的正下方。其余的將按數(shù)字順序排列。
下面是一個標(biāo)準(zhǔn)ps-aux輸出的例子??赡芸雌饋砗苎凼臁?/p>
linuxmi@linuxmi:~/www.linuxmi.com$ ps aux | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 171788 16056 ? Ss 08:59 0:05 /sbin/init splash root 2 0.0 0.0 0 0 ? S 08:59 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 08:59 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 08:59 0:00 [rcu_par_gp]
使用--sort選項(xiàng),如果按PID排序,您將得到相同的輸出。注意,您需要輸入小寫的“pid”。但是,您可以將“pid”更改為任何其他列并按該列排序。
linuxmi@linuxmi:~/www.linuxmi.com$ ps aux --sort pid | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 171788 16056 ? Ss 08:59 0:05 /sbin/init splash root 2 0.0 0.0 0 0 ? S 08:59 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 08:59 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 08:59 0:00 [rcu_par_gp]
要查看首先列出的選定列的最大值,必須更改排序選項(xiàng)(例如,用-pid代替pid)。請注意,在這種情況下,顯示如何以最高的進(jìn)程ID開始。將-看作是降序值(最大值在前),而名稱(例如pid)或帶有加號的名稱(例如+pid)表示升序。下面顯示的命令按進(jìn)程ID排序,首先顯示最大的。
linuxmi@linuxmi:~/www.linuxmi.com$ ps aux --sort -pid | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND linuxmi 38579 0.0 0.0 11368 596 pts/2 S+ 13:33 0:00 head -5 linuxmi 38578 0.0 0.0 15124 3788 pts/2 R+ 13:33 0:00 ps aux --sort -pid linuxmi 38571 0.2 0.1 13960 5240 pts/2 Ss 13:32 0:00 bash root 38546 0.0 0.0 0 0 ? I 13:32 0:00 [kworker/0:3]
要按其他列排序,您需要使用其列名。在此示例中,“ pmem”表示內(nèi)存使用的百分比,使用“ -pmem”表示我們將首先查看使用最多內(nèi)存的進(jìn)程。您也可以使用“%mem”和“-%mem”。
linuxmi@linuxmi:~/www.linuxmi.com$ ps aux --sort -pmem | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND MySQL 1559 0.2 8.9 1282972 357304 ? Ssl 08:59 0:34 /usr/sbin/mysqld linuxmi 23618 0.1 8.4 3424800 338068 ? Ssl 09:29 0:28 /usr/bin/gnome-shell linuxmi 25474 0.0 7.1 971780 286636 ? Sl 09:30 0:07 /usr/bin/gnome-software --gapplication-service linuxmi 23920 0.0 5.7 1143616 228824 ? Sl 09:29 0:08 /snap/snap-store/467/usr/bin/snap-store --gapplication-service
如果只想查看ps輸出的選擇列,則可以在此示例中進(jìn)行指定,其中僅顯示命令及其CPU使用率,并按最大CPU使用率對輸出進(jìn)行排序。
linuxmi@linuxmi:~/www.linuxmi.com$ ps -eo comm,pcpu --sort -pcpu | head -5 COMMAND %CPU tracker-extract 4.6 systemd-hostnam 1.8 netdata 1.7 apps.plugin 1.7
以下是列名稱和字符串的列表,可用于對它們進(jìn)行排序:
Column Ascending Descending Heading Sort Sort Alternatives =============================================== USER user -user PID pid -pid %CPU pcpu -pcpu %cpu and -%cpu %MEM pmem -pmem %pmem and -%pmem VSZ vsz -vsz RSS rss -rss TTY tty -tty STAT stat -stat START start -start TIME time -time COMMAND comm -comm
使用sort命令
您還可以將ps aux命令的輸出通過管道傳輸?shù)絪ort命令,并使用列號(1到11)選擇要用于排序的列。這種方法有兩個缺點(diǎn):1)列標(biāo)題將與ps輸出的其余部分一起排序,可能會在您不希望看到的地方結(jié)束;2)當(dāng)排序需要數(shù)值時,您需要在sort命令中添加一個“n”。ps命令理解這種區(qū)別;像這樣的命令會根據(jù)內(nèi)存使用情況進(jìn)行排序。sort命令使用"-nk 4"對排序輸出中的(-k 4) 4th數(shù)據(jù)列進(jìn)行數(shù)字排序。
linuxmi@linuxmi:~/www.linuxmi.com$ ps aux | head -1; ps aux | sort -r -nk 4 | head -3 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND mysql 1559 0.2 8.9 1282972 357304 ? Ssl 08:59 0:35 /usr/sbin/mysqld linuxmi 23618 0.2 8.6 3432704 346044 ? Ssl 09:29 0:38 /usr/bin/gnome-shell linuxmi 25474 0.0 7.1 971780 286636 ? Sl 09:30 0:07 /usr/bin/gnome-software --gapplication-service
使用別名
即使ps命令的靈活性可以滿足您的需求,您也可以始終創(chuàng)建別名,這樣就不必計數(shù)列和/或考慮列值是否為數(shù)字。這里有些例子:
alias LmCPU='ps aux --sort -%cpu' alias LmMem='ps aux --sort -%mem' alias TopCPU='ps aux --sort -%cpu | head -11' alias TopMem='ps aux --sort -%mem | head -11'
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Linux中如何使用ps命令輸出進(jìn)行排序”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!