Me gustaría evitar que uno de mis procesos raíz elimine un determinado archivo. Así que me encontré con el comando de bandada, parece ajustarse a mi necesidad, pero no obtuve su sintaxis.¿Cómo uso el comando linux flock para evitar que otro proceso raíz elimine un archivo?
Si sólo indican un bloqueo compartido, no funciona:
flock -s "./file.xml"
Si añado un parámetro de tiempo de espera, todavía no funciona
flock -s -w5 "./file.xml"
Parece de esa manera, cabe en flock [-sxun][-w #] fd#
manera.
(¿Qué es este parámetro fd #?)
Así, probé el flock [-sxon][-w #] file [-c] command
Usando flock -s -w5 "./file.xml" -c "tail -3 ./file.xml"
y funcionó, fue ejecutado en la cola de comandos ./file.xml.
Pero me gustaría saber si el bloqueo finaliza después del comando o si dura 5 segundos después del final de la ejecución del comando. Mi pregunta principal es, ¿cómo puedo evitar que otro proceso raíz elimine un archivo en Linux?
Oh, gracias hombre. Voy a probar el bloqueo de la carpeta. Gracias – Danmaxis
No, usted no entiende. Linux no tiene bloqueo obligatorio, normalmente. El bloqueo obligatorio resuelve poco y, en su mayoría, solo permite que una aplicación denegue el servicio a otra sin explicación o forma de manejarla. Si realmente quieres dejar de eliminar un archivo, ruégalo como "inmutable", pero siempre pueden cambiarlo y luego eliminarlo. – MarkR