2

В настоящее время у меня есть что-то вроде этого:

./player_script |grep "videoname" >> log.log &

Выходные данные player_script показывают, когда начинается и заканчивается видео, затем grep берет только определенные имена видеофайлов и помещает их в log.log .

Так что log.log будет выглядеть примерно так:

video <videoname> is playing now
video <videoname> ended
video <videoname> is playing now
video <videoname> ended

... и так далее.

Мне нужна временная метка, когда файл начинается и заканчивается в каждой новой строке в следующем формате:

Feb 28 15:35:32 video <videoname> is playing now

Мне также нужна дата в файле журнала: log2012-02-29.log .

Это выполняется на Solaris 5.8 и 5.9.

2 ответа2

3

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

log`date '+%Y-%m-%d'`.log

Обратите особое внимание, что есть «обратные пометки», которые переносят команду даты. Это говорит оболочке выполнить это первым и добавить результаты в вашу командную строку, чтобы сделать ее частью вашего имени файла.

0

Для первой части (немного в темноте, поскольку у меня есть доступ только к Solaris 11), решение сценария sh :

./player_script | grep "videoname" | while read line;
     do echo `date '+%Y-%m-%d:%H:%M:%s'` $line;
     done >> log`date '+%Y-%m-%d'`.log

Обратите внимание, что проще отсортировать несколько строк журнала по дате, если вы используете такой формат, как +%Y-%m-%d...

Вы также должны быть осторожны, чтобы player_script или grep не буферизировали данные, если вы хотите точные метки времени в ваших записях журнала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .