如何在不授予某个进程超级用户权限的情况下提高该进程的优先级?

如何在不授予某个进程超级用户权限的情况下提高该进程的优先级?

我有一个高优先级服务,我以它作为启动项sudo nice -n -10 process。除了提升优先级外,此进程不需要超级用户权限。但 nice 需要超级用户权限才能提升优先级。

如何运行具有更高优先级的进程,而不以 root 身份运行它?

答案1

查看/etc/security/limits.conf。您可以在那里指定用户或组可以使用的优先级。手册页:man 5 limits.conf

答案2

一种可能性是这样的(我问完之后才想到的):

sudo nice -10 sudo -u user command

但似乎应该有一种更优雅的方法。

答案3

另一种可能性是sudo renice启动进程后使用 更改进程的优先级。要获取进程的 PID,可以使用pssed,或者您可以在后台启动它并直接从 shell 中获取其进程:

process &
pid=$!
sudo renice -10 $pid
fg $pid                 # if you don't want it in background

请注意,如果该进程产生了其他进程并退出,那么它可能在 renice 运行时就已经完成了,因此您需要使用它ps来获取子进程的 PID,然后对其进行 renice 操作。

相关内容