Comando Bash – eliminación de directory

Tengo un problema muy extraño. En una de mis cajas con la implementación de Hudson, la carpeta de copy de trabajo (que es básicamente una verificación de SVN) se borra continuamente cada noche. No es un gran problema; en su mayoría extraño y molesto. Debido a esto, todas las mañanas, tengo que realizar un pago completo en lugar de actualizar / cambiar. No es un problema de configuration en Hudson hasta donde yo sé, y he comprobado cada file crontab para verificar que no sea eso.

En Linux, ¿hay un script bash o alguna línea de command mágico para mirar una carpeta, save el historial de cuándo se borra y quién lo elimina? De esta manera, puedo networkingucir lo que está realizando la eliminación real.

Es posible que se encuentre con JENKINS-8880 en el que las áreas de trabajo personalizadas en el espacio de trabajo / directory del nodo se eliminan todas las noches. La solución es actualizar a 1.427 (o posterior) o colocar espacios de trabajo personalizados fuera del espacio de trabajo / directory.

Me encontré con algo similar, lo que hice fue doble. Primero, inicié la contabilidad completa del sistema, esto registra qué processs se ejecutan y cuándo. Puede restringir el "cuándo" al mirar la última hora del mod del directory principal.

Pero no creo que los loggings de contabilidad muestren suficientes detalles (arguments del process, process principal, etc., esto fue en Solaris, es posible que obtenga más opciones de logging en Linux). Entonces, lo que terminé haciendo fue cambiarle el nombre a "rm" y escribir un guión de shell llamado "rm" que llamó al real, después de registrar los parameters de input, qué process lo llamó y quién era el propietario del process de llamada.

Si un process llama a la llamada del sistema de desvinculación en lugar de rm, puede que tenga que recurrir a la fuente de su biblioteca de C y agregar una funcionalidad de logging similar a la llamada de desvinculación.

No estoy seguro de que esta pregunta deba labelrse como "bash". Muchas cosas podrían estar borrando esta carpeta, y bash no incluye su propio código para eliminar cosas.

Una opción para rastrear lo que está sucediendo sería imposibilitar la eliminación del directory, luego ver si algo en Hudson (o en otro lugar) se queja de un error. Puede establecer un indicador "inmutable" en la carpeta principal, o en cualquier file, y una eliminación fallará.

En BSD (FreeBSD / NetBSD / etc), use:

sudo chflags schg /path/to/directory_or_file 

En Linux, usa:

 sudo chattr +i /path/to/directory_or_file 

Ahora, asegúrate de get (en lugar de filtrar o entregar nulo) todos tus posts raíz y cron, upload el nivel de debugging en Hudson (si tiene uno, no tengo ni idea), luego mirar y ver qué pasa .

Tenga en count que si agrega el marcador inmutable (o schg) a una carpeta, eso NO protege el contenido de las subcarpetas. Solo hace que sea imposible eliminar el directory, o agregar o quitar files de él.

 [ghoti@pc ~]$ mkdir zzz zzz/foo [ghoti@pc ~]$ touch zzz/bar [ghoti@pc ~]$ sudo chflags schg zzz [ghoti@pc ~]$ touch zzz/baz touch: zzz/baz: Operation not permitted [ghoti@pc ~]$ touch zzz/foo/baz [ghoti@pc ~]$