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
sleep
simplemente retrasa la ejecución de renice
. renice
se utiliza ps
para 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 nice
no es una opción, sudo nice bash
en combinación con NOPASSWD: la opción sería un gran problema de seguridad.
fuente
nice
no parece hacerlo, tuve que establecer ambos, usando-
.priority
en -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 .priority
configuración tiene efecto, pero lanice
configuración solo me permite reducir la prioridad. Cuando comienzo algo con la prioridad predeterminada, ahora es -10. Puedo hacerrenice
el proceso a -9 pero luego no puedorenice
volver a -10.hard
eso 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 dehard
arreglarlo para mí.Usar
renice
sinsudo
sería imposible. Cito de larenice(1)
página del manual:fuente