flock —
Provide locking API for shell scripts
  
    | flock | [ -dnosvx] [-wtimeout] lockfile|lockdir
      [-ccommand] |
      [command ...] | 
  
    | flock | [ -dnsuvx] [-wtimeout] lockfd | 
The flock utility provides
  flock(2) access to the command
  line or scripts. The first form locks a file or directory while the command
  provided is executed. If the file or directory does not exist, then a file is
  created.
The second form can use an arbitrary file descriptor that is
    provided from a shell script for example:
(
	flock -s 100
	# commands to be executed under the lock
) 100> /path/to/lockfile
 
The following options are available:
  - -ccommand
- Pass a command to a the shell.
- -d,- -- -debug
- Provide debugging output.
- -n,- -- -nb,- -- -nonblock
- Don't block and fail immediately if the lock could not be obtained.
- -o,- -- -close
- Close the file before executing the command. This is useful if the child
      forks and should not be holding the lock.
- -s,- -- -shared
- Obtain a shared lock.
- -u,- -- -unlock
- Unlock an existing lock. This is available only for a file
    descriptor.
- -v,- -- -verbose
- On error print an explanation of the failure.
- -w,- -- -wait,- -- -timeoutseconds
- Fail if the lock could not be obtained after
      seconds.
- -x,- -- -exclusive
- Obtain an exclusive lock. This is the default.
Theflock utility exits 0 on success,
  and >0 if an error occurs.
An flock utility appeared in NetBSD
  6.1.