Как настроить политику хранения журнала для каждого блока с помощью journald?

find  -type d -name ".git"

это то, что вы ищете?

вы также можете сделать что-нибудь вроде

find  -type d -name ".git" -print0 | xargs -0 -r dirname

для вывода только имен каталогов без части /. Git ; вы даже можете избежать dirname и просто использовать вывод find плюс /../ в конце каждого имени папки.

find  -type d -name ".git" -print0 | xargs -0 -r printf "%s/../"

РЕДАКТИРОВАТЬ

Вы можете отменить параметр -name и поиграться со значением -maxdepth ; например, я могу легко перечислить все каталоги в моем дереве ядра, имена которых не начинаются с c (в верхнем или нижнем регистре).

find linux-4.8.2/ -type d ! -iname "c*" -maxdepth 1

Я до сих пор не совсем понимаю, что вы имеете в виду:

Я ищу полную противоположность этому, а именно команду, которая находит все файлы не в репозитории Git;

просто потому, что файлы, которые находятся в том же каталоге в той же файловой системе корневого каталога .git , могут даже не быть частью репозитория, это просто означает, что буквально есть файлы в том же каталоге ( или подкаталоги), где также есть каталог с именем .git . Помните, что git имеет концепцию постановки , и вообще то, что вы видите на диске, может не быть вашим репозиторием git.

Взгляните на https://libgit2.github.com/ , который является официальной библиотекой C для git, и для нее есть много привязок, а также множество документов, примеров и способов .

12
06.07.2018, 23:41
1 ответ

Создать файл журнала очень просто. По умолчанию все журналы в журнале также попадают в системный журнал, и это значение по умолчанию должно быть на месте. rsyslog.conf управляет тем, как обрабатываются записи, передаваемые в syslog. Кроме того, SyslogFacilityпо умолчанию имеет значение daemon, поэтому записи журнала для любой службы обычно заканчиваются в файле daemon.logв /var/log.

В вашем сервисном файле добавьте в раздел [service]

SyslogFacility=local2

(число может быть от 0 до 7)https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Измените /etc/rsyslog.conf (найдите существующие строки для изменения )так, чтобы local2 регистрировался в определенном файле (первая строка )и в идеале не регистрировался в системном журнале, добавив local2.noneкак показано (он уже есть в журнале ).

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[править] вам также нужно изменить весь охват

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

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

ХТХ

2
27.01.2020, 19:56

Теги

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