Добавить временные метки для вывода команды «top»

Я извлекаю некоторые показатели производительности из «top» и сохраняю их в файл

top -b | grep 'tesseract\|node\|java\|beam.smp\|dockerd' > testm.txt 

поэтому на каждую секунду я получаю следующий результат:

  535 rabbitmq 20 0 1246756 128432 5536 S 1.3 3.4 618:33.41 beam.smp 589 root 20 0 351040 47836 25740 S 0.0 1.3 12:38.72 dockerd 1980 root 20 0 2236796 36844 15980 S 0.0 1.0 6:11.59 java 1995 root 20 0 1766008 241428 21844 S 0.0 6.4 11:26.85 java 29965 root 20 0 1107460 63732 19328 S 0.0 1.7 0:01.69 node 

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

Заранее спасибо!

One Solution collect form web for “Добавить временные метки для вывода команды «top»”

Добавление метки времени в каждую строку верхнего вывода для отдельного запуска top -b можно легко выполнить с помощью awk вместо grep для вашей фильтрации, поскольку awk имеет встроенные функции времени и может вводить их в свой вывод.

Я не выполняю большинство этих программ, поэтому я добавил bash и ssh в фильтр в своих примерах …

Вы можете сделать это с простой временной отметкой эпохи (секунды с 01-JAN-1970):

 top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print systime(), $0}' 

Что меньше для хранения, а более чистое – для просмотра:

 bash-$ top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print systime(), $0}' 1490018813 1229 root 20 0 891536 42868 28348 S 0.0 0.3 15:07.30 dockerd 1490018813 1240 root 20 0 65520 6208 5488 S 0.0 0.0 0:00.01 sshd 1490018813 2666 tim 20 0 24336 7136 3492 S 0.0 0.0 0:00.05 bash 1490018813 2710 tim 20 0 46984 5324 4644 S 0.0 0.0 0:09.08 ssh 1490018813 2783 root 20 0 105988 7184 6184 S 0.0 0.0 0:00.00 sshd 1490018813 2804 root 20 0 105988 7404 6408 S 0.0 0.0 0:00.00 sshd 

Или с более удобной для чтения меткой времени.

 top -b | awk '/bash|ssh|tesseract|node|java|beam.smp|dockerd/ {print strftime("%Y-%m-%d-%H:%M:%S", systime(), $0}' 

Что быстрее понять:

 bash-[541]$ top -b -n 3 | awk '/ssh|bash|java|dockerd/ {print strftime("%Y-%m-%d-%H:%M:%S", systime()), $0}' 2017-03-20-10:04:23 1229 root 20 0 891536 42868 28348 S 0.0 0.3 15:07.24 dockerd 2017-03-20-10:04:23 1240 root 20 0 65520 6208 5488 S 0.0 0.0 0:00.01 sshd 2017-03-20-10:04:23 2666 tim 20 0 24336 7136 3492 S 0.0 0.0 0:00.05 bash 2017-03-20-10:04:23 2710 tim 20 0 46984 5324 4644 S 0.0 0.0 0:09.08 ssh 2017-03-20-10:04:23 2783 root 20 0 105988 7184 6184 S 0.0 0.0 0:00.00 sshd 2017-03-20-10:04:23 2804 root 20 0 105988 7404 6408 S 0.0 0.0 0:00.00 sshd 2017-03-20-10:04:23 2909 tim 20 0 105988 5072 4072 S 0.0 0.0 0:00.20 sshd 2017-03-20-10:04:23 2931 tim 20 0 105988 4252 3224 S 0.0 0.0 0:00.00 sshd 
  • Как работает FireFox на виртуальной машине, которая не имеет отображения?
  • Как я могу перенаправить вывод в файл, когда программа построена с помощью библиотеки ncurses
  • htop процессорное время против верхнего процессорного времени
  • Как перенаправить максимальный результат на один процессор в файл?
  • Как предотвратить закрытие терминала при запуске программы с завершением?
  • Как я могу определить, какой процесс связан с IO?
  • Разница между выводами top и ps
  • Какие процессы меняют память
  • Как мне получить команду «top» для ее вывода?
  • Почему значение VSIZE в верхней части отличается от значения VSZ (размер виртуального набора) в ps?
  • Надежное определение свободной памяти
  • Linux и Unix - лучшая ОС в мире.