¿Cómo monitorear si se creó un archivo?

¿Cómo monitorear si se creó un archivo?

Necesito monitorear si, por ejemplo, el archivo/tmp/algunarchivo123fue creado después de algunos eventos. Intenté usarinotificaresperarpero aquí hay un problema:

# inotifywait -q -e create /tmp/somefile?*
Couldn't watch /tmp/somefile?*: No such file or directory

Debido a que no existe exactamente tal archivo, ¡quiero saber si estará allí!

¿Cómo puedo resolver este problema?

UPD: Quizás si explico a qué quiero llegar quedará más claro.

Necesito escribir un script de shell (sh) con un consumo mínimo de CPU, algo como esto:

if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then
    blah-blah-blah some actions
fi
# And then similarly monitor if this file was deleted and then do another actions

Espero que el script detenga la ejecución elinotifywait -e crea $SPECIFIC_FILEhasta que este $SPECIFIC_FILE no se cree y sería mejor entonces

while [ ! -f $SPECIFIC_FILE ]; do
    blah-blah-blah some actions
    sleep 1
done

Respuesta1

Por tenerinotificaresperarcomprobar eldirectorio de padres:

/tmp$ inotifywait -e create -d -o /home/me/zz /tmp
/tmp$ touch z1
/tmp$ cat ~/zz
/tmp/ CREATE z1

También puede especificar el formato de hora para el evento con el-timefmtopción. Además, si desea actuar inmediatamente ejecutando algún archivo de script, por ejemplo, puede utilizarcola -fen el archivo de script para monitorear continuamente el archivo de registro, aquí/home/yo/zz, o puedes crear untubería con nombrepresentar y tenerinotificaresperarescríbalo, mientras su script lo lee.

información relacionada