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.

       -o, --output-file output_file
	       Append output from the daemonized process to  output_file.   If
	       the  file  does not exist, it is	created	with permissions 0600.
	       When this option	is used	together with options --change-dir and
	       --sighup	the absolute path  needs  to  be  provided  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	15.0			April 25, 2024			     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.0-RELEASE+and+Ports>

home | help