Процесс в очереди выполнения
Как показать текущий список процессов и потоков, находящихся в данный момент в очереди на запуск?
То есть, если средняя загрузка моего сервера составляет 32,1, то в течение последних нескольких минут в среднем было около 32 процессов или потоков, готовых к запуску в любой данный момент времени. Я хотел бы узнать, что они есть.
Что-то вроде ps axHr
должен сделать трюк, но на сервере со средней загрузкой в диапазоне 80, он показывает только 3 или 4 элемента.
Лучшее, что я придумал, это ps axH | grep -v " S"
, но это кажется грязным и хрупким, и даже не совсем правильным.
2 ответа
Решение
ps -A -o pid,state,command | awk '{ if ($2 == "R") print }'
1605 R /usr/bin/skype
30655 R ps -A -o pid,state,command
или используйте htop и сортируйте (F6) по "S"
или для устранения проблем значений высокой нагрузки:
while [ 1 ] ; do ps -A -o pid,state,command | \
awk '{ if ($2 != "S") print }' | \
grep -v "ps -A -o pid,state,command" ; sleep 3 ; done
Вы можете добавить часы в вашу командную строку:
watch -n 1 "(ps aux | awk '\$8 ~ /D/ || \$8 ~ /R/ { print \$0 }')"