7 ms·
Why not https://man7.org/linux/man-pages/man2/flock.2.html https://man7.org/linux/man-pages/man2/flock.2.html?
by sluongng 1y ago
Why not https://man7.org/linux/man-pages/man2/flock.2.html https://man7.org/linux/man-pages/man2/flock.2.html?
- yjftsjthsd-h 1y agoNit: Probably https://man7.org/linux/man-pages/man1/flock.1.html https://man7.org/linux/man-pages/man1/flock.1.html (shell command, not the underlying libc function)
- anitil 1y agoThis was my first thought and I suppose flock(1) could be used to recreate a lot of this. But it does come with some other quality-of-life improvements like being able to list all currently-used locks, having a lock holdable by N processes etc.
- Zacru 1y agoBecause 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
- ethan_smith 1y agoflock is indeed built-in: `flock -xn /tmp/mylock.lock -c "echo running locked command"` does mutex locking in bash. Your tool might offer better ergonomics or features beyond flock's capabilities?