
Como posso saber se um arquivo ou arquivos estão em estado adiado usando o bash? Existe uma maneira de detectar isso?
amostra:
ao salvar um arquivo, o kernel armazena em cache o arquivo e ainda não foi gravado no disco. este é o estado D ou estado diferido. quando estiver em estado adiado, quando você verificar o arquivo como php -r "var_dump(file_exists($filename));"
, o kernel responderá, sim, o arquivo está lá. mas, na realidade, o arquivo ainda não foi gravado no disco. e quando o servidor foi reiniciado, o arquivo desapareceu.
o evento aconteceu conosco e quero evitá-lo ou criar uma ferramenta de monitoramento que o detecte e nos avise para que possamos copiar os arquivos em outro servidor antes de reiniciá-lo.
Responder1
Acho que você está diante de um "problema" errado. Quando o sistema for reiniciado corretamente, o processo de desligamento garantirá que todos os dados sejam gravados no armazenamento permanente.
Então, o problema aqui é que a reinicialização é feita de forma errada, o que causa perda de dados. Você precisa alterar sua reinicialização para usar shutdown -r now
um comando semelhante.
Responder2
acho que encontrei a ferramenta. não é perfeito para o que procuro, mas farei funcionar.
é um vmtouch
comando, pode ser encontrado emhttps://github.com/hoytech/vmtouch
obrigado.