trickle () {
awk 'BEGIN { t = systime(); OFS="\t" }
{ print systime() - t, $0 }
{ t = systime() }'
}
Эта небольшая функция оболочки просто оборачивает awk
скрипт (, совместимый как с GNU awk
, так и mawk -Wi
, но не с BSD awk
из-за его отсутствияsystime()
). Он будет выводить каждую строку ввода с префиксом количества полных секунд с момента последней строки вывода. Первая строка будет иметь префикс нуля.
Тестирование:
$ { echo hello; sleep 2; echo world } | trickle
0 hello
2 world
Сценарий awk
, очевидно, может быть запущен и отдельно -:
$ some_command | awk 'BEGIN{OFS="\t";t=systime()}{print systime()-t,$0;t=systime()}
.
$ { echo hello; sleep 2; echo world; } | awk 'BEGIN{OFS="\t";t=systime()}{print systime()-t,$0;t=systime()}'
0 hello
2 world
"используемый" немного меняется, например, при выполнении разных команд. Разница в "всего" - ошибка.
free
и vmstat
на самом деле имеют общий код. Оба они показывают переменную, которую procps вызывает kb_main_total
. Но одна из команд -, не согласующаяся с /proc/meminfo -, использует тип с плавающей запятой. Обычное 32 -битное число с плавающей запятой имеет только 24-битную точность. vmstat.c:
static unsigned long unitConvert(unsigned long size)
{
float cvSize;
cvSize = (float)size / dataUnit * ((statMode == SLABSTAT) ? 1 : 1024);
return ((unsigned long)cvSize);
}
$ python
...
>>> from ctypes import c_float
>>> c_float(131753676)
c_float(131753680.0)