flock -x -w 5 ~/counter.txt 'COUNTER=$(cat ~/counter.txt); echo $((COUNTER + 1)) > ~/counter.txt'
¿Cómo pasaría múltiples comandos flockcomo en el ejemplo anterior?
Según tengo entendido, flocktoma diferentes indicadores (-x para exclusivo, -w para tiempo de espera), luego el archivo para bloquear y luego el comando para ejecutar. No estoy seguro de cómo pasaría dos comandos a esta función (establezca la variable con el contenido del archivo bloqueado y luego incremente este archivo).
Mi objetivo aquí es crear un incremento algo atómico para un archivo bloqueándolo cada vez que un script intenta acceder al counter.txtarchivo.
fuente

O puede agrupar un descriptor de archivo
Esto también tiene el beneficio de permitirle usar la variable de contador directamente, a diferencia de los enfoques basados en subshell.
fuente
exec {counterfd}? Por sí solo, errores de Debiannot found, pero devuelve 0 con la redirección. Muy raro.La
flockherramienta es un poco difícil de usar y la página de manual es bastante corta. La página del manual proporciona tres formas de usar la herramienta:flock [options] <file|directory> <command> [command args]flock [options] <file|directory> -c <command>flock [options] <file descriptor number>La forma en que está formulada esta pregunta definitivamente usaría la tercera forma de
flock. Si va más abajo en la página del manual,flockhay algunos ejemplos que muestran la sintaxis exacta para usar el tercer formulario:Agregué el
#!/bin/bash.He utilizado con éxito esta forma de
flock.fuente