| .TH start\-stop\-daemon 8 "2011-07-04" "Debian Project" "dpkg utilities" |
| .SH NAME |
| start\-stop\-daemon \- start and stop system daemon programs |
| . |
| .SH SYNOPSIS |
| .B start\-stop\-daemon |
| .RI [ option "...] " 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 \-T ", " \-\-status |
| Check for the existence of a specified process, and returns an exit status |
| code, according to the LSB Init Script Actions. |
| .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[\fB:\fP\fIgroup\fR|\fIgid\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 |
| .TP |
| .B 0 |
| The requested action was performed. If |
| .B \-\-oknodo |
| was specified, it's also possible that nothing had to be done. |
| This can happen when |
| .B \-\-start |
| was specified and a matching process was already running, or when |
| .B \-\-stop |
| was specified and there were no matching processes. |
| .TP |
| .B 1 |
| If |
| .B \-\-oknodo |
| was not specified and nothing was done. |
| .TP |
| .B 2 |
| If |
| .B \-\-stop |
| and |
| .B \-\-retry |
| were specified, but the end of the schedule was reached and the processes were |
| still running. |
| .TP |
| .B 3 |
| Any other error. |
| .PP |
| When using the \fB\-\-status\fP command, the following status codes are |
| returned: |
| .TP |
| .B 0 |
| Program is running. |
| .TP |
| .B 1 |
| Program is not running and the pid file exists. |
| .TP |
| .B 3 |
| Program is not running. |
| .TP |
| .B 4 |
| Unable to determine program status. |
| . |
| .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. |