xref: /freebsd/usr.sbin/daemon/daemon.8 (revision 53c2c7918d3acfce094cb4e2066ebfe1b5c38127)
1bd06a3ecSMike Barcroft.\" Copyright (c) 1999 Berkeley Software Design, Inc. All rights reserved.
2bd06a3ecSMike Barcroft.\"
3bd06a3ecSMike Barcroft.\" Redistribution and use in source and binary forms, with or without
4bd06a3ecSMike Barcroft.\" modification, are permitted provided that the following conditions
5bd06a3ecSMike Barcroft.\" are met:
6bd06a3ecSMike Barcroft.\" 1. Redistributions of source code must retain the above copyright
7bd06a3ecSMike Barcroft.\"    notice, this list of conditions and the following disclaimer.
8bd06a3ecSMike Barcroft.\" 2. Redistributions in binary form must reproduce the above copyright
9bd06a3ecSMike Barcroft.\"    notice, this list of conditions and the following disclaimer in the
10bd06a3ecSMike Barcroft.\"    documentation and/or other materials provided with the distribution.
11bd06a3ecSMike Barcroft.\" 3. Berkeley Software Design Inc's name may not be used to endorse or
12bd06a3ecSMike Barcroft.\"    promote products derived from this software without specific prior
13bd06a3ecSMike Barcroft.\"    written permission.
14bd06a3ecSMike Barcroft.\"
15bd06a3ecSMike Barcroft.\" THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``AS IS'' AND
16bd06a3ecSMike Barcroft.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17bd06a3ecSMike Barcroft.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18bd06a3ecSMike Barcroft.\" ARE DISCLAIMED.  IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN INC BE LIABLE
19bd06a3ecSMike Barcroft.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20bd06a3ecSMike Barcroft.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21bd06a3ecSMike Barcroft.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22bd06a3ecSMike Barcroft.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23bd06a3ecSMike Barcroft.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24bd06a3ecSMike Barcroft.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25bd06a3ecSMike Barcroft.\" SUCH DAMAGE.
26bd06a3ecSMike Barcroft.\"
27bd06a3ecSMike Barcroft.\" $FreeBSD$
28bd06a3ecSMike Barcroft.\"
2953d49b37SJilles Tjoelker.Dd October 22, 2016
30bd06a3ecSMike Barcroft.Dt DAEMON 8
31217758f8SRuslan Ermilov.Os
32bd06a3ecSMike Barcroft.Sh NAME
33bd06a3ecSMike Barcroft.Nm daemon
34bd06a3ecSMike Barcroft.Nd run detached from the controlling terminal
35bd06a3ecSMike Barcroft.Sh SYNOPSIS
36217758f8SRuslan Ermilov.Nm
3753d49b37SJilles Tjoelker.Op Fl cfrS
3832b17786SJohn-Mark Gurney.Op Fl p Ar child_pidfile
3932b17786SJohn-Mark Gurney.Op Fl P Ar supervisor_pidfile
40112bfcf5SConrad Meyer.Op Fl t Ar title
41e6d4b388STom Rhodes.Op Fl u Ar user
4253d49b37SJilles Tjoelker.Op Fl m Ar output_mask
4353d49b37SJilles Tjoelker.Op Fl o Ar output_file
4453d49b37SJilles Tjoelker.Op Fl s Ar syslog_priority
4553d49b37SJilles Tjoelker.Op Fl T Ar syslog_tag
46*53c2c791SMaxim Konovalov.Op Fl l Ar syslog_facility
47217758f8SRuslan Ermilov.Ar command arguments ...
48bd06a3ecSMike Barcroft.Sh DESCRIPTION
49bd06a3ecSMike BarcroftThe
50bd06a3ecSMike Barcroft.Nm
51bd06a3ecSMike Barcroftutility detaches itself from the controlling terminal and
52bd06a3ecSMike Barcroftexecutes the program specified by its arguments.
53e6d4b388STom RhodesPrivileges may be lowered to the specified user.
5453d49b37SJilles TjoelkerThe output of the daemonized process may be redirected to syslog and to a
5553d49b37SJilles Tjoelkerlog file.
56bd06a3ecSMike Barcroft.Pp
57bd06a3ecSMike BarcroftThe options are as follows:
58217758f8SRuslan Ermilov.Bl -tag -width indent
59bd06a3ecSMike Barcroft.It Fl c
60217758f8SRuslan ErmilovChange the current working directory to the root
61217758f8SRuslan Ermilov.Pq Dq Pa / .
62bd06a3ecSMike Barcroft.It Fl f
63bd06a3ecSMike BarcroftRedirect standard input, standard output and standard error to
64bd06a3ecSMike Barcroft.Pa /dev/null .
6553d49b37SJilles Tjoelker.It Fl S
6653d49b37SJilles TjoelkerEnable syslog output.
6753d49b37SJilles TjoelkerThis is implicitly applied if other syslog parameters are provided.
6853d49b37SJilles TjoelkerThe default values are daemon, notice, and daemon for facility, priority, and
6953d49b37SJilles Tjoelkertag, respectively.
7053d49b37SJilles Tjoelker.It Fl o Ar output_file
7153d49b37SJilles TjoelkerAppend output from the daemonized process to
7253d49b37SJilles Tjoelker.Pa output_file .
7353d49b37SJilles TjoelkerIf the file does not exist, it is created with permissions 0600.
7453d49b37SJilles Tjoelker.It Fl m Ar output_mask
7553d49b37SJilles TjoelkerRedirect output from the child process stdout (1), stderr (2), or both (3).
7653d49b37SJilles TjoelkerThis value specifies what is sent to syslog and the log file.
7753d49b37SJilles TjoelkerThe default is 3.
7832b17786SJohn-Mark Gurney.It Fl p Ar child_pidfile
792410103cSRuslan ErmilovWrite the ID of the created process into the
8032b17786SJohn-Mark Gurney.Ar child_pidfile
81e6d4b388STom Rhodesusing the
82c6262cb6SPawel Jakub Dawidek.Xr pidfile 3
83c6262cb6SPawel Jakub Dawidekfunctionality.
842ad43027SMikolaj GolubThe program is executed in a spawned child process while the
852ad43027SMikolaj Golub.Nm
862ad43027SMikolaj Golubwaits until it terminates to keep the
8732b17786SJohn-Mark Gurney.Ar child_pidfile
882ad43027SMikolaj Golublocked and removes it after the process exits.
892ad43027SMikolaj GolubThe
9032b17786SJohn-Mark Gurney.Ar child_pidfile
9132b17786SJohn-Mark Gurneyowner is the user who runs the
9232b17786SJohn-Mark Gurney.Nm
9332b17786SJohn-Mark Gurneyregardless of whether the
9432b17786SJohn-Mark Gurney.Fl u
9532b17786SJohn-Mark Gurneyoption is used or not.
9632b17786SJohn-Mark Gurney.It Fl P Ar supervisor_pidfile
9732b17786SJohn-Mark GurneyWrite the ID of the
9832b17786SJohn-Mark Gurney.Nm
9932b17786SJohn-Mark Gurneyprocess into the
10032b17786SJohn-Mark Gurney.Ar supervisor_pidfile
10132b17786SJohn-Mark Gurneyusing the
10232b17786SJohn-Mark Gurney.Xr pidfile 3
10332b17786SJohn-Mark Gurneyfunctionality.
10432b17786SJohn-Mark GurneyThe program is executed in a spawned child process while the
10532b17786SJohn-Mark Gurney.Nm
10632b17786SJohn-Mark Gurneywaits until it terminates to keep the
10732b17786SJohn-Mark Gurney.Ar supervisor_pidfile
10832b17786SJohn-Mark Gurneylocked and removes it after the process exits.
10932b17786SJohn-Mark GurneyThe
11032b17786SJohn-Mark Gurney.Ar supervisor_pidfile
1112ad43027SMikolaj Golubowner is the user who runs the
1122ad43027SMikolaj Golub.Nm
1132ad43027SMikolaj Golubregardless of whether the
114704523b0SGuy Helmer.Fl u
1152ad43027SMikolaj Goluboption is used or not.
116b6193c24SMikolaj Golub.It Fl r
117b6193c24SMikolaj GolubSupervise and restart the program if it has been terminated.
118112bfcf5SConrad Meyer.It Fl t Ar title
11953d49b37SJilles TjoelkerSet the title for the daemon process.
12053d49b37SJilles TjoelkerThe default is the daemonized invocation.
121b6193c24SMikolaj Golub.It Fl u Ar user
122b6193c24SMikolaj GolubLogin name of the user to execute the program under.
123b6193c24SMikolaj GolubRequires adequate superuser privileges.
12453d49b37SJilles Tjoelker.It Fl s Ar syslog_priority
12553d49b37SJilles TjoelkerThese priorities are accepted: emerg, alert, crit, err, warning,
12653d49b37SJilles Tjoelkernotice, info, and debug.
12753d49b37SJilles TjoelkerThe default is info.
12853d49b37SJilles Tjoelker.It Fl l Ar syslog_facility
12953d49b37SJilles TjoelkerThese facilities are accepted: auth, authpriv, console, cron, daemon,
13053d49b37SJilles Tjoelkerftp, kern, lpr, mail, news, ntp, security, syslog, user, uucp, and
13153d49b37SJilles Tjoelkerlocal0, ..., local7.
13253d49b37SJilles TjoelkerThe default is daemon.
13353d49b37SJilles Tjoelker.It Fl T Ar syslog_tag
13453d49b37SJilles TjoelkerSet the tag which is appended to all syslog messages.
13553d49b37SJilles TjoelkerThe default is daemon.
136b6193c24SMikolaj Golub.El
137b6193c24SMikolaj Golub.Pp
13853d49b37SJilles TjoelkerIf any of the options
13932b17786SJohn-Mark Gurney.Fl p ,
14053d49b37SJilles Tjoelker.Fl P ,
14153d49b37SJilles Tjoelker.Fl r ,
14253d49b37SJilles Tjoelker.Fl o ,
14353d49b37SJilles Tjoelker.Fl s ,
14453d49b37SJilles Tjoelker.Fl T ,
14553d49b37SJilles Tjoelker.Fl m ,
14653d49b37SJilles Tjoelker.Fl S ,
147b6193c24SMikolaj Golubor
14853d49b37SJilles Tjoelker.Fl l
14953d49b37SJilles Tjoelkerare specified, the program is executed in a spawned child process.
150b6193c24SMikolaj GolubThe
151b6193c24SMikolaj Golub.Nm
15232b17786SJohn-Mark Gurneywaits until it terminates to keep the pid file(s) locked and removes them
153b6193c24SMikolaj Golubafter the process exits or restarts the program.
154b6193c24SMikolaj GolubIn this case if the monitoring
155195fc497SMikolaj Golub.Nm
156195fc497SMikolaj Golubreceives software termination signal (SIGTERM) it forwards it to the
157195fc497SMikolaj Golubspawned process.
15832b17786SJohn-Mark GurneyNormally it will cause the child to exit, remove the pidfile(s)
15932b17786SJohn-Mark Gurneyand then terminate.
16032b17786SJohn-Mark Gurney.Pp
16153d49b37SJilles TjoelkerIf neither file or syslog output are selected, all output is redirected to the
16253d49b37SJilles Tjoelker.Nm
16353d49b37SJilles Tjoelkerprocess and written to stdout.
16453d49b37SJilles TjoelkerThe
16553d49b37SJilles Tjoelker.Fl f
16653d49b37SJilles Tjoelkeroption may be used to suppress the stdout output completely.
16753d49b37SJilles Tjoelker.Pp
16832b17786SJohn-Mark GurneyThe
16932b17786SJohn-Mark Gurney.Fl P
17032b17786SJohn-Mark Gurneyoption is useful combined with the
17132b17786SJohn-Mark Gurney.Fl r
17232b17786SJohn-Mark Gurneyoption as
17332b17786SJohn-Mark Gurney.Ar supervisor_pidfile
17432b17786SJohn-Mark Gurneycontains the ID of the supervisor
175112bfcf5SConrad Meyernot the child.
176112bfcf5SConrad MeyerThis is especially important if you use
17732b17786SJohn-Mark Gurney.Fl r
17832b17786SJohn-Mark Gurneyin an rc script as the
17932b17786SJohn-Mark Gurney.Fl p
18032b17786SJohn-Mark Gurneyoption will give you the child's ID to signal when you attempt to
18132b17786SJohn-Mark Gurneystop the service, causing
18232b17786SJohn-Mark Gurney.Nm
18332b17786SJohn-Mark Gurneyto restart the child.
184a866e170SRuslan Ermilov.Sh EXIT STATUS
185bd06a3ecSMike BarcroftThe
186bd06a3ecSMike Barcroft.Nm
187bd06a3ecSMike Barcroftutility exits 1 if an error is returned by the
188bd06a3ecSMike Barcroft.Xr daemon 3
18932b17786SJohn-Mark Gurneylibrary routine, 2 if
19032b17786SJohn-Mark Gurney.Ar child_pidfile
19132b17786SJohn-Mark Gurneyor
19232b17786SJohn-Mark Gurney.Ar supervisor_pidfile
193c6262cb6SPawel Jakub Dawidekis requested, but cannot be opened, 3 if process is already running (pidfile
19453d49b37SJilles Tjoelkerexists and is locked), 4 if
19553d49b37SJilles Tjoelker.Ar syslog_priority
19653d49b37SJilles Tjoelkeris not accepted, 5 if
19753d49b37SJilles Tjoelker.Ar syslog_facility
19853d49b37SJilles Tjoelkeris not accepted, 6 if
19953d49b37SJilles Tjoelker.Ar output_mask
20053d49b37SJilles Tjoelkeris not within the accepted range, 7 if
20153d49b37SJilles Tjoelker.Ar output_file
20253d49b37SJilles Tjoelkercannot be opened for appending, and otherwise 0.
203a866e170SRuslan Ermilov.Sh DIAGNOSTICS
20453d49b37SJilles TjoelkerIf the command cannot be executed, an error message is printed to
20553d49b37SJilles Tjoelkerstandard error.
20653d49b37SJilles TjoelkerThe exact behavior depends on the logging parameters and the
207bd06a3ecSMike Barcroft.Fl f
20853d49b37SJilles Tjoelkerflag.
209bd06a3ecSMike Barcroft.Sh SEE ALSO
21012d7249eSTom Rhodes.Xr setregid 2 ,
21112d7249eSTom Rhodes.Xr setreuid 2 ,
212bd06a3ecSMike Barcroft.Xr daemon 3 ,
213bd06a3ecSMike Barcroft.Xr exec 3 ,
214c6262cb6SPawel Jakub Dawidek.Xr pidfile 3 ,
215bd06a3ecSMike Barcroft.Xr termios 4 ,
216bd06a3ecSMike Barcroft.Xr tty 4
217bd06a3ecSMike Barcroft.Sh HISTORY
218bd06a3ecSMike BarcroftThe
219bd06a3ecSMike Barcroft.Nm
220bd06a3ecSMike Barcroftutility first appeared in
221a7d4e017STom Rhodes.Fx 4.7 .
222