With flock you can implement basic job control in bash. That’s very handy when you have a script that is running in multiple instances and doing file operations. I was writing a script to return some data from a switch stack to zabbix and as zabbix does run the script for every item it gets from it’s discovery part, it is run very often.
So the different instances tried to do file operations at the same time. After a lot of trial and error i found flock.
( flock 200 # commands to be run by only one instance of the script at the same time ) 200>/var/lock/mylockfile
that creates a lock file and before executing the part, bash checks if the lockfile is locked. Thanks at kiloroot.com.
Also remembering, that the linux move
command is atomic, therefore very quick. It’s just changing meta-data. While copy
can take a while, since it may need to handle a lot of data.