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é.
la source
nice
ne semble pas le faire, j'ai dû définir les deux en utilisant-
.priority
-10 etnice
-15 et j'obtiens toujours "permission refusée" même lorsque j'essaie d'utiliser "nice -n -2" sur quelque chose. Dois-je redémarrer? Je viens de me déconnecter et de me reconnecter conformément à ce conseil .priority
paramètre a un effet, mais lenice
paramètre ne me permet que de réduire la priorité. Quand je commence quelque chose avec la priorité par défaut, c'est maintenant -10. Je peux fairerenice
le processus à -9 mais je ne peux pasrenice
revenir à -10.hard
qui a causé les problèmes. Je l'ai changé à la-
place et tout fonctionne bien maintenant. Cette réponse m'a aidé à aller au fond des choses. Je pense que le problème était que j'avais une limite douce qui se mettait en travers du chemin, dépassant peut-être la limite dure d'une manière ou d'une autre. Quoi qu'il en soit,-
au lieu de lehard
réparer pour moi.Utiliser
renice
sanssudo
serait impossible. Je cite larenice(1)
page de manuel:la source