flock —
Provide locking API for shell scripts
  
    | flock | [ -dnosvx] [-wtimeout]
      file|directory
      command [args
      ...] | 
  
    | flock | [ -dnosvx] [-wtimeout]
      file|directory-ccommand | 
  
    | flock | [ -dnsuvx] [-wtimeout] number | 
The flock utility provides
  flock(2) access to the command
  line or scripts. The first two forms lock the specified
  file or directory while the
  provided command is executed. If the path does not exist, then a file of that
  name is created with mode 0600.
The third form can use an arbitrary file descriptor
    number 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.