Quiero que una secuencia de comandos duerma a menos que se modifique/elimine un determinado archivo (o un archivo creado en un determinado directorio, o...). ¿Se puede lograr esto de alguna manera elegante? Lo más simple que me viene a la mente es un bucle que duerme durante un tiempo antes de volver a comprobar el estado, pero tal vez haya una forma más elegante.
Respuesta aceptada:
En Linux, puede usar el inotify
del kernel rasgo. Las herramientas para secuencias de comandos se pueden encontrar allí:inotify-tools.
Ejemplo de uso de wiki:
#!/bin/sh
EVENT=$(inotifywait --format '%e' ~/file1) # blocking without looping
[ $? != 0 ] && exit
[ "$EVENT" = "MODIFY" ] && echo 'file modified!'
[ "$EVENT" = "DELETE_SELF" ] && echo 'file deleted!'
# etc...