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.
fonte
nice
não parece fazer isso, eu tive que definir os dois, usando-
.priority
para -10 enice
-15 e sempre recebo "permissão negada" mesmo quando tento usar "nice -n -2" em alguma coisa. Eu tenho que reiniciar? Acabei de sair e entrar novamente de acordo com este conselho .priority
configuração tem efeito, mas anice
configuração só me permite reduzir a prioridade. Quando inicio algo com a prioridade padrão, agora é -10. Eu possorenice
o processo para -9, mas depois não possorenice
voltar para -10.hard
que causou os problemas. Eu mudei para-
vez e tudo funciona bem agora. Essa resposta me ajudou a chegar ao fundo. Acho que o problema era que eu tinha um limite suave que estava atrapalhando, talvez substituindo o limite rígido de alguma forma. Enfim, em-
vez dehard
consertar para mim.Usar
renice
semsudo
seria impossível. Cito a partir darenice(1)
página de manual:fonte