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.
fuente

niceno parece hacerlo, tuve que establecer ambos, usando-.priorityen -10 ynice-15 y siempre obtengo "permiso denegado" incluso cuando trato de usar "nice -n -2" en algo. ¿Tengo que reiniciar? Acabo de cerrar sesión y de nuevo según este consejo .priorityconfiguración tiene efecto, pero laniceconfiguración solo me permite reducir la prioridad. Cuando comienzo algo con la prioridad predeterminada, ahora es -10. Puedo hacerreniceel proceso a -9 pero luego no puedorenicevolver a -10.hardeso causó los problemas. En su-lugar, lo cambié y todo funciona bien ahora. Esta respuesta me ayudó a llegar al fondo. Creo que el problema era que tenía un límite blando que se estaba interponiendo en el camino, tal vez anulando el límite duro de alguna manera. De todos modos, en-lugar dehardarreglarlo para mí.Usar
renicesinsudosería imposible. Cito de larenice(1)página del manual:fuente