Как сказать rsyslog создавать файл журнала если не там?

Кажется, нет способа использовать sysctls, чтобы определить, включили ли системе гиперпоточность или нет. hw.ncpu просто сообщит ядру, сколько центральных процессоров доступно, который будет включать ядра, гиперпотоки и отдельные процессоры.

Кроме того, ссылка от принца John Wesley с 2006, и больше не кажитесь релевантными.

Так, как я очень не хочу держать dmesg, можно сделать следующее (на FreeBSD 8.x):

dmesg | grep SMT

Гиперпоточные системы должны возвратить результат. Не гиперпоточные системы не должны.

12
30.09.2013, 22:09
2 ответа

От POV rsyslog все еще существует удаленный файл журнала. Это вызвано тем, что rsyslog не пишет в имя файла, он пишет в дескриптор файла, который он имеет открытый для файла журнала.

Системы Unix на самом деле не удаляют файл, пока нет никаких процессов с открытыми дескрипторами в файл. Это означает, что дисковое пространство, используемое удаленным файлом, не освобождено, пока любой и все открытые дескрипторы файлов не закрываются. Это также означает, что любые процессы с открытыми дескрипторами файлов в удаленный файл могут продолжить читать из и/или писать в файл.

Отправка Сигнала HUP (например, через pkill -HUP rsyslog или /etc/init.d/rsyslog rotate) к rsyslog говорит этому закрыть все свои открытые файлы, перезагрузить его файл конфигурации и вновь открыть все файлы журнала для записи (создающий их при необходимости).

Перезапуск rsyslogd также работает.

Обратите внимание, что это - функция, не ошибка, с некоторыми полезными последствиями - например, это - почему rsyslog продолжает писать в тот же файл журнала даже после того, как она была повернута (т.е. renamed/mv-ed), пока rsyslog не получает Сигнал HUP. Это означает, что обрабатывающие журнал сценарии и утилиты не должны быть тщательно тщательны относительно синхронизации - они могут просто повернуть все журналы, отправить rsyslog ПОНУКАНИЕ, и все продолжает работать без потери данных логов.

BTW, единственный путь к этому для не случая с rsyslog был бы этим, если закрыто и вновь открыто каждый файл журнала на каждой записи (или по крайней мере названный sync()). Производительность была бы плачевна.

10
27.01.2020, 19:56
  • 1
    Вы знаете от руки, если уничтожение - ПОНУКНЕТ к rsyslog, то инициирует его, чтобы начать писать в новый файл? –  slm♦ 27.09.2013, 01:50
  • 2
    , который Вы имеете в виду, если rsyslog.conf изменился и существует новый определенный файл журнала? да, это определенно создаст и начнет писать в новый файл при получении ПОНУКАНИЯ... это - часть точки его, перезагружая конфигурацию. –  cas 27.09.2013, 01:57
  • 3
    OK, это - то, что я предложил в своем 3-м методе, Спасибо! –  slm♦ 27.09.2013, 02:00
  • 4
    проблемой является rsyslog, работает, Вы удаляете файл журнала приложения (не перезапуская rsyslog), и затем больше трассировки не будет зарегистрировано, поскольку rsyslog не создаст файл журнала, если не там, пока это работает... –  fduff 01.10.2013, 11:19
  • 5
    , поскольку я сказал от POV rsyslog, что дескриптор файла все еще существует. это не закроется и re-open/re-create файлы журнала, пока Вы не скажете это путем перезапуска его или с Сигналом HUP. rsyslog делает то, что Вы говорите ему делать, не больше. что еще более важно, проблема не находится в том, что rsyslog делает, а в Вашем понимании поведения rsyslog и почему это ведет себя как этот. –  cas 01.10.2013, 16:19

$FileCreateMode

Разве эта опция не делает то, что Вы хотите, $FileCreateMode?

выборка

$FileCreateMode 0600

This sample lets rsyslog create files with read and write access only for the 
users it runs under.

The following sample is deemed to be a complete rsyslog.conf:

$umask 0000 # make sure nothing interferes with the following definitions
*.* /var/log/file-with-0644-default
$FileCreateMode 0600
*.* /var/log/file-with-0600
$FileCreateMode 0644

*.* /var/log/file-with-0644

Выходной модуль файла

Соответственно rsyslog документация, Аргумент файла Выходного Модуля Файла мог использоваться, чтобы сделать это.

выборка omfile модуль

Файл

Если файл уже существует, новые данные добавляются к нему. Существующие данные не являются усеченными. Если файл уже не существует, он создается. Файлы сохранены открытыми, целый rsyslogd активен. Это конфликтует с внешним вращением файла журнала. Для закрытия файла после вращения отправьте rsyslogd Сигнал HUP после того, как файл был повернут далеко.

Отправьте системному журналу Сигнал HUP

Я думаю в конечном счете, что необходимо "инициировать" rsyslog, чтобы сделать это. Я не думаю, что это будет, что Вы хотите автоматически. Таким образом, Вы могли дать ему Сигнал HUP для инициирования воссоздания файла журнала после того, как это удалено.

$ sudo pkill -HUP rsyslog

Выполнение так создало следующие сообщения в моем /var/log/messages файл журнала:

Sep 26 15:16:17 grinchy rsyslogd: [origin software="rsyslogd" swVersion="4.6.3" x-pid="1245" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Sep 26 15:16:44 grinchy rsyslogd: [origin software="rsyslogd" swVersion="4.6.3" x-pid="1245" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
3
27.01.2020, 19:56
  • 1
    Нет, я использовал его для установки полномочий файла, и это хорошо работает. Проблема состоит в том, что, если файл журнала был удален, системный журнал не попытается создать его перед регистрирующимся сообщением. –  fduff 26.09.2013, 21:31
  • 2
    Это было удалено, и сервер не был перезапущен? –  slm♦ 26.09.2013, 21:33
  • 3
    точно. Я делаю некоторые тесты, и я столкнулся с этой особенностью... –  fduff 26.09.2013, 21:34
  • 4
    @fduff - видят мои обновления, пробуют 3-е! –  slm♦ 26.09.2013, 22:17

Теги

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