renice running processes based on regular expressions
Perl Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


reniced - renice running processes based on regular expressions


reniced [-h] [-v] [-o format] [configfile]


reniced takes a list of regular expressions, looks for processes (and threads) matching them and renices the processes to given values. reniced can also change io priorities.


On start, reniced reads a configuration file. It consists of nice values and regular expressions.

It then scans the process table using the ps(1) command. Whenever a process name from the CMD column matches a regular expression, that process is reniced to the given value. If a process matches multiple regular expressions, all rule matches are executed in order and the last match wins.

When run as root, reniced will scan all processes (`ps H -e`). When run as a user, renice only scans the user's processes (`ps H --user`).


  • -h

    This prints the version number, a short help text and exits without doing anything.

  • -v

    This activates verbose mode. Error messages, some statistics and all renice actions are printed to stdout.

  • -o format

    Set the ps(1) output format to filter on. The default format is comm. See the -o parameter in the ps(1) manpage for details.

  • configfile

    This reads the regular expressions from an alternate configfile.

    The default location of the configfile is /etc/reniced.conf if reniced is run as root, ~/.reniced otherwise.

Configuration file format

The configuration file is composed of single lines. Empty lines and lines starting with a # are ignored.

Every line must consist of a command followed by a whitespace and a Perl regular expression.

The regular expression is matched against the ps(1) output. For every matched process the command is executed.

A command generally takes the form of a character followed by a number. Multiple commands can be given simultaneously with no spaces inbetween. Sometimes the number is optional.

Command characters

  • n

    Sets the nice value of a process. Must be followed by a number, usually within the range of -20 to 19.

    For backwards compatibility a n at the beginning of the command can be left out (if the command starts with a number it is treated as a nice value).

  • r

    Sets the io priority to the realtime scheduling class. The optional number is treated as class data (typically 0-7, lower being higher priority).

  • b

    Sets the io priority to the best-effort scheduling class. The optional number is treated as class data (typically 0-7, lower being higher priority).

  • i

    Sets the io priority to the idle scheduling class. No number needs to be given as the idle scheduling class ignores the class data value.

  • o

    Sets the OOM killer adjustment in /proc/$PID/oom_adj to the given number. (Internally, /proc/$PID/oom_score_adj will be used when available, but for backwards compatibility this value is still expected the in old oom_adj format and will be converted automatically.)


  • 5 ^bash

    gives currently running bash shells a nice value of 5

  • b2 ^tar

    sets currently running tar-processes to io priority best-effort within class 2

  • i torrent

    sets currently running torrent-like applications to io priority idle

  • n-10r4 seti

    gives currently running seti-processes a nice value of -10 and sets them to realtime io priority in class 4


use BSD::Resource;

This module can be obtained from



ionice is only needed if you want to change io priority. It can be obtained from

You also need a suitable kernel and scheduler, e.g. Linux 2.6 with CFQ.


The purpose of reniced is to renice long running server processes (hence the d for daemon in it's name).

Selecting and renicing processes it not atomic: There is a small gap between scanning the process list and renicing the processes. If you target short-lived processes with your regular expressions, reniced might try to act on a process that is already gone. In the worst case it might renice a new process that got the same process id as the already ended process that was matched.


reniced can run without the BSD::Resource module. In this case, the PRIO_PROCESS is set to 0. This works on Linux 2.6.11 i686 but it could break on other systems. Installing BSD::Resource is the safer way.

Be careful using realtime priorities, don't starve other tasks.

Please report bugs to <>.


reniced was written by Christian Garbs <>.


reniced is Copyright (C) 2005 by Christian Garbs. It is licensed under the GNU GPL v2 or later.


Look for updates at


ionice(1), renice(1), ps(1)