Я рассматриваю Tux как веб-сервер для нового зеркала CPAN, которое я создаю. У меня он работает, и он очень быстрый, но есть одна большая загвоздка: как мне повернуть файл журнала?
Файл журнала настраивается, и я использую значение по умолчанию / var / log / tux.
Один из вариантов - копирование и усечение; например.:
cp /var/log/tux /var/log/tux.1
cat /dev/null > /var/log/tux
Приложение logrotate может сделать это за меня, но, поскольку файл журнала является двоичным, я обеспокоен тем, что в какой-то момент это может привести к повреждению.
Если он испортит только одну запись, я могу жить с этим - я боюсь, что весь файл журнала может быть потерян.
Кто-нибудь, у кого есть опыт, может сделать предложение?
Спасибо
Прежде чем я что-то предлагаю «TUX никогда не был составной частью официального ядра Linux». Вы уверены, что хотите поддерживать исправления ядра самостоятельно?
Лично я бы попытался создать канал, в который пишет tux, а затем использовать ротация журналов (из Apache), чтобы справиться с этим. Может быть, даже регистратор, чтобы использовать системный журнал напрямую.
rotatelogs может обрабатывать ротацию на основе времени или размера для вас, если вы не отправляете журналы на центральный сервер журналов, я бы использовал это, если вы отправляете на центральный сервер журналов, я отправляю его в syslog, просто позвольте syslog создайте еще один сокет, в который tux будет писать (предпочтительно / var / log / tux), и syslog должен остальное сделаем за вас ...
Вы можете попробовать что-то вроде этого, что я написал для катания логов nginx. Я искал некоторые подробности о tux
пользовательского пространства, но не удалось найти способ заставить его повторно открыть журналы, поэтому вам, возможно, придется прибегнуть к остановке и запуску процесса.
#!/bin/bash
YEAR=`date "+%Y"`
MONTH=`date "+%m"`
DAY=`date "+%d"`
HOSTNAME=`hostname -s`
LOG_FILES="access.log error.log images.log redirect.log ssl.log click.log uploads.log urchin.log user_sites.log"
DATE=$YEAR/$MONTH/$DAY
LOG_ROOT=/var/log/
NGINX_LOG_ROOT=$NGINX_LOG_ROOT/nginx
# make path
mkdir -p $NGINX_LOG_ROOT/$DATE
# touch and symlink in new log files
for FILE in $LOG_FILES; do
LOG_FILE=$NGINX_LOG_ROOT/$DATE/$HOSTNAME.$FILE
touch $LOG_FILE
ln -fs $LOG_FILE $NGINX_LOG_ROOT/$FILE
done
# tell nginx to re-open its log files
kill -USR1 `cat /var/run/nginx.pid`
Мне здесь немного любопытно: что вы ожидаете от входящих запросов в секунду, если вам нужен HTTP-движок, работающий внутри вашего ядра? Разве tinyhttpd не достаточно быстр?