Meu Google-Fu está me deixando tão perto, mas não exatamente lá, e eu acho que sou muito verde no Linux para juntar as peças.
Eu tenho um arquivo de log muito grande > 200GB, ainda sendo gravado. Logrotate não vai chegar a tempo antes que o espaço em disco possa ser uma preocupação. Além disso, não quero disparar outra rodada de logrotate
, porque não quero que isso afete todos os outros destinos em sua configuração. Eu adicionei a nova sub-rotina no meu arquivo logrotate.conf
como tal:
/log/myDevice/myDevice.log {
compress
daily
rotate 360
maxage 360
missingok
compresscmd /usr/bin/xz
dateext
compressext .xz
copytruncate
olddir /log/archive/myDevice
}
Eu gostaria de fazer essas coisas manualmente:
- copytruncate: para extrair o arquivo de log atual, mas permitir que o syslog-ng continue navegando no arquivo aberto / ativo atual
-
(não acima no logrotate.conf)
split
: para dividir o registro atual em pedaços menores
-
xz
: comprimir para a pasta de arquivamento
Eu posso split(1)
e xz(1)
bem, mas quando eu tento pegar o arquivo de destino, não há dados.
Eu tentei sudo mv myDevice.log ZmyDevice.log && touch myDevice.log
, mas o syslog-ng apenas se move com o arquivo original (e seu novo nome) e mantém as gravações felizes. Que fez um pouco desde quando eu pensei sobre como o arquivo está sendo referenciado pelo syslog-ng.
Então, eu estou tentando descobrir como fazer algum tipo de manual copytruncate
, a fim de cortar o arquivo para outro "no lugar", por assim dizer, e deixar syslog-ng continuar chugging em que quer.