Кажется, что в 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
Надеюсь, это поможет найти способ, который подходит вам.