Linux команда top в batch mode — как показать имена файлов?
У команды top есть странная фича - в интерактивном режиме, нажимая 'c' можно переключаться с процессов на содержимое командной строки. В общем то удобно, но странность в том, что в batch mode (не знаю, как по русски, то есть в неитерактивном режиме) флаг -c просто инвертирует этот режим показа относительно предыдущего запуска. А мне хотелось бы в batch mode получить листинг именно командных строк каждый раз, ну, то есть это в дальнейшем будет использоваться скриптом. Такое возможно? может, какими-нибудь переменными окружения?
Добавил: интересует именно команда top а не ps, поскольку последняя показывает потребление CPU за все время жизни процесса, а не текущее.
интересует текущее потребление cpu, которое выдается командой top
man ps in NOTES section.
CPU usage is currently expressed as the percentage of time spent running
during the entire lifetime of a process. This is not ideal, and it does not
conform to the standards that ps otherwise conforms to. CPU usage is
unlikely to add up to exactly 100%.
В Линукс просто нигде не хранится "текущая занятость процессора".
В batch вы делаете ОДИН запрос, то есть физически ни ps ни любая другая команда не смогут вам такое показать, даже если обратиться непосредственно к API ядра
Можно сделать несколько запросов к статистике процесса и вычислять, что произошло за это время.
top опрашивает cpu каждые xx секунд (вроде 2s по умолчанию), и вычисляет разницу.
Если посмотреть, что top выдает сразу после старта - там будет очень примерный результат, но с накоплением данных он улучшается.
zzmaster, Ну то есть то, что я и говорил - он собирает статистику.
Проблема в том, что за маленький промежуток времени статистика совершенно непрезентативна.
Нужно понять как работает process scheduler в линукс, который распределяет слайсы времени между всеми работающими процессами. Он пытается оптимизировать ресурсы, и может случиться такое, что в тот момент как вы запустили top, process scheduler выделил вашему процессу несколько слайсов подряд. А в следующий момент выделил другому процессу несколько слайсов подряд. А еще через момент, он не выделил ничего, поскольку ваш процесс обратился в устройству чтения и ему процессорное время не нужно было долю секунды.
То, что выдает статистика - это именно количество времени, которое ядро выделило процессу (грубо говоря количество слайсов), поэтому в статистике хранится только вот это выделенное время.
Если вас описанная выше неточность устраивает - можете пользоваться и top, но учитывайте неточность на таком коротком промежутке. В идеале - хотя бы несколько секунд.
Александр, интересует текущее потребление cpu, которое выдается командой top
man ps in NOTES section.
CPU usage is currently expressed as the percentage of time spent running
during the entire lifetime of a process. This is not ideal, and it does not
conform to the standards that ps otherwise conforms to. CPU usage is
unlikely to add up to exactly 100%.