La forma correcta de hacer esto es hacer que el proceso de escritura de los archivos y renombrarlos o moverlos por su propia voluntad se realice con la escritura. Cualquier otra cosa es propensa a condiciones de carrera y / o problemas de permisos.
Algunos ejemplos particulares de casos de problemas:
- Si el proceso de mover los archivos se ejecuta como un usuario diferente al de lsof / fuser / etc, la información no se garantiza completa
- Si el proceso de escritura es un script de shell, puede generar un subproceso que abre el archivo, deja que se cierre, genera otro subproceso, etc. En este escenario lsof, el fusor y herramientas similares podrían mostrar legítimamente que no se pudo acceder al archivo incluso si se iniciará un nuevo subproceso para escribir en él más tarde.
También pueden existir otras condiciones de carrera más sutiles, e independientemente de esto, lsof, fuser y demás no son herramientas POSIX y no están disponibles en todas partes.
Requerir del protocolo que los procesos que escriben los archivos los muevan a la ubicación final al completarse; Es el único enfoque seguro y portátil.
EDITAR: Se ha aclarado que los archivos se escriben no mediante un proceso arbitrario (que puede cerrarlos y volver a abrirlos), sino mediante un servidor FTP. En este caso, incron se puede usar para ejecutar un script arbitrario siempre que un archivo se haya cerrado en este directorio.