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

# NAME

`flock` —
Provide locking API for shell scripts

# SYNOPSIS

`flock` | [`-dnosvx`] [`-w` timeout] file|directory command [args ...]

`flock` | [`-dnosvx`] [`-w` timeout] file|directory `-c` command

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

# DESCRIPTION

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:

`-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.

October 4, 2019 | NetBSD 10.1