.\" Copyright (c) 1983, 1991, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)renice.8   8.1 (Berkeley) 6/9/93
.\"
.Dd June 9, 1993
.Dt RENICE 1
.Os BSD 4
.Sh NAME
.Nm renice
.Nd alter priority of running processes
.Sh SYNOPSIS
.Nm renice
.Op Fl n
.Ar priority
.Oo
.Op Fl p
.Ar pid ...
.Oc
.Oo
.Op Fl g
.Ar pgrp ...
.Oc
.Oo
.Op Fl u
.Ar user ...
.Oc
.Nm renice
.Fl h | Fl v
.Sh DESCRIPTION
.Nm Renice
alters the
scheduling priority of one or more running processes.
The following
.Ar who
parameters are interpreted as process ID's, process group
ID's, or user names.
.Nm Renice Ns 'ing
a process group causes all processes in the process group
to have their scheduling priority altered.
.Nm Renice Ns 'ing
a user causes all processes owned by the user to have
their scheduling priority altered.
By default, the processes to be affected are specified by
their process ID's.
.Pp
Options supported by
.Nm renice :
.Bl -tag -width Ds
.It Fl n, Fl Fl priority
The scheduling
.Ar priority
of the process, process group, or user.
.It Fl g, Fl Fl pgrp
Force
.Ar who
parameters to be interpreted as process group ID's.
.It Fl u, Fl Fl user
Force the
.Ar who
parameters to be interpreted as user names.
.It Fl p, Fl Fl pid
Resets the
.Ar who
interpretation to be (the default) process ID's.
.It Fl v, Fl Fl version
Print version.
.It Fl h, Fl Fl help
Print help.
.El
.Pp
For example,
.Bd -literal -offset
renice +1 987 -u daemon root -p 32
.Ed
.Pp
would change the priority of process ID's 987 and 32, and
all processes owned by users daemon and root.
.Pp
Users other than the super-user may only alter the priority of
processes they own,
and can only monotonically increase their ``nice value''
within the range 0 to
.Dv PRIO_MAX
(20).
(This prevents overriding administrative fiats.)
The super-user
may alter the priority of any process
and set the priority to any value in the range
.Dv PRIO_MIN
(\-20)
to
.Dv PRIO_MAX .
Useful priorities are:
20 (the affected processes will run only when nothing else
in the system wants to),
0 (the ``base'' scheduling priority),
anything negative (to make things go very fast).
.Sh FILES
.Bl -tag -width /etc/passwd -compact
.It Pa /etc/passwd
to map user names to user ID's
.El
.Sh SEE ALSO
.Xr getpriority 2 ,
.Xr setpriority 2
.Sh BUGS
Non super-users can not increase scheduling priorities of their own processes,
even if they were the ones that decreased the priorities in the first place.
.br
The Linux kernel (at least version 2.0.0) and linux libc (at least
version 5.2.18) does not agree entirely on what the specifics of the
systemcall interface to set nice values is.  Thus causes renice to
report bogus previous nice values.
.Sh HISTORY
The
.Nm
command appeared in
.Bx 4.0 .
.Sh AVAILABILITY
The renice command is part of the util-linux-ng package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
