aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/daemon/daemon.8
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/daemon/daemon.8')
-rw-r--r--usr.sbin/daemon/daemon.8288
1 files changed, 288 insertions, 0 deletions
diff --git a/usr.sbin/daemon/daemon.8 b/usr.sbin/daemon/daemon.8
new file mode 100644
index 000000000000..52fbc230ac77
--- /dev/null
+++ b/usr.sbin/daemon/daemon.8
@@ -0,0 +1,288 @@
+.\" Copyright (c) 1999 Berkeley Software Design, Inc. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. Berkeley Software Design Inc's name may not be used to endorse or
+.\" promote products derived from this software without specific prior
+.\" written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN INC BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd April 25, 2024
+.Dt DAEMON 8
+.Os
+.Sh NAME
+.Nm daemon
+.Nd run detached from the controlling terminal
+.Sh SYNOPSIS
+.Nm
+.Op Fl cfHrS
+.Op Fl p Ar child_pidfile
+.Op Fl P Ar supervisor_pidfile
+.Op Fl t Ar title
+.Op Fl u Ar user
+.Op Fl m Ar output_mask
+.Op Fl o Ar output_file
+.Op Fl s Ar syslog_priority
+.Op Fl T Ar syslog_tag
+.Op Fl l Ar syslog_facility
+.Op Fl R Ar restart_delay_seconds
+.Op Fl C Ar restart_count
+.Ar command arguments ...
+.Sh DESCRIPTION
+The
+.Nm
+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.
+.Pp
+The options are as follows:
+.Bl -tag -width indent
+.It Fl C , Fl -restart-count Ar restart_count
+Restart the process at most
+.Ar restart_count
+times.
+When zero is specified,
+.Nm
+will exit.
+The maximum restart count is
+.Cm 128 .
+This option is used together with option
+.Fl -restart .
+.It Fl c , Fl -change-dir
+Change the current working directory to the root
+.Pq Dq Pa / .
+.It Fl f , Fl -close-fds
+Redirect standard input, standard output and standard error to
+.Pa /dev/null .
+When this option is used together with any of the options related to file
+or syslog output, the standard file descriptors are first redirected to
+.Pa /dev/null ,
+then stdout and/or stderr is redirected to a file or to syslog as
+specified by the other options.
+.It Fl H , Fl -sighup
+Close
+.Pa output_file
+and re-open it when signal
+.Dv SIGHUP
+is received, for interoperability with
+.Xr newsyslog 8
+and similar log rotation / archival mechanisms.
+If
+.Fl -output-file
+is not specified, this flag is ignored.
+.It Fl l , Fl -syslog-facility Ar syslog_facility
+These facilities are accepted:
+.Cm auth , authpriv , console , cron , daemon ,
+.Cm ftp , kern , lpr , mail , news , ntp , security ,
+.Cm syslog , user , uucp ,
+and
+local facilities from
+.Cm local0
+to
+.Cm local7 .
+The default is
+.Cm daemon .
+.It Fl m , Fl -output-mask Ar output_mask
+Redirect output from the child process stdout
+.Pq Cm 1 ,
+stderr
+.Pq Cm 2 ,
+or both
+.Pq Cm 3 .
+This value specifies what is sent to syslog and the log file.
+The default is
+.Cm 3 .
+.It Fl o , Fl -output-file Ar output_file
+Append output from the daemonized process to
+.Pa output_file .
+If the file does not exist, it is created with permissions 0600.
+When this option is used together with options
+.Fl -change-dir
+and
+.Fl -sighup
+the absolute path needs to be provided to ensure
+.Nm
+can re-open the file after a
+.Dv SIGHUP .
+.It Fl P , Fl -supervisor-pidfile Ar supervisor_pidfile
+Write the ID of the
+.Nm
+process into the
+.Ar supervisor_pidfile
+using the
+.Xr pidfile 3
+functionality.
+The program is executed in a spawned child process while the
+.Nm
+waits until it terminates to keep the
+.Ar supervisor_pidfile
+locked and removes it after the process exits.
+The
+.Ar supervisor_pidfile
+owner is the user who runs the
+.Nm
+regardless of whether the
+.Fl -user
+option is used or not.
+.It Fl p , Fl -child-pidfile Ar child_pidfile
+Write the ID of the created process into the
+.Ar child_pidfile
+using the
+.Xr pidfile 3
+functionality.
+The program is executed in a spawned child process while the
+.Nm
+waits until it terminates to keep the
+.Ar child_pidfile
+locked and removes it after the process exits.
+The
+.Ar child_pidfile
+owner is the user who runs the
+.Nm
+regardless of whether the
+.Fl -user
+option is used or not.
+.It Fl R , Fl -restart-delay Ar 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).
+.It Fl r , Fl -restart
+Supervise and restart the program after a one-second delay if it has
+been terminated.
+.It Fl S , Fl -syslog
+Enable syslog output.
+This is implicitly applied if other syslog parameters are provided.
+The default values are daemon, notice, and daemon for facility, priority, and
+tag, respectively.
+.It Fl s , Fl -syslog-priority Ar syslog_priority
+These priorities are accepted:
+.Cm emerg , alert , crit , err , warning ,
+.Cm notice , info ,
+and
+.Cm debug .
+The default is
+.Cm notice .
+.It Fl T , Fl -syslog-tag Ar syslog_tag
+Set the tag which is appended to all syslog messages.
+The default is
+.Cm daemon .
+.It Fl t , Fl -title Ar title
+Set the title for the daemon process.
+The default is the daemonized invocation.
+.It Fl u , Fl -user Ar user
+Login name of the user to execute the program under.
+Environment variables
+.Ev HOME , USER ,
+and
+.Ev SHELL
+are set accordingly.
+Requires adequate superuser privileges.
+.El
+.Pp
+If any of the options
+.Fl -child-pidfile ,
+.Fl -output-mask ,
+.Fl -restart ,
+.Fl -restart-delay ,
+.Fl -supervisor-pidfile ,
+.Fl -syslog ,
+.Fl -syslog-facility
+.Fl -syslog-priority ,
+.Fl -syslog-tag ,
+or
+.Fl -output ,
+are specified, the program is executed in a spawned child process.
+The
+.Nm
+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
+.Nm
+receives software termination signal
+.Pq Dv SIGTERM
+it forwards it to the
+spawned process.
+Normally it will cause the child to exit, remove the pidfile(s)
+and then terminate.
+.Pp
+If neither file or syslog output are selected, all output is redirected to the
+.Nm
+process and written to stdout.
+The
+.Fl -close-fds
+option may be used to suppress the stdout output completely.
+.Pp
+The
+.Fl -supervisor-pidfile
+option is useful combined with the
+.Fl -restart
+option as
+.Ar supervisor_pidfile
+contains the ID of the supervisor
+not the child.
+This is especially important if you use
+.Fl -restart
+in an rc script as the
+.Fl -child-pidfile
+option will give you the child's ID to signal when you attempt to
+stop the service, causing
+.Nm
+to restart the child.
+.Sh EXIT STATUS
+The
+.Nm
+utility exits 1 if an error is returned by the
+.Xr daemon 3
+library routine, 2 if
+.Ar child_pidfile
+or
+.Ar supervisor_pidfile
+is requested, but cannot be opened, 3 if process is already running (pidfile
+exists and is locked), 4 if
+.Ar syslog_priority
+is not accepted, 5 if
+.Ar syslog_facility
+is not accepted, 6 if
+.Ar output_mask
+is not within the accepted range, 7 if
+.Ar output_file
+cannot be opened for appending, and otherwise 0.
+.Sh DIAGNOSTICS
+If the command cannot be executed, an error message is printed to
+standard error.
+The exact behavior depends on the logging parameters and the
+.Fl -close-fds
+flag.
+.Sh SEE ALSO
+.Xr nohup 1 ,
+.Xr setregid 2 ,
+.Xr setreuid 2 ,
+.Xr daemon 3 ,
+.Xr exec 3 ,
+.Xr pidfile 3 ,
+.Xr termios 4 ,
+.Xr tty 4
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 4.7 .