---
name: "lckdo"
section: "1"
platform: "linux"
package: "moreutils"
version: "0.70-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/lckdo"
---

# lckdo(1)

run a program with a lock held

## NAME

lckdo - run a program with a lock held

## SYNOPSIS

**lckdo**  \[options\] {lockfile} {program} \[arguments\]

## DESCRIPTION

**lckdo** runs a program with a lock held, in order to prevent multiple processes from running in parallel. Use just like **nice** or **nohup**.

Now that util-linux contains a similar command named **flock**, lckdo is deprecated, and will be removed from some future version of moreutils.

## OPTIONS

- FC**-w**F\[0\]

  If the lock is already held by another process, wait for it to complete instead of failing immediately.

- FC**-W {sec}**F\[0\]

  The same as -w but wait not more than sec seconds.

- FC**-e**F\[0\]

  Execute the program directly without forking and waiting (keeps an extra file descriptor open).

- FC**-E {nnn}**F\[0\]

  Set the file descriptor number to keep open when exec()ing (implies -e).

- FC**-n**F\[0\]

  Do not create the lock file if it does not exist.

- FC**-q**F\[0\]

  Produce no output if lock is already held.

- FC**-s**F\[0\]

  Lock in shared (read) mode.

- FC**-x**F\[0\]

  Lock in exclusive (write) mode (default).

- FC**-t**F\[0\]

  Test for lock existence.

## EXIT STATUS

If the lock was successfully acquired, the return value is that of the program invoked by **lckdo**. If the lock couldn't be acquired, EX\_TEMPFAIL is returned. If there was a problem opening/creating or locking the lock file, EX\_CANTCREAT or EX\_OSERR will be returned.

## AUTHOR

Michael Tokarev
