5 ms·
Because that's a syscall ;) https://man7.org/linux/man-pages/man1/flock.1.html https://man7.org/linux/man-pages/man1/flock.1.html is the command line manual. I
by Zacru 1y ago
Because that's a syscall ;) https://man7.org/linux/man-pages/man1/flock.1.html https://man7.org/linux/man-pages/man1/flock.1.html is the command line manual.
I would say one good reason is that
waitlock myapp &
JOB_PID=$!
# ... do exclusive work ...
kill $JOB_PID
is a lot easier to use and remember than
(; flock -n 9 || exit 1; # ... commands executed under lock ...; ) 9>/var/lock/mylockfile
- yjftsjthsd-h 1y agoWhy (; flock -n 9 and not ( flock -n 9 ?
- apopapo 1y agoIt's a "for" loop.
- marklgr 1y agoCould you elaborate?
- apopapo 1y agoA for loop in a shell script may sometimes look like this: `for ((i = 0 ; i < max ; i++ )); do echo "$i"; done` Here this is essentially a "while" loop, meaning it will keep executing the commands as long as we don't reach `exit 1`. (; flock -n 9 || exit 1; # ... commands executed under lock ...; )
- yjftsjthsd-h 1y agoIt doesn't seem to work? [~] 0 $ ( flock -n 9 || exit 1; echo in loop ; sleep 3 ; echo done working ; ) 9>~/tmp/mylock in loop done working [~] 0 $ (; flock -n 9 || exit 1; echo in loop ; sleep 3 ; echo done working ; ) 9>~/tmp/mylock -bash: syntax error near unexpected token `;' [~] 2 $ (This is bash)
- permalac 1y agoFlock can be used in a single line for example for cronjobs. Flock -s file && script. Pretty simple. (I forgot the argument, I think is -s..
- bigattichouse 1y agojust pushed a change so now it's: waitlock myapp & #... do stuff waitlock --done myapp