Добавьте следующее к ~/.bashrc
# Avoid duplicates
HISTCONTROL=ignoredups:erasedups
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend
# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
Почему использование ps
когда можно сделать это легко с top
команда?
Если необходимо использовать ps
, попробуйте это:
ps aux | sort -nrk 3,3 | head -n 5
Если Вы хотите что-то, что это действительно 'top'esq с постоянными обновлениями, используйте часы
watch "ps aux | sort -nrk 3,3 | head -n 5"
Я не думаю ps
то, что Вы ищете. Вы посмотрели на вывод от top
?
Если у Вас есть Вершина GNU, попытайтесь использовать, это - пакетный режим для выкладывания списка процессов, отсортированного по использованию CPU, и использующий голову/хвост для получения лучшие 5 строк (первые 8 являются заголовками):
top -b -n 1 | head -n 12 | tail -n 5
Вершина BSD, кажется, ведет себя по-другому и не имеет неинтерактивного режима, так используйте один из другого ps
основанные решения.
top -o cpu -n 5
способ достигнуть того же самого. Кто-либо знает? Мой top
отличается от Вашего top
.
– boehj
29.05.2011, 07:00
-o
и -n
устанавливает количество раз, оно обновляет дисплей перед выходом.
– Caleb
29.05.2011, 08:28
top
кажется, не имеет пакетный режим, который вполне ограничивает. Должен быть некоторый способ передать по каналу top
в другие команды. Я проведу некоторое исследование.
– boehj
29.05.2011, 08:45
В зависимости от Ваших потребностей можно найти это немного более читаемым:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
демонстрационный вывод:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(поля являются %CPU, PID, ПОЛЬЗОВАТЕЛЕМ, КОМАНДОЙ),
top
на Mac OS X имеет регистрирующуюся опцию режима в форме top -l numberOfSamples
(который, кажется, эквивалент пакетному режиму GNU top
). Необходимо, тем не менее, иметь по крайней мере два образца, потому что "первому отображенному образцу отобразят недопустимый %CPU для каждого процесса, поскольку это вычисляется с помощью дельты между образцами" (man 1 top
).
# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
Это поставит процесс, использующий наибольшее количество процессоров, в нижнюю часть списка. Обратный порядок списка путем добавления минуса к коду поля, используемого для сортировки, например, [1187503]ps aux --sort -c
Правильным ответом будет:
ps --sort=-pcpu | head -n 6
Таким образом, можно указывать столбцы, не мешая сортировке.
Ex:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Примечание для MAC OS X: В Mac OS X, ps
не распознает -сортировку
, но предлагает -r
сортировать по текущему использованию процессора. Таким образом, для Mac OS X можно использовать:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
Утилита командной строки ps
имеет свой вариант сортировки, поэтому я предпочитаю:
$ ps -eo pcpu,args --sort=-%cpu | head
Вы можете добавлять нужные вам столбцы. Посмотрите, какие еще опции доступны на странице ps
.
$ man ps
Самый быстрый лайнер, который я нашел для этого (примечание 6, потому что заголовок складывается):
ps aux k-pcpu | head -6
Неясно, какое именно измерение буфера текста является слишком большим для ConSpy ( stty --all
или около того не предоставлено), поэтому рекомендации относительно количества строк текста и cpl следуют.
Для консоли TUI существуют различные параметры:
Как правило:
текстовые строки = строки сканирования/высота символов
cpl = ширина экрана (в точках )/ширина символа
Высота и ширина символов в точках. Деление - целое число, где остаток отбрасывается.
Чтобы уменьшить количество текстовых строк, загрузите шрифт с большей высотой символов. Чтобы уменьшить cpl (символы на строку), загрузите шрифт с шириной 12 или более символов. Например:
setfont /usr/share/consolefonts/Uni3-TerminusBold24x12.psf.gz
(хотя IMHO Terminus во многом безобразен).
На Ubuntu может быть создан пользовательский скрипт /etc/init/console-setup.conf
для выполнения при загрузке. А именно, вместо
exec loadkeys /etc/console-setup/cached.kmap.gz
можно записать
script
setfont /usr/share/consolefonts/Uni3-TerminusBold24x12.psf.gz
loadkeys /etc/console-setup/cached.kmap.gz
end script
Обратите внимание, что файл cached.kmap.gz является раскладкой клавиатуры (keymap) и не мешает шрифтам. Нет необходимости выполнять setfont
, а именно из «console-setup.conf». Из-за значения термина «консоль» этот выбор кажется логичным.
Обновление: В Ubuntu существует задача /etc/init/console-font.conf
.
Или прочитайте этот материал в Ask Ubuntu , возможно, найдет что-то полезное.
В большинстве приведенных выше рекомендаций предполагается, что драйвер framebuffer ( fbdev
) включен. Также в этом случае команда fbset
без аргументов (или sudo fbset
из оболочки пользователя) сообщает геометрию текущего видео режима, как
геометрия
screen _ width scan _ lines ...
В аппаратном VGA-подобном режиме , устаревшем в современных Linuxes, максимальная ширина символа равна 9. Таким образом, можно уменьшить cpl (символы на строку) только путем включения нестандартной (уменьшенной) ширины экрана, следовательно, нестандартный режим с уменьшенной тактовой частотой пикселя. Это не всегда возможно и безопасно.
Еще одна заметка о текстовых строках × cpl на виртуальных консолях Linux. Эти значения можно получить с помощью
sudo od -t u1 -N 2/dev/vcsa
number
Первое десятичное число - текстовые строки, а второе - cpl. Для получения пояснений по работе см. vcs (4) и od (1).
sh
загружает только .profile
, если это оболочка входа , т.е. если она вызывается с аргументом 0, начинающимся с -
. Если вы не хотите, чтобы /etc/profile
и ~/.profile
считывались, вызовите оболочку с аргументом по умолчанию 0 (имя исполняемого файла).
Если оболочка выполняется как оболочка входа, вы не можете управлять аргументами. Если нет, оболочка не является оболочкой входа.
Помимо файлов, которые загружаются, если оболочка является оболочкой входа в систему, существует еще один файл, который загружают некоторые реализации sh
: файл, указанный в переменной среды ENV
. Если вы вызываете оболочку и не хотите загружать файл, убедитесь, что ENV
не установлен.
top -bn1 | sed -n '7,12' p
также работает как хороший маленький лайнер.
Хотя я предпочитаю использовать ps с --sort = X -o X, Y, Z
, используя ps, вы можете вытащить различные stats grep для пользователя процесса ИЛИ, а затем суммировать ИЛИ avg их с трубой, чтобы пробудиться.
top
покажет, что использует ваш процессор. Если он у вас установлен, htop
позволяет вам более детально управлять, включая фильтрацию - в вашем случае - CPU.
Чтобы добавить балл к другим ценным ответам, я предпочитаю:
ps auxk-c | head -6
Он также печатает заголовок, что приятно.
Здесь k
идентично --sort
, а c
указывает использование ЦП (псевдоним %cpu
) для сортировки, а -
для обратной сортировки.
Вы можете добавить дополнительные спецификаторы, разделенные ,
, другие возможные спецификаторы: %mem
, args
, bsdstart
, pid
, gid
, uid
... полный список которых вы можете найти в разделе СТАНДАРТНЫЕ СПЕЦИФИКАТОРЫ ФОРМАТА страницы руководства. Например:
ps auxk -gid,-%mem | head -11
напечатает 10 процессов с наивысшим идентификатором группы, отсортированных внутри по использованию памяти.
Вот кое-что, что я придумал, так как нашел первоначальный ответ слишком загадочным. Итак, для голых костей введите
ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6
Давайте разберемся, что делает каждый. ps
конечно показывает моментальный снимок текущих процессов. -e
показывает, что каждый процесс в системе -o
должен определить формат, в котором мы хотим получить результат, как вы можете видеть, мы указали формат как pid,cmd,%cpu,%mem
, следующий --sort
, конечно, сортирует . Здесь важно отметить один важный момент: по умолчанию он сортируется по возрастанию. Также --sort
нужен параметр для сортировки, который мы предоставляем -%cpu
обратите внимание на -
это так, что он сортирует по убыванию , и мы сначала получаем максимальную загрузку ЦП. Затем мы передаем это в head -n 6
, что дает нам this
PID CMD %CPU %MEM
5995 transmission-gtk 5.1 1.3
402083 /usr/lib64/firefox/firefox 4.2 6.7
978875 /usr/lib64/firefox/firefox 3.6 4.0
2982 /usr/bin/gnome-shell 2.7 3.0
2774 /usr/libexec/Xorg vt2 -disp 1.9 1.0
Теперь, когда мы поняли основы, мы можем немного похвастаться. Например, вы можете использовать watch
для обновления списка каждые 2 секунды, например
watch "ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6"
Или, для чего-то более интересного, вы можете установить пакет python под названием tabulate
, ввести его в свой терминал pip install tabulate
, теперь вы действительно можете похвастаться, используя некоторые sed
фу и т. д.
ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 5 | tabulate -1 -f github | cut -f 2- -d "|" | sed '2s/----/ /'
который дает этот прекрасный результат-
| PID | CMD | %CPU | %MEM |
|--------|----------------------------|--------|--------|
| 5995 | transmission-gtk | 5.1 | 1.3 |
| 978875 | /usr/lib64/firefox/firefox | 4.5 | 4.1 |
| 402083 | /usr/lib64/firefox/firefox | 4.2 | 6.7 |
| 2982 | /usr/bin/gnome-shell | 2.7 | 3 |
для простоты использования и для того, чтобы не вводить эту команду снова и снова, вы можете alias
их ввести в свой .bashrc
вот так
alias top5="ps -e -o pid,cmd,%cpu,%mem --sort=-%cpu | head -n 6"
после выполнения source.bashrc
вы можете просто ввести top5
. Или вы можете просто использовать htop
и сортировать по %CPU
htop также позволяет убивать процессы и многое другое.
ps aux | sort -nrk 3,3 | head -n 5
– syss 12.05.2016, 13:42top
на самом деле работы. – icedwater 15.06.2017, 05:50top
читает список процессов, и отобразите результат самостоятельно, не передавая по каналу ни к какому другому процессу – phuclv 15.06.2017, 06:16