Voglio che un utente esegua un processo specifico sul sistema con un valore negativo negativo. Non posso semplicemente spostare il processo in background poiché questo programma specifico è un server Minecraft e mi affido alla riga di comando per controllare il server.
Il mio attuale script bash è simile al seguente (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
ritarda semplicemente l'esecuzione di renice
. renice
stesso utilizza ps
per verificare la presenza di un processo Java utilizzando il proprio ID utente. Potrebbero esserci altri casi di generazione di java sotto utenti diversi, ma il server Minecraft viene eseguito con il proprio Minecraft utente .
Ovviamente non voglio inserire una password ogni volta che avvio il server.
da / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
C'è un modo più elegante per farlo? Il semplice utilizzo nice
non è un'opzione, sudo nice bash
in combinazione con NOPASSWD: l' opzione sarebbe un grande problema di sicurezza.
nice
non sembra farlo, ho dovuto impostare entrambi, usando-
.