---
name: "shlock"
section: "1"
platform: "linux"
package: "inn"
version: "1:1.7.2q-52"
release: "Debian 13 (Trixie)"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/shlock"
---

# shlock(1)

create lock files for use in shell scripts

## NAME

shlock - create lock files for use in shell scripts

## SYNOPSIS

**shlock** **-p** *pid* **-f** *name* \[ **-b** \] \[ **-u** \] \[ **-c** \]

## DESCRIPTION

*Shlock* tries to create a lock file named *name* and write the process ID *pid* into it. If the file already exists, *shlock* will read the process ID from the file and test to see if the process is currently running. If the process exists, then the file will not be created.

*Shlock* exits with a zero status if it was able to create the lock file, or non-zero if the file refers to currently-active process.

## OPTIONS

- **-b**

  Process IDs are normally read and written in ASCII. If the \`\`-b'' flag is used, then they will be written as a binary *int*. For compatibility with other systems, the \`\`-u'' flag is accepted as a synonym for \`\`-b'' since binary locks are used by many UUCP packages.

- **-c**

  If the \`\`-c'' flag is used, then *shlock* will not create a lock file, but will instead use the file to see if the lock is held by another program. If the lock is valid, the program will exit with a non-zero status; if the lock is not valid (i.e., invoking *shlock* without the flag would have succeeded), then the program will exit with a zero status.

## EXAMPLES

The following example shows how *shlock* would be used within a shell script:

```
LOCK=/run/innd/LOCK.send
trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
if shlock -p $$ -f ${LOCK} ; then
    # Do appropriate work
else
    echo Locked by `cat ${LOCK}`
fi
```

## HISTORY

Written by Rich $alz \<rsalz@uunet.uu.net\> after a description of HDB UUCP locking given by Peter Honeyman. This is revision 1.9, dated 1996/10/29.
