我希望用户使用负的尼斯值在系统上运行特定的进程。我不能简单地将进程分派到后台,因为此特定程序是Minecraft服务器,并且我依靠命令行来控制服务器。
我当前的bash脚本如下所示(重要部分):
sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui
sleep
只是延迟执行renice
。renice
本身使用ps
用户自己的ID来检查Java进程。在不同的用户下可能还会出现其他Java实例,但是minecraft服务器在其自己的用户minecraft下运行。
我显然不想每次启动服务器时都输入密码。
来自/ etc / sudoers:
minecraft ALL = NOPASSWD: /etc/renice
有没有更优雅的方法可以做到这一点?与NOPASSWD:选项一起使用时nice
,简单地使用不是一个选项,sudo nice bash
这将是一个很大的安全问题。
nice
似乎没有做到,我不得不使用来设置两者-
。