Provided by: daemonize_1.7.8-3_amd64 bug

NAME

       daemonize - run a program as a Unix daemon

SYNOPSIS

       daemonize  [-a]  [-c  directory]  [-e  stderr] [-o stdout] [-p pidfile] [-l lockfile] [-u user] [-v] path
       [arg] ...

DESCRIPTION

       daemonize runs a command as a Unix daemon.  As defined in W. Richard Stevens'  1990  book,  Unix  Network
       Programming  (Addison-Wesley,  1990),  a  daemon  is  “a process that executes `in the background' (i.e.,
       without an associated terminal or login shell) either waiting for some event  to  occur,  or  waiting  to
       perform some specified task on a periodic basis.” Upon startup, a typical daemon program will:

       o Close all open file descriptors (especially standard input, standard output and standard error)

       o Change  its  working  directory  to  the  root  filesystem,  to  ensure  that it doesn't tie up another
         filesystem and prevent it from being unmounted

       o Reset its umask value

       o Run in the background (i.e., fork)

       o Disassociate from its process group (usually a shell), to insulate itself from signals  (such  as  HUP)
         sent to the process group

       o Ignore all terminal I/O signals

       o Disassociate from the control terminal (and take steps not to reacquire one)

       o Handle any SIGCLD signals

       Most  programs  that  are  designed  to  be  run  as daemons do that work for themselves. However, you'll
       occasionally run across one that does not.  When you must run a daemon program  that  does  not  properly
       make itself into a true Unix daemon, you can use daemonize to force it to run as a true daemon.

OPTIONS

       -a     Append  to  the output files, rather than overwriting them (which is the default). Only applicable
              if -e and/or -o are specified.

       -c directory
              Specifies the directory to which to change before running  the  program.   Defaults  to  "/".  The
              choice  for  this  option  is important. The file system containing the daemon's working directory
              cannot be unmounted while the daemon is running. That's why most daemons  are  careful  to  use  a
              working directory on the root file system.

       -e stderr
              Redirect standard error to the specified file, instead of "/dev/null".

              Warning: Be careful where you redirect the output! The file system containing the open file cannot
              be  unmounted as long as the file is open. For best results, make sure that this output file is on
              the same file system as the daemon's working directory. (See the -c option.)

       -E name=value
              Add an environment variable to the environment the daemon will see. The parameter must be  of  the
              form name=value.  This parameter may be specified multiple times.

       -o stdout
              Redirect standard output to the specified file, instead of "/dev/null".

              Warning: Be careful where you redirect the output! The file system containing the open file cannot
              be  unmounted as long as the file is open. For best results, make sure that this output file is on
              the same file system as the daemon's working directory. (See the -c option.)

       -p pidfile
              Causes daemonize to write the numeric process ID (PID) of the  running  daemon  to  the  specified
              file. This option is useful when the program being daemonized doesn't create its own PID file.

       -l lockfile
              Single-instance  checking. Causes daemonize to ensure that no more than one instance of the daemon
              is running by placing an exclusive lock on given lockfile. If another process already has  a  lock
              on the lockfile, daemonize exits.

       It  is  possible  to  use  the pidfile as the lock file (e.g., "-p /var/run/foo -l /var/run/foo"), though
       typical daemons use separate files.

       NOTE: If the executed program decides to close all file descriptors, the single-instance locking will not
       work, since the lock depends on an open file descriptor. (The operating system kernel  removes  the  lock
       once  the  process  holding  the  lock closes the file or exits.)  Normal processes that do not daemonize
       themselves do not usually close all file descriptors.

       -u user
              Run the program as the specified user. This option only works  if  daemonize  is  invoked  by  the
              superuser.   Note:  For  obvious reasons, it's very dangerous to install daemonize as a setuid-to-
              root executable. For that reason, daemonize will refuse to run if it  detects  that  it  has  been
              installed that way.

       -v     Cause  daemonize  to  write  verbose  messages  to  standard  error, telling what it's doing as it
              daemonizes the program.

NOTES

       If the host operating system provides the daemon(3) library routine, daemonize will  use  it.  Otherwise,
       daemonize  uses  its  own  version  of  daemon(3).  This choice is made at compile time. (BSD 4.4-derived
       operating systems tend to provide their own daemon(3) routine.)

       FreeBSD 5.0 introduced a daemon(1) command that is similar to, but less functional, than daemonize.

LICENSE

       This program released under a BSD-style license. For more details, consult the LICENSE file  accompanying
       the source distribution, or visit "http://software.clapper.org/daemonize/LICENSE".

SEE ALSO

       daemon(3), setsid(2), flock(2)

       daemonize Home Page: http://software.clapper.org/daemonize/

AUTHOR

       Brian M. Clapper, bmc <at> clapper <dot> org

CONTRIBUTORS

       Support for the -e and -o options is based on a patch submitted by Tim Starling (tstarling <at> wikimedia
       <dot> org).

       Support for the -l option is based on a patch submitted by Yakov Lerner (iler.ml <at> gmail <dot> com).

Unix                                               August 2006                                      daemonize(1)