Je veux qu'un utilisateur exécute un processus spécifique sur le système avec une belle valeur négative. Je ne peux pas simplement bifurquer le processus en arrière-plan car ce programme spécifique est un serveur minecraft et je compte sur la ligne de commande pour contrôler le serveur.
Mon script bash actuel ressemble à ceci (la partie 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
retarde simplement l'exécution de renice
. renice
lui-même utilise ps
pour vérifier un processus java en utilisant l'ID propre aux utilisateurs. Il peut y avoir d'autres instances de java apparaissant sous différents utilisateurs, mais le serveur minecraft fonctionne sous son propre minecraft utilisateur .
Je ne veux évidemment pas entrer de mot de passe à chaque démarrage du serveur.
depuis / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Existe-t-il une manière plus élégante de procéder? L'utilisation simple nice
n'est pas une option, sudo nice bash
en combinaison avec l' option NOPASSWD: serait un grand problème de sécurité.
nice
ne semble pas le faire, j'ai dû définir les deux en utilisant-
.