bionic (1) daemonize.1.gz

Provided by: daemonize_1.7.7-1_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).