Как перенести стандартный вывод из bash? - PullRequest
3 голосов
/ 18 сентября 2009

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

Ответы [ 4 ]

6 голосов
/ 18 сентября 2009

Передайте вывод в что-то вроде multilog , он будет обрабатывать все эти вещи для вас.

И пример:

script_that_produces_output.sh |multilog s2000 ./logdir

запустит сценарий захвата стандартного вывода в файл с именем ./logdir/current, повернув его, если его размер превышает 2000 байт.

1 голос
/ 18 сентября 2009
0 голосов
/ 27 июня 2018

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

your_script.sh | rotatelogs /var/log/your.log 100M

автоматически повернет выходной файл, когда он достигнет 100M (может быть настроен на поворот на основе временного интервала).

0 голосов
/ 19 сентября 2009

Помимо multilog, есть также похожий инструмент под названием svlogd из набора runit . Возможно, вы уже нашли это в своем дистрибутиве, поскольку daemontools (multilog) только недавно стала общественным достоянием.

...