skill



SKILL(1)                Local UNIX Programmer's Manual                SKILL(1)


NAME

       skill, snice - signal or reprioritize specified processes


SYNOPSIS

       skill [-signal] [-ivfwn] {tty user command pid}
       snice [(-|+)priority] [-ivfwn] {tty user command pid}
       skill -l


DESCRIPTION

       Skill sends the terminate signal to a set of processes.  If a signal
       name (or number) preceded by a `-' is given, that signal will be
       substituted for terminate.  The command `skill -l' displays a list of
       available signals.

       Snice alters the scheduling priority of selected processes.  By
       default, the new priority is +4, but an argument of the form `+n' (or
       `-n') can be used to specify some other value.  Since the meaning of
       "priority" differs wildly, snice will normalize priorities to the range
       PRIO_MIN through PRIO_MAX; generally `-20' is the highest priority and
       `+20' is the (s)lowest.  Apart from the super-user, users may only
       increment their priority.  An invalid priority is quietly rounded up or
       down to the first acceptable value.  Where multiple scheduling classes
       are available, snice is only guaranteed to operate on processes in the
       "Time Share" class.

       Options accepted by both commands are as follows:

       -i     In interactive mode, the user is prompted with each process that
              is a candidate for action.  Responding `y' will carry out the
              stated action.  Also, a ^D at this prompt causes skill or snice
              to exit immediately.

       -v     In verbose mode, the id of each process successfully acted upon
              is displayed.  Alternately, when this is the only argument,
              version information is displayed and the program exits.

       -f     In fast mode, the machine-dependent code responsible for reading
              processes is allowed to make decisions to improve speed at the
              expense of error reporting (e.g. commands may not be displayed).
              This option mainly exists to aid in killing runaway processes on
              operating systems with complicated VM designs.

       -w     Display warning messages for unreachable processes.

       -n     Display process id's but do not act on them.

       All command line arguments are order independent.  Skill and snice
       allow processes to be specified using any combination of ttys, user
       names, and commands (as well as process id's).  Only processes that
       match something in each category are acted upon.  An empty category
       guarantees a match.  For example, `skill -HUP vi ex tty00' will send
       the hangup signal to all vi(1) and ex(1) processes associated with
       tty00.  Similarly, `snice +10 find root' will change the priority of
       all find(1) processes owned by root to +10.

       Unprivileged users can only change their own processes so they need not
       specify their user name as part of the argument list.  On the other
       hand, the super-user should be more careful (e.g. the command `snice -5
       vi' will change the priority of every vi(1) process on the system).

       Since skill and snice categorize their arguments, there is a chance
       that they will do so incorrectly (e.g. a system command is also a user
       name).  Both programs try to match an argument with a tty, a user name,
       and a process id, before classifying it as a command.  To override
       this, an argument can be forced to a particular type by preceding it
       with "-c" (command), "-u" (user), "-t" (tty), or "-p" (process id).  As
       a special case, a question mark ("?") is categorized as a tty, and will
       match processes without controlling ttys.

       When targeting processes by command name, both skill and snice use the
       actual name of the binary (i.e. that which is used for accounting
       purposes).  Otherwise, as processes are permitted to change their
       argument vector (specifically argv[0]), an errant program could
       continually change its name to avoid being acted upon.  When targeting
       a process that has changed its name, use the "-nv" options to see its
       actual name.  Command names may be specified using regular expressions
       by enclosing them in forward slashes.  For example, `skill -KILL /d$/'
       will send the kill signal to processes with names ending in "d".

       Process id's are not known beforehand, so both kernel memory and the
       swap device must be searched for the required information.
       Alternately, on some systems, the "/proc" file system is examined.
       When a process fitting each category is discovered, it is immediately
       acted upon (unless running in interactive or display-only mode).
       Processes must belong to the current user unless said user is the
       super-user.  Neither program will ever act on itself, but everything
       else is fair game.

       Exit status is normally 0; if the user makes a mistake, 1 is returned.
       If a system error occurs, exit status is 2.


FILES

       /vmunix        system name list
       /dev/mem       physical memory
       /dev/kmem      kernel virtual memory
       /dev/drum      swap device
       /proc          process file system
       /dev           searched to map ttys into device numbers


SEE ALSO

       kill(1), nice(1), priocntl(1), renice(1), ps(1),
       kill(2), setpriority(2), signal(2), regex(3), proc(4)


AUTHOR

       Jeff Forys


CONTRIBUTORS

       David Sharnoff      Greg Earle          Christos Zoulas
       Gorodecki Tom       Mike Hibler         Ric Anderson
       Chuck L Blake       Lee Duncan          Allan E Johannesen
       Michael Smith       Aaron Denney        Simon Burge


BUGS

       Things change while these programs execute, occasionally processes will
       be missed (the `-w' flag displays these).

       Systems generally truncate command names to an OS-dependent size.  To
       target commands with long names, specify the truncated name or use a
       regular expression.

       On some operating systems, these programs are unable to investigate
       processes belonging to other users.  While not a problem, this fact is
       reflected in the "(but N could not be checked)" notice, which follows
       the "no matching processes" message.

4th Berkeley Distribution        April 7, 2002                        SKILL(1)

[Unix Hosting | Open-Source | Contact Us]
[Engineering & Automation | Software Development | Server Applications]