Quero que um usuário execute um processo específico no sistema com um valor legal negativo. Não posso simplesmente colocar o processo em segundo plano, pois esse programa específico é um servidor minecraft e confio na linha de comando para controlar o servidor.
Meu script atual do bash se parece com isso (a 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
simplesmente atrasa a execução de renice
. renice
ele mesmo usa ps
para verificar um processo java usando o próprio ID do usuário. Pode haver outras instâncias de criação de java em diferentes usuários, mas o servidor minecraft é executado sob seu próprio usuário minecraft .
Obviamente, não quero inserir uma senha toda vez que inicio o servidor.
de / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Existe uma maneira mais elegante de fazer isso? Simplesmente usar nice
não é uma opção, sudo nice bash
em combinação com a opção NOPASSWD: seria um grande problema de segurança.
nice
não parece fazer isso, eu tive que definir os dois, usando-
.