Quiero que un usuario ejecute un proceso específico en el sistema con un buen valor negativo. No puedo simplemente bifurcar el proceso a un segundo plano, ya que este programa específico es un servidor de Minecraft y confío en la línea de comando para controlar el servidor.
Mi script bash actual se ve así (la parte importante):
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
sleepsimplemente retrasa la ejecución de renice. renicese utiliza pspara verificar si hay un proceso de Java utilizando la identificación propia del usuario. Puede haber otras instancias de desove de Java bajo diferentes usuarios, pero el servidor de Minecraft se ejecuta bajo su propio usuario Minecraft .
Obviamente no quiero ingresar una contraseña cada vez que inicio el servidor.
de / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
¿Hay alguna forma más elegante de hacer esto? Simplemente usar niceno es una opción, sudo nice bashen combinación con NOPASSWD: la opción sería un gran problema de seguridad.
niceno parece hacerlo, tuve que establecer ambos, usando-.