# man > mail-touchlock(1)

[_lockfile-progs_(1)](https://www.chedong.com/phpMan.php/man/lockfile-progs/1/markdown)                         Lockfile programs                        [_lockfile-progs_(1)](https://www.chedong.com/phpMan.php/man/lockfile-progs/1/markdown)

## NAME
       lockfile-progs - command-line programs to safely lock and unlock files and mailboxes (via li‐
       blockfile).

## SYNOPSIS
       **mail-lock **[--use-pid] [--retry _retry-count_]
### mail-unlock
       **mail-touchlock **[--oneshot]

       **lockfile-create **[--use-pid] [--retry _retry-count_] [--lock-name] _filename_
       **lockfile-remove **[--lock-name] _filename_
       **lockfile-touch **[--oneshot] [--lock-name] _filename_
       **lockfile-check **[--use-pid] [--lock-name] _filename_

## DESCRIPTION
       Lockfile-progs  provides  a  set a programs that can be used to lock and unlock mailboxes and
       files safely (via liblockfile):

           **mail-lock **- lock the current user's mailbox
           **mail-unlock **- unlock the current user's mailbox
           **mail-touchlock **- touch the lock on the current user's mailbox

           **lockfile-create **- lock a given file
           **lockfile-remove **- remove the lock on a given file
           **lockfile-touch **- touch the lock on a given file
           **lockfile-check **- check the lock on a given file

       By default, the _filename_ argument refers to the name of the file to be locked, and  the  name
       of  the  lockfile will be _filename_ .lock.  However, if the --lock-name argument is specified,
       then _filename_ will be taken as the name of the lockfile itself.

       Each of the mail locking commands attempts to lock /var/spool/mail/<user>,  where  <user>  is
       the name associated with the effective user ID, as determined by via [geteuid(2)](https://www.chedong.com/phpMan.php/man/geteuid/2/markdown).

       Once  a file is locked, the lock must be touched at least once every five minutes or the lock
       will be considered stale, and subsequent lock attempts will succeed.  Also see the  **--use-pid**
       option and the [**lockfile_create**(3)](https://www.chedong.com/phpMan.php/man/lockfilecreate/3/markdown) manpage.

       The **lockfile-check **command tests whether or not a valid lock already exists.


## OPTIONS
### -q --quiet
           Suppress any output.  Success or failure will only be indicated by the exit status.

### -v --verbose
           Enable diagnostic output.

### -l --lock-name
           Do  not  append  .lock  to  the  _filename_.  This option applies to **lockfile-create**, **lock‐**
           **file-remove**, **lockfile-touch**, or **lockfile-check**.

### -p --use-pid
           Write the parent process id (PPID) to the lockfile whenever a lockfile  is  created,  and
           use  that  pid  when  checking a lock's validity.  See the [**lockfile_create**(3)](https://www.chedong.com/phpMan.php/man/lockfilecreate/3/markdown) manpage for
           more information.  This option applies to **lockfile-create **and **lockfile-check**.  NOTE: this
           option will not work correctly between machines sharing a filesystem.

### -o --oneshot
           Touch the  lock  and  exit  immediately.   This  option  applies  to  **lockfile-touch  **and
           **mail-touchlock**.   When  not  provided, these commands will run forever, touching the lock
           once every minute until killed.

### -r _ --retry _
           Try to lock _filename_ _retry-count_ times before giving up.  Each attempt will be delayed  a
           bit  longer  than the last (in 5 second increments) until reaching a maximum delay of one
           minute between retries.  If _retry-count_ is unspecified, the default is 9 which will  give
           up after 225 seconds if all 9 lock attempts fail.


## EXAMPLES
### Locking a file during a lengthy process:

         lockfile-create /some/file
         lockfile-touch /some/file &
         # Save the PID of the lockfile-touch process
         BADGER="$!"
         do-something-important-with /some/file
         kill "${BADGER}"
         lockfile-remove /some/file


## EXIT STATUS
       **0**
           For  **lockfile-check  **this indicates that a valid lock exists, otherwise it just indicates
           successful program execution.

### Not 0
           For **lockfile-check **a non-zero exit status indicates that the specified lock does not  ex‐
           ist or is not valid.  For other programs it indicates that some problem was encountered.

## SEE ALSO
       [**maillock**(3)](https://www.chedong.com/phpMan.php/man/maillock/3/markdown)
       [**touchlock**(3)](https://www.chedong.com/phpMan.php/man/touchlock/3/markdown)
       [**mailunlock**(3)](https://www.chedong.com/phpMan.php/man/mailunlock/3/markdown)
       [**lockfile_create**(3)](https://www.chedong.com/phpMan.php/man/lockfilecreate/3/markdown)
       [**lockfile_remove**(3)](https://www.chedong.com/phpMan.php/man/lockfileremove/3/markdown)
       [**lockfile_touch**(3)](https://www.chedong.com/phpMan.php/man/lockfiletouch/3/markdown)
       [**lockfile_check**(3)](https://www.chedong.com/phpMan.php/man/lockfilecheck/3/markdown)


## AUTHOR
       Written by Rob Browning <<rlb@defaultvalue.org>>

0.1.19                                       2021-09-03                            [_lockfile-progs_(1)](https://www.chedong.com/phpMan.php/man/lockfile-progs/1/markdown)
