| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- .TH start\-stop\-daemon 8 "2009-02-26" "Debian Project" "dpkg utilities"
- .SH NAME
- start\-stop\-daemon \- start and stop system daemon programs
- .
- .SH SYNOPSIS
- .B start\-stop\-daemon
- .RI [ options ]
- .I command
- .
- .SH DESCRIPTION
- .B start\-stop\-daemon
- is used to control the creation and termination of system-level processes.
- Using one of the matching options, \fBstart\-stop\-daemon\fP
- can be configured to find existing instances of a running process.
- .PP
- Note: unless
- .B \-\-pidfile
- is specified,
- .B start\-stop\-daemon
- behaves similar to
- .BR killall (1).
- .B start\-stop\-daemon
- will scan the process table looking for any processes which
- match the process name, uid, and/or gid (if specified). Any
- matching process will prevent
- .BR \-\-start
- from starting the daemon. All matching processes will be sent the TERM
- signal (or the one specified via \fB\-\-signal\fP or \fB\-\-retry\fP) if
- .BR \-\-stop
- is specified. For daemons which have long-lived children
- which need to live through a
- .BR \-\-stop ,
- you must specify a pidfile.
- .
- .SH COMMANDS
- .TP
- .BR \-S ", " \-\-start " [" \-\- "] \fIarguments\fP"
- Check for the existence of a specified process.
- If such a process exists,
- .B start\-stop\-daemon
- does nothing, and exits with error status 1 (0 if
- .BR \-\-oknodo
- is specified).
- If such a process does not exist, it starts an
- instance, using either the executable specified by
- .B \-\-exec
- or, if specified, by
- .BR \-\-startas .
- Any arguments given after
- .BR \-\-
- on the command line are passed unmodified to the program being
- started.
- .TP
- .BR \-K ", " \-\-stop
- Checks for the existence of a specified process.
- If such a process exists,
- .B start\-stop\-daemon
- sends it the signal specified by
- .BR \-\-signal ,
- and exits with error status 0.
- If such a process does not exist,
- .B start\-stop\-daemon
- exits with error status 1
- (0 if
- .BR \-\-oknodo
- is specified). If
- .B \-\-retry
- is specified, then
- .B start\-stop\-daemon
- will check that the process(es) have terminated.
- .TP
- .BR \-H ", " \-\-help
- Show usage information and exit.
- .TP
- .BR \-V ", " \-\-version
- Show the program version and exit.
- .
- .SH MATCHING OPTIONS
- .TP
- .BR \-p ", " \-\-pidfile " \fIpid-file\fP"
- Check whether a process has created the file
- .IR pid-file .
- .TP
- .BR \-x ", " \-\-exec " \fIexecutable\fP"
- Check for processes that are instances of this executable (according to
- \fB/proc/\fIpid\fP/exe\fR).
- .TP
- .BR \-n ", " \-\-name " \fIprocess-name\fP"
- Check for processes with the name
- .I process-name
- (according to
- .BR /proc/\fIpid\fB/stat\fP ).
- .TP
- .BR \-u ", " \-\-user " \fIusername\fP|\fIuid\fP
- Check for processes owned by the user specified by
- .I username
- or
- .IR uid .
- .
- .SH OPTIONS
- .TP
- .BR \-g ", " \-\-group " \fIgroup\fP|\fIgid\fP"
- Change to \fIgroup\fP or \fIgid\fP when starting the process.
- .TP
- .BR \-s ", " \-\-signal " \fIsignal\fP"
- With
- .BR \-\-stop ,
- specifies the signal to send to processes being stopped (default TERM).
- .TP
- .BR \-R ", " \-\-retry " \fItimeout\fP|\fIschedule\fP"
- With
- .BR \-\-stop ,
- specifies that
- .B start\-stop\-daemon
- is to check whether the process(es)
- do finish. It will check repeatedly whether any matching processes
- are running, until none are. If the processes do not exit it will
- then take further action as determined by the schedule.
- If
- .I timeout
- is specified instead of
- .IR schedule ,
- then the schedule
- .IB signal / timeout /KILL/ timeout
- is used, where
- .I signal
- is the signal specified with
- .BR \-\-signal .
- .I schedule
- is a list of at least two items separated by slashes
- .RB ( / );
- each item may be
- .BI \- signal-number
- or [\fB\-\fP]\fIsignal-name\fP,
- which means to send that signal,
- or
- .IR timeout ,
- which means to wait that many seconds for processes to
- exit,
- or
- .BR forever ,
- which means to repeat the rest of the schedule forever if
- necessary.
- If the end of the schedule is reached and
- .BR forever
- is not specified, then
- .B start\-stop\-daemon
- exits with error status 2.
- If a schedule is specified, then any signal specified
- with
- .B \-\-signal
- is ignored.
- .TP
- .BR \-a ", " \-\-startas " \fIpathname\fP"
- With
- .BR \-\-start ,
- start the process specified by
- .IR pathname .
- If not specified, defaults to the argument given to
- .BR \-\-exec .
- .TP
- .BR \-t ", " \-\-test
- Print actions that would be taken and set appropriate return value,
- but take no action.
- .TP
- .BR \-o ", " \-\-oknodo
- Return exit status 0 instead of 1 if no actions are (would be) taken.
- .TP
- .BR \-q ", " \-\-quiet
- Do not print informational messages; only display error messages.
- .TP
- .BR \-c ", " \-\-chuid " \fIusername\fR|\fIuid\fP"
- Change to this username/uid before starting the process. You can also
- specify a group by appending a
- .BR : ,
- then the group or gid in the same way
- as you would for the `chown' command (\fIuser\fP\fB:\fP\fIgroup\fP).
- If a user is specified without a group, the primary GID for that user is used.
- When using this option
- you must realize that the primary and supplemental groups are set as well,
- even if the
- .B \-\-group
- option is not specified. The
- .B \-\-group
- option is only for
- groups that the user isn't normally a member of (like adding per process
- group membership for generic users like
- .BR nobody ).
- .TP
- .BR \-r ", " \-\-chroot " \fIroot\fP"
- Chdir and chroot to
- .I root
- before starting the process. Please note that the pidfile is also written
- after the chroot.
- .TP
- .BR \-d ", " \-\-chdir " \fIpath\fP"
- Chdir to
- .I path
- before starting the process. This is done after the chroot if the
- \fB\-r\fP|\fB\-\-chroot\fP option is set. When not specified,
- start\-stop\-daemon will chdir to the root directory before starting
- the process.
- .TP
- .BR \-b ", " \-\-background
- Typically used with programs that don't detach on their own. This option
- will force
- .B start\-stop\-daemon
- to fork before starting the process, and force it into the background.
- .B WARNING: start\-stop\-daemon
- cannot check the exit status if the process fails to execute for
- .B any
- reason. This is a last resort, and is only meant for programs that either
- make no sense forking on their own, or where it's not feasible to add the
- code for them to do this themselves.
- .TP
- .BR \-N ", " \-\-nicelevel " \fIint\fP"
- This alters the priority of the process before starting it.
- .TP
- .BR \-P ", " \-\-procsched " \fIpolicy\fP\fB:\fP\fIpriority\fP"
- This alters the process scheduler policy and priority of the process before
- starting it. The priority can be optionally specified by appending a \fB:\fP
- followed by the value. The default \fIpriority\fP is 0. The currently
- supported policy values are \fBother\fP, \fBfifo\fP and \fBrr\fP.
- .TP
- .BR \-I ", " \-\-iosched " \fIclass\fP\fB:\fP\fIpriority\fP"
- This alters the IO scheduler class and priority of the process before starting
- it. The priority can be optionally specified by appending a \fB:\fP followed
- by the value. The default \fIpriority\fP is 4, unless \fIclass\fP is \fBidle\fP,
- then \fIpriority\fP will always be 7. The currently supported values for
- \fIclass\fP are \fBidle\fP, \fBbest-effort\fP and \fBreal-time\fP.
- .TP
- .BR \-k ", " \-\-umask " \fImask\fP"
- This sets the umask of the process before starting it.
- .TP
- .BR \-m ", " \-\-make\-pidfile
- Used when starting a program that does not create its own pid file. This
- option will make
- .B start\-stop\-daemon
- create the file referenced with
- .B \-\-pidfile
- and place the pid into it just before executing the process. Note, the
- file will not be removed when stopping the program.
- .B NOTE:
- This feature may not work in all cases. Most notably when the program
- being executed forks from its main process. Because of this, it is usually
- only useful when combined with the
- .B \-\-background
- option.
- .TP
- .BR \-v ", " \-\-verbose
- Print verbose informational messages.
- .
- .SH EXIT STATUS
- .B start\-stop\-daemon
- returns 0 if the requested action was performed, or if
- .B \-\-oknodo
- is specified and either
- .B \-\-start
- was specified and a matching process was already running, or
- .B \-\-stop
- was specified and there were no matching processes. If
- .B \-\-oknodo
- was not specified and nothing was done, 1 is returned. If
- .B --stop
- and
- .B --retry
- were specified, but the end of the schedule was reached and the processes were
- still running, the error value is 2. For all other errors, the status is 3.
- .
- .SH EXAMPLE
- Start the \fBfood\fP daemon, unless one is already running (a process named
- food, running as user food, with pid in food.pid):
- .IP
- .nf
- start\-stop\-daemon \-\-start \-\-oknodo \-\-user food \-\-name food \-\-pidfile /var/run/food.pid \-\-startas /usr/sbin/food \-\-chuid food \-\- \-\-daemon
- .fi
- .PP
- Send \fBSIGTERM\fP to \fBfood\fP and wait up to 5 seconds for it to stop:
- .IP
- .nf
- start\-stop\-daemon \-\-stop \-\-oknodo \-\-user food \-\-name food \-\-pidfile /var/run/food.pid \-\-retry 5
- .fi
- .PP
- Demonstration of a custom schedule for stopping \fBfood\fP:
- .IP
- .nf
- start\-stop\-daemon \-\-stop \-\-oknodo \-\-user food \-\-name food \-\-pidfile /var/run/food.pid \-\-retry=TERM/30/KILL/5
- .fi
- .PP
- .
- .SH AUTHORS
- Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> based on
- a previous version by Ian Jackson <ian@chiark.greenend.org.uk>.
- Manual page by Klee Dienes <klee@mit.edu>, partially reformatted
- by Ian Jackson.
|