This 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.
flock 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?
Comments
Why not https://man7.org/linux/man-pages/man2/flock.2.html?
Nit: Probably https://man7.org/linux/man-pages/man1/flock.1.html (shell command, not the underlying libc function)
This 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.
Because that's a syscall ;) https://man7.org/linux/man-pages/man1/flock.1.html is the command line manual.
I would say one good reason is that
is a lot easier to use and remember thanWhy
and notIt's a "for" loop.
Could you elaborate?
A 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 ...; )
It doesn't seem to work?
(This is bash)Flock 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..
just pushed a change so now it's:
waitlock myapp & #... do stuff waitlock --done myapp
flock 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?