FLOCK(1) | General Commands Manual | FLOCK(1)

# NAME

`flock` —
Provide locking API for shell scripts

# SYNOPSIS

`flock` | [`-dnosvx`] [`-w` timeout] lockfile|lockdir [`-c` command] | [command ...]

`flock` | [`-dnsuvx`] [`-w` timeout] lockfd

# DESCRIPTION

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:

`-c` command
  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`, `-` `-timeout` seconds
  Fail if the lock could not be obtained after seconds.
`-x`, `-``-exclusive`
  Obtain an exclusive lock. This is the default.

# EXIT STATUS

The `flock` utility exits 0 on success, and >0 if an error occurs.

# SEE ALSO

shlock(1), flock(2)

# HISTORY

An `flock` utility appeared in NetBSD 6.1.

August 18, 2014 | NetBSD 9.4