Is it possible to set a new nice
level of a running process with a known id?
Does this operation require root access, or just being the owner of the process?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityIf you're at a terminal you can use renice
renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
A simple example would be
renice 8 31043
31043: old priority 5, new priority 8
You can also pass it hard flags, but it follows that order (you have to pass priority first and then the pid - if you change the order it will show the usage messagge)
renice -n 5 -p 31043
31043: old priority 8, new priority 5
Priorities work on a scale of -20
to 19
- The lower the number, the higher it's priority on the system.
If you own the process then you won't need root - however, if the process is owned by another user or if you plan on changing the group/user of the process root (via sudo
) will be required.
root
user can only increase niceness--they cannot decrease niceness, not even to a previous level of niceness the process had, and not even to a previous level of niceness they had themselves renice
d the process down from. I recommend editing this answer to incorporate that information.
Oct 14, 2012 at 14:35
nice
value is still not the same as the thread scheduler priority. The way to actually stall a machine is to set a process' RTPRIO as realtime (that is a value of -99
and is different from the nice
value) while running on the SCHED_FIFO scheduling policy with a realtime-enabled kernel (such as linux with the RT_Preempt patchset) and even then, only if this process uses up 100% of CPU time of all threads and never yields. (continues)
Dec 11, 2019 at 5:19
sudo gnome-system-monitor
Prior to 11.04: System > Administration > System Monitor. Choose Processes.
In 11.04: Alt+A and search for system monitor
.
The id's are shown in the image here:
And nice does not require sudo for increasing niceness if you own the task. It does if you need to decrease niceness.
Start a command with nice
:
nice -n 19 your_command
Renice process:
renice 19 $(pidof your_command_name_like_for_ex_ffmpeg)
Priority could be between -20 and 19. 19 is the lowest priority.
Usage of "renice" in terminal is as follows:
Usage:
renice [-n] <priority> [-p] <pid> [<pid> ...]
renice [-n] <priority> [-g] <pgrp> [<pgrp> ...]
renice [-n] <priority> [-u] <user> [<user> ...]
Options:
-g, --pgrp <id> interpret as process group ID
-h, --help print help
-n, --priority <num> set the nice increment value
-p, --pid <id> force to be interpreted as process ID
-u, --user <name|id> interpret as username or user ID
-v, --version print version
Using "sudo" before command "renice" elevates user to root level and an admin/root password will be required.
So e.g. if you want to elevate process with PID (process ID) 2606 from Normal priority to High priority, you would type in terminal as follows:
sudo renice -n -5 -p 2606
You can also renice a process within top.
htop
htop
You can add capability CAP_SYS_NICE
to user using Linux capabilities system if you don't want to grant full root access to user/script.
Unfortunately, it still allows to renice arbitrary process, including those owned by different users.