Назад | Перейти на главную страницу

Отключить заголовки от команды vmstat?

Есть ли способ запустить команду VMSTAT (или что-то в этом роде) и включить метку времени в строку? Я знаю, что могу передать вывод команды по конвейеру и манипулировать результатами, но если я это сделаю, я получу ненужную информацию; Мне сказали, что первая строка VMSTAT содержит фиктивные данные, и я бы получил повторяющийся список первых строк.

Есть ли способ получить такие данные с помощью VMSTAT или чего-то подобного:

20090826.134908 0  0      0 241832 120064 3023856    0    0     0     1    0     0  0  0 100  0

Спасибо!
IVR Мститель

while sleep 1 ; do echo `date '+%Y%m%d.%H%M%S'` `vmstat | head -3 | tail -1` ; done
vmstat -n 1 | (while read; do echo "$(date +%Y%m%d.%H%M%S) $REPLY"; done) | tail -n +3

Не уверен, что вы имеете в виду, говоря «если я [манипулирую результатами], я получу ненужную информацию». Вы можете сделать что-то вроде этого:

vmstat 8 | sed '3d'

Это удалит ту строку, которую всегда просят игнорировать. В качестве альтернативы, если вы хотите удалить это и заголовок:

vmstat 8 | sed '1,3d'

Это также позаботится о заголовке. Если заголовок повторяется, вы можете использовать что-то вроде этого:

vmstat 8 | sed '3d; /memory/d; /free/d;'

В моем случае «память» была в строке 1 и «свободна» в строке 2; замените их собственными соответствующими строками.

Вот быстрое и грязное решение:

 while true; do date;vmstat 1 2|tail -n1; done

Первая строка, кстати, не подделка - она ​​содержит средние значения с момента последней перезагрузки.

Я знаю, что могу передать вывод команды по конвейеру и манипулировать результатами, но если я это сделаю, я получу ненужную информацию.

Я не понимаю, что вы имеете в виду. Если команды не дадут вам желаемого результата, я не могу придумать ничего, кроме конвейерной передачи и форматирования вывода.

В любом случае, это создает нужный вам формат.

$ date=`date "+%Y%m%d.%H%M%S"` && vmstat=`vmstat | tail -1` && echo $date$vmstat
20090827.175715 3  1      8 116848 121072 599320    0    0     0     4    3    6  0  0 100  0

Сар может работать лучше:
Я бы порекомендовал команду sar, которая является частью пакета sysstat. По умолчанию это будет включать временные метки, и есть переключатели для получения всех видов данных. Самый простой вариант использования:

sar 1 3 #interval of 1, for a count of 3

См. 'Man sar', чтобы получить статистику памяти и подкачки.

Если вы используете vmstat:
Если вы собираетесь использовать vmstat, после заполнения терминала он снова распечатает заголовок (по крайней мере, в моей версии GNU), поэтому используйте переключатель -n, чтобы подавить это.