Сохраняйте файл журнала выполнения сценария оболочки до последних нескольких дней - PullRequest
1 голос
/ 21 июля 2011

Добавляю стандартный вывод и ошибку выполнения скрипта оболочки на боксе Unix, как показано ниже

/home/mydir/shellScript.sh >> /home/mydir/shellScript.log 2>&1

Теперь я задаюсь вопросом, как вернуть журналы назад, как, скажем, 30 дней, иначе размер файла журнала будет увеличиваться. Был бы признателен, если кто-нибудь может дать рекомендации примерно так же.

Ответы [ 4 ]

4 голосов
/ 21 июля 2011

Этот тип мышления обычно делается с помощью такого инструмента, как logrotate.

Например, в журналах Apache я видел, что он использовалto:

  • Один раз в день перемещайте текущий файл в другой (чтобы иметь один файл журнала в день), распаковывая полученный файл за день до
  • Удалите архивированный файл, которыйбыли старше 1 недели

Итак, я полагаю, вы могли бы использовать его, чтобы получить то, что вы просите.

2 голосов
/ 21 июля 2011

Это долгосрочный сценарий (например, демон)? Или он что-то делает, потом быстро выходит? Вы можете динамически построить имя файла журнала на основе сегодняшней даты, поэтому каждый раз при изменении даты создается новый файл:

#/bin/sh
now=`date +%F`
/home/mydir/shellScript.sh >> /home/mydir/shellScript-$now.log 2>&1
previous=`date --date='30 days ago' +%F`
rm -f /home/mydir/shellScript-$previous.log 2>&1

(добавлено удаление устаревшего журнала).

1 голос
/ 21 июля 2011

Pascal MARTIN верен - просто вставить файл конфигурации в /etc/logrotate.d или добавить запись в конец файла /etc/logrotate, так как logrotate входит в стандартную комплектацию большинства систем UNIX.Это очень простой для понимания файл конфигурации, который занимает примерно 5 минут.на странице руководства, чтобы понять.Я рекомендую его как самое простое и удобное в обслуживании решение.

0 голосов
/ 21 июля 2011

Там не так много контекста для вашей проблемы.

Я согласен с обоими предлагаемыми решениями.

Я бы также указал вам на мои 2 довольно скучных рассуждения ;-) по именованию и управлению лог-файлами.

Вывод трубопровода Bash и ввод программы

мудрость командной строки для 2-х панельного пользователя файлового менеджера

Надеюсь, это поможет.

...