Сохранить вывод даты и посмотреть команду в файл

35272
LoudKur

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

смотреть -t -n 10 "(дата '+ ВРЕМЯ:% H:% M:% S'; ps aux | grep" pattern "| wc -l)" >> logfile

и ожидаю такой результат, как

TIME: 10:32:30 12 TIME: 10:32:40 18 TIME: 10:32:50 2 

храниться в лог-файле. Тем не менее, когда в лог-файле есть непечатаемые символы в. Как я могу получить такой вывод из команды li

20

6 ответов на вопрос

32
Kasun Gajasinghe

Это можно легко сделать используя watchтоже без использования скриптов.

watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"

Правильный. Я написал то, что у меня было на Mac, где часы не доступны из коробки, и выбрал портативное решение. Ваш намного проще. Kirk 10 лет назад 1
Другими словами, включите канал в `tee -a logfile` * внутри * аргумента, передаваемого в` watch`. Очень чисто, спасибо. Wildcard 8 лет назад 1
18
Kirk

Чтобы сделать то, что вы ищете, простой скрипт (как указал @Ignacio) должен выполнить свою задачу:

while true do echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile sleep 2 done 

Я использую teeвместо того, >>чтобы вы могли видеть вывод на вашем терминале, а также захватить его в своем журнале.

Я, кажется, получаю ошибку с 1 в первой строке. Но когда я изменил это на истину, это сработало. Однако выходные данные на экране показывают время и счет в двух разных строках, а в файле журнала просто отображается только счет. Есть ли способ получить время и рассчитывать на одну и ту же строку в файле журнала? LoudKur 12 лет назад 0
Ах да, потому что команда tee работает только для `ps`. Я изменю свой ответ. Kirk 12 лет назад 0
Работает отлично! Благодарю. Можно ли как-нибудь добавить метку времени в файл журнала, чтобы она сохранялась в уникальных файлах? LoudKur 12 лет назад 0
Вы имеете в виду имя лог файла? Вы можете сделать что-то вроде logfile. $ (Date +% Y% m% d), чтобы создавать новый файл журнала каждый день. Kirk 12 лет назад 0
Я сделал это. Прикрепленный код как ответ на этот вопрос. Спасибо! LoudKur 12 лет назад 0
7
Ignacio Vazquez-Abrams

watchпредназначен для вывода на дисплей. Если вы просто хотите запускать команду каждые X секунд, вам просто нужно использовать цикл задержки для этого.

while true ; do somecommand ; sleep 2 ; done 
5
Darth Android

watch - это программа ncurses, предназначенная для запуска в окне консоли (не перенаправленная), поэтому она создает набор непечатных символов (это управляющие символы, которые управляют и перемещают курсор для перерисовки экрана).

Вы можете попробовать переместить команды date / grep в скрипт, а затем вызвать этот скрипт из cronjob.

3
LoudKur

Хорошо, я поместил его в скрипт и получил следующий код:

#!/bin/sh NOW=$(date '+%Y%m%d%H%M%S') LOGFILE="log.$NOW"  while true do echo $(date '+[TIME: %H:%M:%S] Output: ' ; ps aux | grep "pattern" | wc -l ) | tee -a $LOGFILE sleep 2 done 
0
Bruno Bronosky

Я столкнулся с этим вопросом, когда я пытался получить лучший / зарегистрированный вывод du -sh $data_path. Я использовал шаблон "while command, do sleep", найденный здесь, но использовал какой-то сложный AWK, чтобы получить желаемый результат.

while du -sh $data_path; do sleep 1; done | awk ' $1 != size { size=$1; path=$2; time=systime(); seconds=time-prevtime; if(seconds < 1000000000){ seconds=seconds" seconds" }else{ seconds="" } print size, path, strftime("%m/%d/%Y@%H:%M:%S", time), seconds;  prevtime=time }' 

Я на самом деле сделал это как вкладыш, поэтому есть точки с запятой. Но чтобы сделать его читабельным, я разбил его. Вывод выглядит так:

502G /var/lib/cassandra/dump/ 05/22/2018@04:46:17 503G /var/lib/cassandra/dump/ 05/22/2018@04:46:59 42 seconds 504G /var/lib/cassandra/dump/ 05/22/2018@04:47:57 58 seconds 505G /var/lib/cassandra/dump/ 05/22/2018@04:48:55 58 seconds 506G /var/lib/cassandra/dump/ 05/22/2018@04:49:53 58 seconds 507G /var/lib/cassandra/dump/ 05/22/2018@04:50:50 57 seconds 508G /var/lib/cassandra/dump/ 05/22/2018@04:51:46 56 seconds 509G /var/lib/cassandra/dump/ 05/22/2018@04:52:44 58 seconds 510G /var/lib/cassandra/dump/ 05/22/2018@04:53:41 57 seconds 

Похожие вопросы