¿Cómo se detecta si el archivo está en estado diferido?

¿Cómo se detecta si el archivo está en estado diferido?

¿Cómo sé si un archivo o archivos están en estado diferido usando bash? ¿Hay alguna manera de detectar esto?

muestra:

al guardar un archivo, el kernel almacena en caché el archivo y aún no está escrito en el disco. este es el estado D o estado diferido. cuando está en estado diferido, cuando verifica el archivo como php -r "var_dump(file_exists($filename));", el kernel responderá, sí, el archivo está allí. pero en realidad el archivo aún no estaba escrito en el disco. y cuando el servidor se reinició, el archivo desapareció.

El evento nos sucedió a nosotros y quiero evitarlo o crear una herramienta de monitoreo que lo detecte y nos notifique para que podamos copiar los archivos en otro servidor antes de reiniciarlo.

Respuesta1

Creo que estás ante un "problema" equivocado. Cuando el sistema se reinicia correctamente, el proceso de apagado garantizará que todos los datos se escriban en un almacenamiento permanente.

Entonces, el problema aquí es que el reinicio se realiza de manera incorrecta, lo que provoca la pérdida de datos. Debe cambiar su reinicio para usar shutdown -r nowo un comando similar.

Respuesta2

Creo que encontré la herramienta. No es perfecto para lo que estoy buscando, pero lo haré funcionar.

es un vmtouchcomando, se puede encontrar enhttps://github.com/hoytech/vmtouch

gracias.

información relacionada