/var/log/messages бесконечно разрастается, потому что rsyslog не позволяет его удалить

Использование ksh, например.

(
  for URL in http://host.com/url1 http://host.com/url2 http://host.com/url3
  do
    wget -O - -q "$URL"
  done
) | gzip -c > mysingle.zip

Теперь все данные заархивированы в один файл, но это не совсем архив :вы не можете извлечь один из файлов, вам нужно будет добавить разделитель в цикле.

1
24.01.2020, 19:29
2 ответа

Во многих дистрибутивах это должно работать через logrotate, который вызывается из cron или системного таймера каждый день. Logrotate ищет его конфигурацию, например, в /etc/logrotate.d. Например, в Debian вы найдете /etc/logrotate.d/rsyslog, который ротирует/var/log/messages(и множество других лог-файлов ), вот выдержка:

/var/log/messages
{
        rotate 4
        weekly
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

После ротации файлов он сообщает rsyslog закрыть старый файл журнала (, что вы и сделали, перезапустив rsyslog )запустив /usr/lib/rsyslog/rsyslog-rotate, который отправляет SIGHUPв rsyslogd. Демон закроет файлы, когда получит SIGHUPбез перезапуска; см. раздел «Сигналы» в rsyslogd (8).

2
27.01.2020, 23:22

Используйтеlogrotate

цитата из справочной страницы

logrotate reads everything about the log files it should be handling from the series of configuration files specified on the command line. Each configuration file can set global options (local definitions override global ones, and later definitions override earlier ones) and specify logfiles to rotate. A simple configuration file looks like this:

# sample logrotate configuration file
compress

/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

The next section of the config files defined how to handle the log file /var/log/messages. The log will go through five weekly rotations before being removed. After the log file has been rotated (but before the old version of the log has been compressed), the command /sbin/killall -HUP syslogd will be executed.

1
27.01.2020, 23:22

Теги

Похожие вопросы