Программа, которая принимает стандартный ввод, затем записывает в файл с отметкой даты и времени?

Интересно, есть ли программа, которая будет делать то, что я хочу. Это похоже на программу ротации потокового журнала. Для командной строки linux/unix.

Допустим, у меня есть некоторый ввод, который передает некоторые данные. Я хочу записать это файл, но другой файл в день (или час или что-то еще), то есть открыть файл с указанным шаблоном на основе даты и времени и записать содержимое stdin в этот файл. когда день изменится (или час, или минута, или неделя и т. д.), закройте этот файл, затем снова откройте новый (который будет иметь новое имя файла) и вместо этого запишите строки в этот файл?

Так что-то вроде:

my long | process | that's generating | input | datestampfilewriter --daily 'output.%Y-%m-%d.txt'

Этот инструмент существует?

2 ответа

Решение

Вы могли бы использовать cronolog.

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

Как насчет logger? Журналы в системный журнал, который "дата" и может быть logrotateд.

И с -f опция записывает в файл. Увидеть man logger,

Другие вопросы по тегам