Man Linux: Main Page and Category List

NAME

       postpone  -  schedules  a  command to be executed later when a lockfile
       disappears

SYNOPSIS

       postpone [-dfv] [-lwLoO FILE] command args ...

DESCRIPTION

       Postpone schedules a command to  be  executed  later  when  a  lockfile
       disappears.  Intended  usage  is  when  a  command is executed possibly
       multiple times,  but  running  once  is  sufficient.  This  happens  in
       maintainer  scripts  of  Debian  packages, for example, the menu system
       will need to run update-menus every time a menu file  is  installed  or
       removed,  but  if  several  packages  are  processed  at once, a single
       update-menus run at the end is  sufficient.  In  fact,  postpone  is  a
       generalization  of  similar  code found in update-menus that is already
       able to postpone itself. Another prominent use case  are  TeX  packages
       that need to rebuild several indices.

       On  startup,  postpone  will  look  if any of the lock files given with
       --wait exists. If not, it will run command immediately  in  foreground.
       Otherwise,  it will fork to background, waiting for the lock file(s) to
       disappear. At the same time, the --lock file is created to indicate  to
       other   postpone  instances  that  command  is  already  scheduled  for
       execution; the other instances will exit without further action.

       Additionally, --extra-lock will be acquired just before  the  execution
       of  command,  this  allows  the  serialization  of  several (different)
       background jobs.

       All lockfiles are optional. See below for examples.

OPTIONS

       -w FILE or --wait FILE
              Wait for FILE before  running  command.  Can  be  given  several
              times.   This  activates  the  main feature of postpone -- delay
              execution  until  some  other  task  has  exited  (specifically,
              released its fcntl() lock).

       -l FILE or --lock FILE
              Creates lockfile FILE. If postpone is called again with the same
              FILE, it will exit, assuming the task is already postponed. Make
              sure  that  the  (effects  of the) commands are the same for the
              same lockfile.

       -L FILE or --extra-lock FILE
              Before running command,  acquire  lock  on  FILE.  Use  this  to
              serialize several (most likely different) postponed commands.

       -d or --debian
              Equivalent    to    --wait    /var/lib/dpkg/lock    --extra-lock
              /var/lib/dpkg/postpone.lock. Meant for use in maintainer scripts
              of  Debian  packages, will wait for dpkg and apt-get to exit and
              serialize the postponed commands.

       -o FILE or --output FILE
              Redirect stdout and  stderr  output  to  FILE  when  running  in
              background.   (Discarded otherwise.) If FILE ends with "XXXXXX",
              mkstemp is used.

       -O FILE or --all-output FILE
              Like --output, but always redirect stdout and stderr  output  to
              FILE.

       -f or --foreground
              Do not detach while waiting for locks.

       -v or --verbose
              Verbose output. Repeat for debugging output.

       --help Print options summary and exit.

       --version
              Print version information and exit.

       --version-string
              Print version information in machine readable form and exit.

EXAMPLES

       Example usage in a texlive postinst maintainer script:

           if [ -x /usr/bin/postpone ] ; then
               postpone --verbose --lock /var/run/updmap-sys.lock --debian \
                   --all-output /tmp/updmap.XXXXXXXX \
                   updmap-sys
           else
               updmap-sys
           fi

FILES

       /var/lib/dpkg/lock
              Dpkg’s default lockfile.

       /var/lib/dpkg/postpone.lock
              Default extra lockfile when running with --debian.

BUGS

       Postpone  currently only uses fcntl() to acquire locks on --wait, usage
       with applications using flock() will fail gracefully. (The command will
       run immediately.) --lock and --extra-lock use flock().

COMPATIBILITY

       For  compatibility,  using  unknown options does not abort the program.
       Applications can use --version-string  if  they  need  to  compare  the
       postpone version number.

SEE ALSO

       update-menus(1), fcntl(2), flock(2), mkstemp(3), dpkg(1).

COPYRIGHT

       Copyright (C) 2007  Christoph Berg

       Based on code from:
       Debian menu system -- update-menus
       update-menus/update-menus.cc

       Copyright (C) 1996-2003  Joost Witteveen
       Copyright (C) 2002-2004  Bill Allombert and Morten Brix Pedersen

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published  by  the
       Free  Software Foundation; either version 2 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it  will  be  useful,  but
       WITHOUT   ANY   WARRANTY;   without   even   the  implied  warranty  of
       MERCHANTABILITY or FITNESS FOR  A  PARTICULAR  PURPOSE.   See  the  GNU
       General Public License for more details.

                                 June 9th 2007