killproc(8)
NAME
Killproc - Send signals to processes by full path name
SYNOPSIS
killproc [-v] [-q] [-L] [-g|-G] [-p pid_file] [-c root] [-t<sec>] [-SIG] /full/path/to/executable killproc [-v] [-q] [-g|-G] [-n] [-t<sec>] [-SIG] name_of_kernel_thread killproc [-v] [-q] [-g|-G] [-n] [-t<sec>] [-SIG] base_ name_of_executable killproc -l
DESCRIPTION
killproc sends signals to all processes that use the spec
ified executable. If no signal name is specified, the
signal SIGTERM is sent. If this program is not called with
the name killproc then SIGHUP is used. Note that if
SIGTERM is used and does not terminate a process the sig
nal SIGKILL is send after a few seconds (default is 5 sec
onds, see option -t). If a program has been terminated
successfully and a verified pid file was found, this pid
file will be removed if the terminated process didn't
already do so.
killproc does not use the pid to send a signal to a pro
cess but the full path of the corresponding program which
is used to identify the executable (see proc(5)). Only if
inode number (/proc/<pid>/exe) and full path name of the
executable (/proc/<pid>/cmdline) are unavailable or if the
executable has changed its zeroth argument, killproc uses
the base name (/proc/<pid>/stat) to identify the running
program. Note that if the option -n for kernel thread is
given, only (/proc/<pid>/stat) is used. For this case an
existing symbolic link (/proc/<pid>/exe) indicates that
the <pid> is not a kernel thread.
The last variant of the killproc call is only with the
basename of the executable. This is required by the Linux
Standard Base Specification (LSB). Note that this dis
ables the comparision of the inodes of the executable and
the information found within the proc table (see proc(5)).
This implies that if no pid file is found it may happens
that programs or script with the same base name will
killed instead. killproc tries to determine the pid of
its parent and pid of the parent of its parent to not to
kill those two processes.
Extended functionality is provided by the -p pid_file
option (former option -f changed due to the LSB specifica
tion). If this option is specified, killproc tries to
send the signal to the pid read from this file instead of
from the default pid file (/var/run/<basename>.pid).
The option -v turns on verbosity about which signal is
being sent. The option -q is ignored for compatibility
with older versions. If the option -G is used, the signal
will not only sent to the running executable, but also to
all members of the session that the specified executable
leads. Whereas the option -g the signal sends to the group
including the executable. If unsure use -G.
REQUIRED
- /full/path/to/executable or name_of_kernel_thread
- Specifies the executable to which the signal should
be sent, or alternatively, if the option -n is
used, the name of the kernel thread. This argument
is always required.
OPTIONS
- -G Sends the signal to all session followers (chil
- dren) of the identified process.
- -g Sends the signal to all members of the session
- including the identified process. Note that usu
ally the option -G should be used. - -L This option causes symlinks to be followed, as the
- like-named option in ls(1). Note: for the file
name the original name of the program is used
instead of the name of the symbolic link. - -p pid_file
- (Former option -f changed due to the LSB specifica
tion.) Use an alternate pid file instead of the
default (/var/run/<basename>.pid). - -c root
- Change root directory to root for services which
have been started with this option by startproc(8). - -n This option indicates that a kernel thread should
- be signaled. In this case not the executable with
its full path name is required but the name of the
kernel thread. - -SIG Signals can be specified either by name (e.g.
- -HUP, -SIGHUP) or by number (e.g. -1).
- -t<sec>
- The number <sec> specifies the seconds to wait
between the sent signal SIGTERM and the subsequen tially signal SIGKILL if the first SIGTERM does not show any result within the first few milli seconds.
This defaults to 5 seconds. - -q This option is ignored.
- -v Be more verbose.
- -l This option list all available signals and some of
- their synonyms by their number and signal names to
standard out. and exits.
EXAMPLES
- killproc -TERM /usr/sbin/sendmail
- sends the signal SIGTERM to the running sendmail
process. If a pid file sendmail.pid exists in
/var/run/ then the pid from this file is being used
after verification to terminate the sendmail pro
cess. Other running processes are ignored. - killproc -p /var/myrun/lpd.pid -TERM /usr/sbin/lpd
sends the signal SIGTERM to the pid found in /var/myrun/lpd.pid if and only if this pid belongs to /usr/sbin/lpd. If /var/myrun/lpd.pid does not exist the option will be ignored. The exit status
is set to 0 for successfully delivering the given
signals SIGTERM and SIGKILL otherwise to 7 if the program was not running. It is also successful if
no signal was specified and no program was there for Termination because it is already terminated.
EXIT CODES
- The exit codes have the following LSB conform conditions:
- 0 Success or program was not running (no signal
- specified)
- 1 Generic or unspecified error
2 Invalid or excess argument(s)
4 Insufficient privilege(s)
5 Program is not installed
7 Program was not running to receive the speci - fied signal
- In some error cases, diagnostic output is sent to standard
error, or, if standard error is not available, syslogd(8) is being used.
NOTE
killproc is a replacment for the Bourne shell function
killproc found in the widely used SysVinit package of
Miquel van Smoorenburg, <miquels@cistron.nl>.
BUGS
Identifying a process based on the executable file and the
corresponding inode number only works if the process stays
alive during killproc's execution. Impure executables like
shell scripts (the inode number of the shell is not iden
tical to that of the script) and programs rewriting their
zeroth argument may not be identified by a file name.
Killproc isn't able to signal processes being in the zom
bie state. Zombies are processes which arn't alive but
listed in the process table to have the exit status ready
for the corresponding parent processes.
FILES
/proc/ path to the proc file system (see proc(5)).
- /etc/init.d/
- path to the SuSE boot concept script base directory
as required by the Linux Standard Base Specifica
tion (LSB) (see init.d(7)).
SEE ALSO
startproc(8), checkproc(8), insserv(8), init.d(7),
kill(1), skill(1), killall(8), killall5(8), signal(7),
proc(5).
COPYRIGHT
1994-2000 Werner Fink, 1996-2000 SuSE GmbH Nuernberg, Ger
many.
AUTHOR
- Werner Fink <werner@suse.de>