
¿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 now
o un comando similar.
Respuesta2
Creo que encontré la herramienta. No es perfecto para lo que estoy buscando, pero lo haré funcionar.
es un vmtouch
comando, se puede encontrar enhttps://github.com/hoytech/vmtouch
gracias.