compat_linux OpenBSD (8) может быть полезен для выполнения некоторых вещей, но взаимодействия с устройствами?
Это - просто простой перевод системного вызова, который является степенью уловки.
Как эта утилита управляет "IronKey"? ioctl (2) к/dev узлу, некоторому волшебному модулю ядра Linux?
Я собираюсь рискнуть и сказать, что это не собирается работать над OpenBSD.
Кроме того, к MaxMackie это не связано. compat_linux OpenBSD (8) i386-только.
Возможно, используйте этого на основе ps
вывод:
ps aux | awk 'BEGIN { sum = 0 } { sum += $3 }; END { print sum }
Используйте команду часов или для цикла в оболочке,
т.е. watch -n1 "top -b -n1 | grep 'Cpu(s)' | awk '{print \$2 + \$4}'"
Вы правы, top
кажется, дает неправильное использование ЦП на первом повторении. Можно работать вокруг этой проблемы как это:
top -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'
Это, конечно, займет вдвое больше времени, но оно будет работать так или иначе.
Если Вы все еще хотите это работа быстрее, можно использовать -d
опция, например, в течение 1 второго общего периода измерения используют половину из него:
top -d 0.5 -b -n2 | grep "Cpu(s)"|tail -n 1 | awk '{print $2 + $4}'
Только подробно остановиться на ответе @Ruslan, top
разделения использование ЦП между пользователем, системные процессы и nice
процессы, мы хотим сумму трех. Так, мы можем работать top
в b
режим atch, который позволяет нам анализировать его вывод. Однако, как объяснено здесь, 1-е повторение top -b
возвращает проценты начиная с начальной загрузки, нам поэтому нужны по крайней мере два повторения (-n 2
) получить текущий процент. Для ускорения вещей можно установить d
elay между повторениями к 0.01
:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
Почему Вы заботитесь об использовании ЦП? Среднее число загрузки является намного лучшим индикатором:
cat /proc/loadavg
Если Вам действительно нужно использование ЦП, анализируя /proc/stat
вероятно, способ пойти.
/proc/stat
не дает использование ЦП, как это, нужно считать его дважды с некоторым временем между чтениями и сделать некоторые вычисления для получения использования ЦП. Это что top
делает.
– Ruslan
17.09.2013, 14:41
Используя sar
команда
sar 1 10
Это означает: получите результат 10 раз в каждую секунду
Технически первый top
не всегда выводит одно и то же значение; он просто выводит среднее значение загрузки процессора с момента последней загрузки. Так как top
для расчета загрузки процессора использует дельту статистики /proc/stat
, первое значение вычисляется при сравнении с нулем, что приводит к неверному (но WAD) результату.
Если вы не хотите использовать top
, вы можете напрямую проанализировать /proc/stat
:
cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5) "%"}'
Так же быстрее и точнее.
Вы можете протестировать его с стрессом
:
stress -c 1 -q &
И сделать
killall stress
после.