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

FreeBSD Manual Pages

  
 
  

home | help
DAEMON(8)		    System Manager's Manual		     DAEMON(8)

NAME
       daemon -- run detached from the controlling terminal

SYNOPSIS
       daemon  [-cfHrS]	 [-p child_pidfile] [-P	supervisor_pidfile] [-t	title]
	      [-u user]	[-m output_mask] [-o output_file] [-s syslog_priority]
	      [-T syslog_tag] [-l syslog_facility] [-R	restart_delay_seconds]
	      [-C restart_count] command arguments ...

DESCRIPTION
       The  daemon  utility  detaches itself from the controlling terminal and
       executes	the program specified by its  arguments.   Privileges  may  be
       lowered	to  the	 specified user.  The output of	the daemonized process
       may be redirected to syslog and to a log	file.

       The options are as follows:

       -C, --restart-count restart_count
	       Restart the process at most restart_count times.	 When zero  is
	       specified, daemon will exit.  The maximum restart count is 128.
	       This option is used together with option	--restart.

       -c, --change-dir
	       Change the current working directory to the root	("/").

       -f, --close-fds
	       Redirect	 standard input, standard output and standard error to
	       /dev/null.  When	this option is used together with any  of  the
	       options related to file or syslog output, the standard file de-
	       scriptors are first redirected to /dev/null, then stdout	and/or
	       stderr is redirected to a file or to syslog as specified	by the
	       other options.

       -H, --sighup
	       Close  output_file  and	re-open	 it  when signal SIGHUP	is re-
	       ceived, for interoperability with newsyslog(8) and similar  log
	       rotation	/ archival mechanisms.	If --output-file is not	speci-
	       fied, this flag is ignored.

       -l, --syslog-facility syslog_facility
	       These  facilities  are accepted:	auth, authpriv,	console, cron,
	       daemon, ftp, kern, lpr,	mail,  news,  ntp,  security,  syslog,
	       user,  uucp,  and  local	facilities from	local0 to local7.  The
	       default is daemon.

       -m, --output-mask output_mask
	       Redirect	output from the	child process stdout (1), stderr  (2),
	       or  both	 (3).  This value specifies what is sent to syslog and
	       the log file.  The default is 3.

       -M, --output-file-mode mode
	       Specify the file	mode to	use  when  creating  the  output_file.
	       The  mode  is interpreted using chmod(1)	style semantics.  This
	       option is useful	when the daemonized process  or	 external  log
	       collectors  require  group  or world access to the output file.
	       The default is 0600.

       -o, --output-file output_file
	       Append output from the daemonized process to  output_file.   If
	       the  file  does	not exist, it is created with the default file
	       mode.   When  this  option  is  used  together	with   options
	       --change-dir  and  --sighup  the	absolute path needs to be pro-
	       vided to	ensure daemon can re-open the file after a SIGHUP.

       -P, --supervisor-pidfile	supervisor_pidfile
	       Write the ID of the daemon process into the  supervisor_pidfile
	       using the pidfile(3) functionality.  The	program	is executed in
	       a  spawned child	process	while the daemon waits until it	termi-
	       nates to	keep the supervisor_pidfile locked and removes it  af-
	       ter  the	 process  exits.   The supervisor_pidfile owner	is the
	       user who	runs the daemon	regardless of whether the  --user  op-
	       tion is used or not.

       -p, --child-pidfile child_pidfile
	       Write  the ID of	the created process into the child_pidfile us-
	       ing the pidfile(3) functionality.  The program is executed in a
	       spawned child process while the daemon waits  until  it	termi-
	       nates to	keep the child_pidfile locked and removes it after the
	       process	exits.	 The  child_pidfile owner is the user who runs
	       the daemon regardless of	whether	the --user option is  used  or
	       not.

       -R, --restart-delay restart_delay_seconds
	       Supervise  and restart the program after	the specified delay if
	       it has been terminated.	Valid values are 1-31536000 (up	 to  1
	       year).

       -r, --restart
	       Supervise  and  restart the program after a one-second delay if
	       it has been terminated.

       -S, --syslog
	       Enable syslog output.  This is implicitly applied if other sys-
	       log parameters are provided.  The default  values  are  daemon,
	       notice,	and  daemon  for  facility, priority, and tag, respec-
	       tively.

       -s, --syslog-priority syslog_priority
	       These  priorities  are  accepted:  emerg,  alert,  crit,	  err,
	       warning,	notice,	info, and debug.  The default is notice.

       -T, --syslog-tag	syslog_tag
	       Set  the	tag which is appended to all syslog messages.  The de-
	       fault is	daemon.

       -t, --title title
	       Set the title for the daemon process.  The default is the  dae-
	       monized invocation.

       -u, --user user
	       Login  name of the user to execute the program under.  Environ-
	       ment variables HOME, USER, and SHELL are	set accordingly.   Re-
	       quires adequate superuser privileges.

       If  any	of  the	 options  --child-pidfile,  --output-mask,  --restart,
       --restart-delay,	 --supervisor-pidfile,	 --syslog,   --syslog-facility
       --syslog-priority,  --syslog-tag,  or --output, are specified, the pro-
       gram is executed	in a spawned child process.  The daemon	waits until it
       terminates to keep the pid file(s) locked and removes  them  after  the
       process	exits or restarts the program.	In this	case if	the monitoring
       daemon receives software	termination signal (SIGTERM) it	forwards it to
       the spawned process.  Normally it will cause the	child to exit,	remove
       the pidfile(s) and then terminate.

       If neither file or syslog output	are selected, all output is redirected
       to  the	daemon	process	and written to stdout.	The --close-fds	option
       may be used to suppress the stdout output completely.

       The --supervisor-pidfile	option is useful combined with	the  --restart
       option  as supervisor_pidfile contains the ID of	the supervisor not the
       child.  This is especially important if you  use	 --restart  in	an  rc
       script  as  the	--child-pidfile	option will give you the child's ID to
       signal when you attempt to stop the service, causing daemon to  restart
       the child.

EXIT STATUS
       The daemon utility exits	1 if an	error is returned by the daemon(3) li-
       brary  routine,	2 if child_pidfile or supervisor_pidfile is requested,
       but cannot be opened, 3 if process is already running  (pidfile	exists
       and   is	  locked),   4	if  syslog_priority  is	 not  accepted,	 5  if
       syslog_facility is not accepted,	6 if output_mask is not	within the ac-
       cepted range, 7 if output_file cannot be	opened for appending, and oth-
       erwise 0.

DIAGNOSTICS
       If the command cannot be	executed, an error message is printed to stan-
       dard error.  The	exact behavior depends on the logging  parameters  and
       the --close-fds flag.

SEE ALSO
       nohup(1),  setregid(2),	setreuid(2),  daemon(3),  exec(3), pidfile(3),
       termios(4), tty(4)

HISTORY
       The daemon utility first	appeared in FreeBSD 4.7.

FreeBSD	ports 15.quarterly     January 28, 2026			     DAEMON(8)

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

home | help