Сохраните размер файла журнала зафиксированным без logrotate

Кто-либо попытался делать его через ssh_config? Возможно, это могло помочь http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86

Кроме того, удостоверьтесь, что PasswordAuthentication установлен на не также, чтобы вынудить все логины использовать открытые ключи.

13
20.05.2011, 17:37
6 ответов

Вы могли записать немного сценария удара, чтобы сделать это. Просто выследите файл к определенному использованию количества байта tail -c и перезапишите файл.

от man tail:

-c, --bytes=N
              output the last N bytes; alternatively, use +N to  output  bytes
              starting with the Nth of each file

   If  the  first  character of N (the number of bytes or lines) is a `+',
   print beginning with the Nth item from the start of each  file,  other‐
   wise, print the last N items in the file.  N may have a multiplier suf‐
   fix:  b  512,  kB  1000,  K  1024,  MB  1000*1000,  M   1024*1024,   GB
   1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
4
27.01.2020, 19:54
  • 1
    я относительно уверен, что, после того как Вы "перезаписываете файл" вход, не возобновится автоматически на новом файле. –  Stephen Jazdzewski 13.08.2010, 17:41

Ваше единственное решение может состоять в том, чтобы записать Вашу собственную файловую систему пространства пользователя или способствовать существующей. Посмотрите на частичный список в Файловой системе в Пространстве пользователя

Если у Вас нет навыков для содействия, предложите рекламу проекта или $$$ или обоих, для добавления его для Вас.

Мне жаль, что у меня не было времени, чтобы сделать это, я всегда хотел что-то точно как это.

0
27.01.2020, 19:54

Можно сделать что-то подобное использование FIFO, который является видом подобных, нулевой байт измерил файл.

Однако обратите внимание, что, если ничто не ЧИТАЕТ из этого файла, затем процесс системного журнала может блокироваться и прекратит писать во ВСЕ Ваши файлы журнала. Я не уверен, было ли это поведение изменено с более новыми версиями Ubuntu/CentOS.

Один пример здесь

Для другого примера попробуйте что-то вроде этого.

Сделайте свой FIFO:

sudo mkfifo /var/log/everything.fifo

И добавьте это к (r) syslog.conf, затем перезапустите системный журнал:

*.*     |/var/log/everything.fifo

Затем просмотрите FIFO из одного окна:

cat /var/log/everything.fifo

И в другом окне, отправьте некоторый материал в системный журнал:

logger Test1
logger Test2
logger Test3

Необходимо видеть "Тест*" строки в выводе cat выше.

Эта особенность может быть замечательной для отладки, особенно если Вы не хотите иметь в наличии данные для дольше. Например, если Вы только хотите видеть все за исключением thefirewall спама, можно сделать что-то вроде этого:

grep -vi "kernel: .* on wan" /var/log/everything.fifo
0
27.01.2020, 19:54

Вот мой второй ответ. Это - симпатичный hackish.

Используйте часы (1) для повторного выполнения tail --bytes=1024 (последние 1 024 байта файла журнала, благодаря @jjclarkson для того ответа).

watch --no-title tail --bytes=1024 /var/log/messages >/tmp/messages.watch

И затем просмотрите файл с:

less --raw-control-chars /tmp/messages.watch

Разница между watch и некоторое время цикл - это watch только обновит/tmp/messages.watch, если были изменения в/var/log/messages.

while true; do
    tail --bytes=1024 /var/log/messages > /tmp/messages.watch
    sleep 1
done

И хорошо, я предполагаю, что Вы могли поместить a test в цикле с условием продолжения так, чтобы хвост был только выполнен, если/var/log/messages был обновлен, но я не пойму это теперь.

0
27.01.2020, 19:54
 *      prune - clips off the tops of a list of files described in the
 *              file /etc/default/prune. Designed to be run periodically
 *              from cron, the idea is to automatically shorten log
 *              files that grow forever. This file contains a list of
 *              files (full pathname), and the number of blocks that
 *              should be retained.  To retain some sanity, prune will
 *              clip the file after the next newline. The file
 *              /etc/default/prune should look something like:
 *
 *                      /usr/adm/aculog         10
 *                      /usr/adm/leo.log        5
 *                      /usr/adm/messages       200
 *                      /usr/adm/sup_log        5
 *
 *              The crontab entry on infoswx for prune looks like:
 *
 *                      0 5 * * * /etc/prune >/usr/adm/prune.log 2>&1
 *
 *              Compile with:  cc -O -o prune prune.c
 *
 *              The following defines may be adjusted to suit your taste
 *              and your system block size.
 *
 *      Ray Davis  infoswx!bees  09/25/85

https://groups.google.com/group/mod.sources/browse_thread/thread/b2136b3ab7e924e/f785b37c218bb576? hl=en&ie=UTF-8&q=prune+log+file&pli=1

Многие (большинство? все?) демоны вновь откроют свои файлы журнала, если отправлено Сигнал HUP (например, тем же заданием крона, которое выполняет чернослив),

0
27.01.2020, 19:54

Я уверен, что оригинальный постер нашел решение спустя 8 лет. Вот еще один для тех, кто может читать эту ветку...

curtail ограничивает размер вывода программы и сохраняет последние 200 МБ вывода с помощью следующей команды:

запустить _программу | урезать -s 200M myprogram.log

https://github.com/Comcast/Infinite-File-Curtailer

1
27.01.2020, 19:54

Теги

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