Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
daemonize(1)			  User Manuals			    daemonize(1)

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 dae-
     mon is "a process that executes `in the background' (i.e., without an asso-
     ciated  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 out-
       put 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 them-
     selves.  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 dae-
     mon.

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 pro-
	    gram.  Defaults to "/". The choice for this option is important. The
	    file system containing the daemon's working directory cannot be  un-
	    mounted  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  op-
	    tion.)

     -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  op-
	    tion.)

     -p pidfile
	    Causes  daemonize  to write the numeric process ID (PID) of the run-
	    ning 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 userRun 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  exe-
	    cutable. 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, daemo-
     nize  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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=daemonize&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help