7

Выполнение пс возвращает ps ux хороший список информации о процессе, легко grep через или watch Тем не менее, кажется, что нет большой гибкости в выводе использования памяти; RSS (размер резидентного набора) печатается в кБ, что для больших процессов трудно читать (особенно с первого взгляда), а %MEM дает 100 × RSS /system_memory .

У утилиты du есть симпатичный флаг -h который печатает пространство более удобным для пользователя способом. Я не смог найти ничего эквивалентного для ps . Есть ли специальный трюк форматирования, который может сделать это?

3 ответа3

10
ps ux | numfmt --header --to=iec --field 5,6 --padding 6

Вам нужен coreutils> = 8.25

Я лично предпочитаю это:

ps -eo pmem,comm,pid,maj_flt,min_flt,rss,vsz --sort -rss | numfmt --header --to=iec --field 4-5 | numfmt --header --from-unit=1024 --to=iec --field 6-7 | column -t | head
5

Кажется, что в ps нет подходящего флага, поэтому вам нужно либо использовать другой инструмент (я лично предпочитаю htop), либо немного возиться с выводом ps . Я думаю, вы хотите придерживаться ps . Вот маленький грязный скрипт, который я сделал в качестве примера:

# get terminal width
WIDTH=`tput cols`
# pipe stdin to awk
cat | \
awk '\
BEGIN {
    # set output format
    CONVFMT="%.2f"
}
NR==1 {
    # search first line for columns that need to be converted from K to M
    for (i=1;i<=NF;i++) 
        # add condition for new columns if you want
        if ($i=="VSZ" || $i=="RSS") {
            # column numbers are stored in an array
            arr[i]=i; 
            $i = $i "(MB)"
        }
}
NR > 1 {
    # edit appropriate columns
    for (i in arr)
        $i=$i/1024; 
}
{
    # print every line
    print $0
}' | \
# format the output into columns and trim it to terminal width
column -t | cut -c 1-$WIDTH

Сохраните его в файл, скажем, prettyps.sh , сделайте его исполняемым:

chmod +x prettyps.sh

и использовать следующим образом:

ps ux | /path/to/prettyps.sh

Использование этого сценария имеет недостаток добавления дополнительных процессов в вывод ps, но, тем не менее, он работает:

$ ps ux | ./prettyps.sh
USER  PID   %CPU  %MEM  VSZ(MB)  RSS(MB) TTY    STAT  START  TIME   COMMAND
pono  2658  0.0   0.0   358.88   4.29    ?      Sl    02:33  0:00   /usr/bin/gnome-keyring
... output truncated...
pono  4507  0.0   0.0   19.14    1.81    pts/1  S+    03:29  0:00   man                   
pono  4518  0.0   0.0   10.55    0.96    pts/1  S+    03:29  0:00   pager                 
pono  4727  0.7   0.9   1143.59  53.08   ?      Ssl   04:10  0:24   /opt/sublime_text/subl
pono  4742  0.1   0.4   339.05   25.80   ?      Sl    04:10  0:03   /opt/sublime_text/plug
pono  5177  0.0   0.0   19.23    1.32    pts/0  R+    05:05  0:00   ps                    
pono  5178  0.0   0.0   4.34     0.61    pts/0  S+    05:05  0:00   /bin/sh 

Надеюсь, это поможет найти способ, который подходит вам.

0

Реквизит @adrianlxt! Это мой новый псевдоним "pss":

ps -eo pid,pmem,rss,vsz,comm,command --sort -rss | numfmt --header --from-unit=1024 --to=iec --field 3-4 | awk '$3 != 0'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .