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]
	      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, --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(1) 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.

       -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	13.2		      September	18, 2023		     DAEMON(8)

NAME | SYNOPSIS | DESCRIPTION | EXIT STATUS | DIAGNOSTICS | SEE ALSO | HISTORY

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

home | help