xref: /freebsd/usr.sbin/daemon/daemon.8 (revision a6f795cc89cbedbf1be0ab504fa6ed863e1eec5e)
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.\"
27*a6f795ccSIhor Antonov.Dd December 27, 2023
28bd06a3ecSMike Barcroft.Dt DAEMON 8
29217758f8SRuslan Ermilov.Os
30bd06a3ecSMike Barcroft.Sh NAME
31bd06a3ecSMike Barcroft.Nm daemon
32bd06a3ecSMike Barcroft.Nd run detached from the controlling terminal
33bd06a3ecSMike Barcroft.Sh SYNOPSIS
34217758f8SRuslan Ermilov.Nm
354cd407ecSMaxim Sobolev.Op Fl cfHrS
3632b17786SJohn-Mark Gurney.Op Fl p Ar child_pidfile
3732b17786SJohn-Mark Gurney.Op Fl P Ar supervisor_pidfile
38112bfcf5SConrad Meyer.Op Fl t Ar title
39e6d4b388STom Rhodes.Op Fl u Ar user
4053d49b37SJilles Tjoelker.Op Fl m Ar output_mask
4153d49b37SJilles Tjoelker.Op Fl o Ar output_file
4253d49b37SJilles Tjoelker.Op Fl s Ar syslog_priority
4353d49b37SJilles Tjoelker.Op Fl T Ar syslog_tag
4453c2c791SMaxim Konovalov.Op Fl l Ar syslog_facility
45c1ee3587SIan Lepore.Op Fl R Ar restart_delay_seconds
46217758f8SRuslan Ermilov.Ar command arguments ...
47bd06a3ecSMike Barcroft.Sh DESCRIPTION
48bd06a3ecSMike BarcroftThe
49bd06a3ecSMike Barcroft.Nm
50bd06a3ecSMike Barcroftutility detaches itself from the controlling terminal and
51bd06a3ecSMike Barcroftexecutes the program specified by its arguments.
52e6d4b388STom RhodesPrivileges may be lowered to the specified user.
5353d49b37SJilles TjoelkerThe output of the daemonized process may be redirected to syslog and to a
5453d49b37SJilles Tjoelkerlog file.
55bd06a3ecSMike Barcroft.Pp
56bd06a3ecSMike BarcroftThe options are as follows:
57217758f8SRuslan Ermilov.Bl -tag -width indent
580a402ad2SIhor Antonov.It Fl c , Fl -change-dir
59217758f8SRuslan ErmilovChange the current working directory to the root
60217758f8SRuslan Ermilov.Pq Dq Pa / .
610a402ad2SIhor Antonov.It Fl f , Fl -close-fds
62bd06a3ecSMike BarcroftRedirect standard input, standard output and standard error to
63bd06a3ecSMike Barcroft.Pa /dev/null .
640ec0f10dSIan LeporeWhen this option is used together with any of the options related to file
650ec0f10dSIan Leporeor syslog output, the standard file descriptors are first redirected to
660ec0f10dSIan Lepore.Pa /dev/null ,
670ec0f10dSIan Leporethen stdout and/or stderr is redirected to a file or to syslog as
680ec0f10dSIan Leporespecified by the other options.
690a402ad2SIhor Antonov.It Fl H , Fl -sighup
704cd407ecSMaxim SobolevClose
714cd407ecSMaxim Sobolev.Pa output_file
72735637f7SMateusz Piotrowskiand re-open it when signal
73735637f7SMateusz Piotrowski.Dv SIGHUP
74735637f7SMateusz Piotrowskiis received, for interoperability with
754cd407ecSMaxim Sobolev.Xr newsyslog 1
764cd407ecSMaxim Sobolevand similar log rotation / archival mechanisms.  If
770a402ad2SIhor Antonov.Fl -output-file
784cd407ecSMaxim Sobolevis not specified, this flag is ignored.
79ee23e1e4SMateusz Piotrowski.It Fl l , Fl -syslog-facility Ar syslog_facility
80ee23e1e4SMateusz PiotrowskiThese facilities are accepted:
81ee23e1e4SMateusz Piotrowski.Cm auth , authpriv , console , cron , daemon ,
82ee23e1e4SMateusz Piotrowski.Cm ftp , kern , lpr , mail , news , ntp , security ,
83ee23e1e4SMateusz Piotrowski.Cm syslog , user , uucp ,
84ee23e1e4SMateusz Piotrowskiand
85ee23e1e4SMateusz Piotrowskilocal facilities from
86ee23e1e4SMateusz Piotrowski.Cm local0
87ee23e1e4SMateusz Piotrowskito
88ee23e1e4SMateusz Piotrowski.Cm local7 .
89ee23e1e4SMateusz PiotrowskiThe default is
90ee23e1e4SMateusz Piotrowski.Cm daemon .
91ee23e1e4SMateusz Piotrowski.It Fl m , Fl -output-mask Ar output_mask
92ee23e1e4SMateusz PiotrowskiRedirect output from the child process stdout
93ee23e1e4SMateusz Piotrowski.Pq Cm 1 ,
94ee23e1e4SMateusz Piotrowskistderr
95ee23e1e4SMateusz Piotrowski.Pq Cm 2 ,
96ee23e1e4SMateusz Piotrowskior both
97ee23e1e4SMateusz Piotrowski.Pq Cm 3 .
98ee23e1e4SMateusz PiotrowskiThis value specifies what is sent to syslog and the log file.
99ee23e1e4SMateusz PiotrowskiThe default is
100ee23e1e4SMateusz Piotrowski.Cm 3 .
1010a402ad2SIhor Antonov.It Fl o , Fl -output-file Ar output_file
10253d49b37SJilles TjoelkerAppend output from the daemonized process to
10353d49b37SJilles Tjoelker.Pa output_file .
10453d49b37SJilles TjoelkerIf the file does not exist, it is created with permissions 0600.
1054cd407ecSMaxim SobolevWhen this option is used together with options
1060a402ad2SIhor Antonov.Fl -change-dir
10754c743e5SMateusz Piotrowskiand
1080a402ad2SIhor Antonov.Fl -sighup
1094cd407ecSMaxim Sobolevthe absolute path needs to be provided to ensure
1104cd407ecSMaxim Sobolev.Nm
111735637f7SMateusz Piotrowskican re-open the file after a
112735637f7SMateusz Piotrowski.Dv SIGHUP .
1130a402ad2SIhor Antonov.It Fl P , Fl -supervisor-pidfile Ar supervisor_pidfile
11432b17786SJohn-Mark GurneyWrite the ID of the
11532b17786SJohn-Mark Gurney.Nm
11632b17786SJohn-Mark Gurneyprocess into the
11732b17786SJohn-Mark Gurney.Ar supervisor_pidfile
11832b17786SJohn-Mark Gurneyusing the
11932b17786SJohn-Mark Gurney.Xr pidfile 3
12032b17786SJohn-Mark Gurneyfunctionality.
12132b17786SJohn-Mark GurneyThe program is executed in a spawned child process while the
12232b17786SJohn-Mark Gurney.Nm
12332b17786SJohn-Mark Gurneywaits until it terminates to keep the
12432b17786SJohn-Mark Gurney.Ar supervisor_pidfile
12532b17786SJohn-Mark Gurneylocked and removes it after the process exits.
12632b17786SJohn-Mark GurneyThe
12732b17786SJohn-Mark Gurney.Ar supervisor_pidfile
1282ad43027SMikolaj Golubowner is the user who runs the
1292ad43027SMikolaj Golub.Nm
1302ad43027SMikolaj Golubregardless of whether the
1310a402ad2SIhor Antonov.Fl -user
1322ad43027SMikolaj Goluboption is used or not.
133ee23e1e4SMateusz Piotrowski.It Fl p , Fl -child-pidfile Ar child_pidfile
134ee23e1e4SMateusz PiotrowskiWrite the ID of the created process into the
135ee23e1e4SMateusz Piotrowski.Ar child_pidfile
136ee23e1e4SMateusz Piotrowskiusing the
137ee23e1e4SMateusz Piotrowski.Xr pidfile 3
138ee23e1e4SMateusz Piotrowskifunctionality.
139ee23e1e4SMateusz PiotrowskiThe program is executed in a spawned child process while the
140ee23e1e4SMateusz Piotrowski.Nm
141ee23e1e4SMateusz Piotrowskiwaits until it terminates to keep the
142ee23e1e4SMateusz Piotrowski.Ar child_pidfile
143ee23e1e4SMateusz Piotrowskilocked and removes it after the process exits.
144ee23e1e4SMateusz PiotrowskiThe
145ee23e1e4SMateusz Piotrowski.Ar child_pidfile
146ee23e1e4SMateusz Piotrowskiowner is the user who runs the
147ee23e1e4SMateusz Piotrowski.Nm
148ee23e1e4SMateusz Piotrowskiregardless of whether the
149ee23e1e4SMateusz Piotrowski.Fl -user
150ee23e1e4SMateusz Piotrowskioption is used or not.
1510a402ad2SIhor Antonov.It Fl R , Fl -restart-delay Ar restart_delay_seconds
15237820b87SIan LeporeSupervise and restart the program after the specified delay
15337820b87SIan Leporeif it has been terminated.
154*a6f795ccSIhor AntonovValid values are 1-31536000 (up to 1 year).
155ee23e1e4SMateusz Piotrowski.It Fl r , Fl -restart
156ee23e1e4SMateusz PiotrowskiSupervise and restart the program after a one-second delay if it has
157ee23e1e4SMateusz Piotrowskibeen terminated.
158ee23e1e4SMateusz Piotrowski.It Fl S , Fl -syslog
159ee23e1e4SMateusz PiotrowskiEnable syslog output.
160ee23e1e4SMateusz PiotrowskiThis is implicitly applied if other syslog parameters are provided.
161ee23e1e4SMateusz PiotrowskiThe default values are daemon, notice, and daemon for facility, priority, and
162ee23e1e4SMateusz Piotrowskitag, respectively.
1630a402ad2SIhor Antonov.It Fl s , Fl -syslog-priority Ar syslog_priority
164a5bc8e8aSMateusz PiotrowskiThese priorities are accepted:
165a5bc8e8aSMateusz Piotrowski.Cm emerg , alert , crit , err , warning ,
166a5bc8e8aSMateusz Piotrowski.Cm notice , info ,
167a5bc8e8aSMateusz Piotrowskiand
168a5bc8e8aSMateusz Piotrowski.Cm debug .
169a5bc8e8aSMateusz PiotrowskiThe default is
170a5bc8e8aSMateusz Piotrowski.Cm notice .
1710a402ad2SIhor Antonov.It Fl T , Fl -syslog-tag Ar syslog_tag
17253d49b37SJilles TjoelkerSet the tag which is appended to all syslog messages.
173a5bc8e8aSMateusz PiotrowskiThe default is
174a5bc8e8aSMateusz Piotrowski.Cm daemon .
175ee23e1e4SMateusz Piotrowski.It Fl t , Fl -title Ar title
176ee23e1e4SMateusz PiotrowskiSet the title for the daemon process.
177ee23e1e4SMateusz PiotrowskiThe default is the daemonized invocation.
178ee23e1e4SMateusz Piotrowski.It Fl u , Fl -user Ar user
179ee23e1e4SMateusz PiotrowskiLogin name of the user to execute the program under.
180c1207678SMateusz PiotrowskiEnvironment variables
181c1207678SMateusz Piotrowski.Ev HOME , USER ,
182c1207678SMateusz Piotrowskiand
183c1207678SMateusz Piotrowski.Ev SHELL
184c1207678SMateusz Piotrowskiare set accordingly.
185ee23e1e4SMateusz PiotrowskiRequires adequate superuser privileges.
186b6193c24SMikolaj Golub.El
187b6193c24SMikolaj Golub.Pp
18853d49b37SJilles TjoelkerIf any of the options
1890a402ad2SIhor Antonov.Fl -child-pidfile ,
1900a402ad2SIhor Antonov.Fl -output-mask ,
1910a402ad2SIhor Antonov.Fl -restart ,
1920a402ad2SIhor Antonov.Fl -restart-delay ,
1930a402ad2SIhor Antonov.Fl -supervisor-pidfile ,
1940a402ad2SIhor Antonov.Fl -syslog ,
1950a402ad2SIhor Antonov.Fl -syslog-facility
1960a402ad2SIhor Antonov.Fl -syslog-priority ,
1970a402ad2SIhor Antonov.Fl -syslog-tag ,
198b6193c24SMikolaj Golubor
1990a402ad2SIhor Antonov.Fl -output ,
20053d49b37SJilles Tjoelkerare specified, the program is executed in a spawned child process.
201b6193c24SMikolaj GolubThe
202b6193c24SMikolaj Golub.Nm
20332b17786SJohn-Mark Gurneywaits until it terminates to keep the pid file(s) locked and removes them
204b6193c24SMikolaj Golubafter the process exits or restarts the program.
205b6193c24SMikolaj GolubIn this case if the monitoring
206195fc497SMikolaj Golub.Nm
207735637f7SMateusz Piotrowskireceives software termination signal
208735637f7SMateusz Piotrowski.Pq Dv SIGTERM
209735637f7SMateusz Piotrowskiit forwards it to the
210195fc497SMikolaj Golubspawned process.
21132b17786SJohn-Mark GurneyNormally it will cause the child to exit, remove the pidfile(s)
21232b17786SJohn-Mark Gurneyand then terminate.
21332b17786SJohn-Mark Gurney.Pp
21453d49b37SJilles TjoelkerIf neither file or syslog output are selected, all output is redirected to the
21553d49b37SJilles Tjoelker.Nm
21653d49b37SJilles Tjoelkerprocess and written to stdout.
21753d49b37SJilles TjoelkerThe
2180a402ad2SIhor Antonov.Fl -close-fds
21953d49b37SJilles Tjoelkeroption may be used to suppress the stdout output completely.
22053d49b37SJilles Tjoelker.Pp
22132b17786SJohn-Mark GurneyThe
2220a402ad2SIhor Antonov.Fl -supervisor-pidfile
22332b17786SJohn-Mark Gurneyoption is useful combined with the
2240a402ad2SIhor Antonov.Fl -restart
22532b17786SJohn-Mark Gurneyoption as
22632b17786SJohn-Mark Gurney.Ar supervisor_pidfile
22732b17786SJohn-Mark Gurneycontains the ID of the supervisor
228112bfcf5SConrad Meyernot the child.
229112bfcf5SConrad MeyerThis is especially important if you use
2300a402ad2SIhor Antonov.Fl -restart
23132b17786SJohn-Mark Gurneyin an rc script as the
2320a402ad2SIhor Antonov.Fl -child-pidfile
23332b17786SJohn-Mark Gurneyoption will give you the child's ID to signal when you attempt to
23432b17786SJohn-Mark Gurneystop the service, causing
23532b17786SJohn-Mark Gurney.Nm
23632b17786SJohn-Mark Gurneyto restart the child.
237a866e170SRuslan Ermilov.Sh EXIT STATUS
238bd06a3ecSMike BarcroftThe
239bd06a3ecSMike Barcroft.Nm
240bd06a3ecSMike Barcroftutility exits 1 if an error is returned by the
241bd06a3ecSMike Barcroft.Xr daemon 3
24232b17786SJohn-Mark Gurneylibrary routine, 2 if
24332b17786SJohn-Mark Gurney.Ar child_pidfile
24432b17786SJohn-Mark Gurneyor
24532b17786SJohn-Mark Gurney.Ar supervisor_pidfile
246c6262cb6SPawel Jakub Dawidekis requested, but cannot be opened, 3 if process is already running (pidfile
24753d49b37SJilles Tjoelkerexists and is locked), 4 if
24853d49b37SJilles Tjoelker.Ar syslog_priority
24953d49b37SJilles Tjoelkeris not accepted, 5 if
25053d49b37SJilles Tjoelker.Ar syslog_facility
25153d49b37SJilles Tjoelkeris not accepted, 6 if
25253d49b37SJilles Tjoelker.Ar output_mask
25353d49b37SJilles Tjoelkeris not within the accepted range, 7 if
25453d49b37SJilles Tjoelker.Ar output_file
25553d49b37SJilles Tjoelkercannot be opened for appending, and otherwise 0.
256a866e170SRuslan Ermilov.Sh DIAGNOSTICS
25753d49b37SJilles TjoelkerIf the command cannot be executed, an error message is printed to
25853d49b37SJilles Tjoelkerstandard error.
25953d49b37SJilles TjoelkerThe exact behavior depends on the logging parameters and the
2600a402ad2SIhor Antonov.Fl -close-fds
26153d49b37SJilles Tjoelkerflag.
262bd06a3ecSMike Barcroft.Sh SEE ALSO
263a641e445SMateusz Piotrowski.Xr nohup 1 ,
26412d7249eSTom Rhodes.Xr setregid 2 ,
26512d7249eSTom Rhodes.Xr setreuid 2 ,
266bd06a3ecSMike Barcroft.Xr daemon 3 ,
267bd06a3ecSMike Barcroft.Xr exec 3 ,
268c6262cb6SPawel Jakub Dawidek.Xr pidfile 3 ,
269bd06a3ecSMike Barcroft.Xr termios 4 ,
270bd06a3ecSMike Barcroft.Xr tty 4
271bd06a3ecSMike Barcroft.Sh HISTORY
272bd06a3ecSMike BarcroftThe
273bd06a3ecSMike Barcroft.Nm
274bd06a3ecSMike Barcroftutility first appeared in
275a7d4e017STom Rhodes.Fx 4.7 .
276