Назад | Перейти на главную страницу

Сжимайте и удаляйте логи из jboss в Linux с помощью cron

Мне нужно сжать и удалить файлы журнала через некоторое время с сервера. Раньше я никогда не писал скриптов. Пока у меня есть сценарий logs.sh:

#!/bin/bash
LOGS=/usr/local/jboss/server/default/log/
INFOLOG="server.log"
ERRORLOG="error.log"
BOOTLOG="boot.log"

# gzip files last modify at least 7 days ago, and not files that are identified above and that have already been compressed
find $LOGS -mtime +7 -not -name "$INFOLOG" -not -name "$ERRORLOG" -not -name "$BOOTLOG" -not -name '*.gz' -exec gzip "{}" \;

# remove all logs older than 90 days
find $LOGS -mtime +90 -not -name "$INFOLOG" -not -name "$ERRORLOG" -not -name "$BOOTLOG" -print0 | xargs -0 -I xxx rm xxx 

и я использую cron для этого каждые 5 минут после 1 часа ночи с jboss-logs.sh

5 1 * * * /usr/local/jboss/server/default/logs.sh

и добавьте cron с помощью crontab /root/jboss-logs.sh

Это правильно? будет ли он сжимать файлы старше 7 дней и удалять файлы старше 90? Будет ли работать? Это безопасно - особенно удаление?

Использовать logrotate повернуть бревна.

В /etc/logrotate.d/ вы найдете несколько уже установленных шаблонов поворота.

По сути, вы определяете шаблон для ежедневной обработки файлов.

Logrotate запускается cron.daily.

Использовать man logrotate чтобы узнать больше о простом синтаксисе на основе строк.

newsyslog.conf содержит именно то, что вам нужно.

newsyslog периодически проверять файлы и вращать / сжимать / удалять файлы. Также newsyslog может отправлять сигналы процессам, которые инициируют повторное открытие файлов журнала.