Minimize ou desative o cache de write-back e seu tempo limite.
/proc/sys/vm/dirty_background_ratio
dirty_ratio
dirty_expire_centisecs
dirty_writeback_centisecs
Observo que syslog file ( /var/log/messages ) não parece capturar o log mais recente possível antes do desligamento abrupto do sistema. (Meu sistema Linux está em execução e, de repente, há uma perda de energia.) Como garantir que syslog capture o máximo de logs possíveis antes do desligamento abrupto?
Minimize ou desative o cache de write-back e seu tempo limite.
/proc/sys/vm/dirty_background_ratio
dirty_ratio
dirty_expire_centisecs
dirty_writeback_centisecs
Bem, existem duas maneiras de um sistema ficar inativo.
Desligamento normal: Neste caso, cada processo em execução no sistema tem a chance de gravar alguns registros, liberar os buffers no disco antes de descer. Nesse caso, em /var/log/messages você pode ver
kernel: Kernel logging (proc) stopped.
rsyslogd: exiting on signal 15.
Desligamento abrupto: Aqui os aplicativos não terão a chance de gravar logs, filesystem não terá a chance de liberar os dados no disco. Mas se esse é o cenário que você está enfrentando, talvez você queira verificar o hardware do sistema como HDD , SSD and power supply [ for any unwanted fluctuations ] para depurar o problema com eficácia.
Mas como recurso para persistir frequentemente os dados do cache para o disco. Periodicamente, você pode tentar executar o comando sync , que libera os buffers do sistema de arquivos. Para mais checkout man sync
Observe que, se você estiver usando o formato legado rsyslog no seu /etc/rsyslog.conf com uma linha como
*.=info;... -/var/log/messages
você pode remover o prefixo - antes do nome do arquivo, e isso fará com que o syslog sincronize o arquivo após cada gravação. Consulte arquivos comuns .