Desnudo conmigo, ya que soy nuevo en la flock
herramienta y no he usado descriptores de archivos hasta donde sé.
Tengo un script bash que hace una solicitud cURL y escribe la salida en un archivo llamado resp.txt
. Necesito crear un bloqueo exclusivo para poder escribir en ese archivo y no preocuparme de que varios usuarios ejecuten el script y editen el archivo de texto al mismo tiempo.
Aquí está el código que espero bloquear el archivo, realizar la solicitud y escribir en el archivo de texto:
(
flock -e 200
curl 'someurl' -H 'someHeader' > resp.txt
) 200>/home/user/ITS/resp.txt
¿Es esta la forma correcta de hacerlo? Mi script real es un poco más largo que esto, pero parece que se rompe cuando agrego la flock
sintaxis al script bash.
Si alguien pudiera explicar cómo funcionan estos descriptores de archivos y hacerme saber si estoy bloqueando el archivo correctamente, ¡sería increíble!
flock
funciona? Soy nuevo en los descriptores de archivos: /curl
todavía puedo escribir en el archivo. Tenga en cuenta que esto puede ser inseguro (o incluso puede no funcionar) con NFS, pero no use un script de shell para el bloqueo de archivos a través de NFS. Conbash
, también puede abrir el archivo para leer y escribir:200<> resp.txt
pero esto no debería cambiar nada.