我有一个高优先级服务,我以它作为启动项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,可以使用ps
和sed
,或者您可以在后台启动它并直接从 shell 中获取其进程:
process &
pid=$!
sudo renice -10 $pid
fg $pid # if you don't want it in background
请注意,如果该进程产生了其他进程并退出,那么它可能在 renice 运行时就已经完成了,因此您需要使用它ps
来获取子进程的 PID,然后对其进行 renice 操作。