Ich möchte, dass ein Benutzer einen bestimmten Prozess auf dem System mit einem negativen Wert ausführt. Ich kann den Prozess nicht einfach in den Hintergrund verschieben, da dieses spezielle Programm ein Minecraft-Server ist und ich mich auf die Befehlszeile verlasse, um den Server zu steuern.
Mein aktuelles Bash-Skript sieht folgendermaßen aus (der wichtige Teil):
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
verzögert einfach die Ausführung von renice
. renice
selbst verwendet ps
, um anhand der eigenen ID des Benutzers nach einem Java-Prozess zu suchen. Es kann andere Fälle von Java-Spawning unter verschiedenen Benutzern geben, aber der Minecraft-Server wird unter seinem eigenen Benutzer Minecraft ausgeführt .
Ich möchte natürlich nicht jedes Mal ein Passwort eingeben, wenn ich den Server starte.
von / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Gibt es eine elegantere Möglichkeit, dies zu tun? In Kombination mit der Option NOPASSWD: ist die einfache Verwendung nice
keine Option. Dies wäre ein großes Sicherheitsproblem.sudo nice bash
quelle
nice
festzulegen scheint nicht zu funktionieren, ich musste beide mit festlegen-
.priority
auf -10 undnice
-15 gesetzt und bekomme immer "Erlaubnis verweigert", selbst wenn ich versuche, "nice -n -2" für etwas zu verwenden. Muss ich neu starten? Ich habe mich gemäß diesem Rat einfach ab- und wieder angemeldet .priority
Einstellung zwar wirksam ist, dienice
Einstellung jedoch nur die Reduzierung der Priorität ermöglicht. Wenn ich etwas mit der Standardpriorität starte, ist es jetzt -10. Ich kannrenice
den Prozess auf -9 bringen, aber dann nichtrenice
auf -10.hard
verursachte die Probleme. Ich habe es-
stattdessen geändert und jetzt funktioniert alles einwandfrei. Diese Antwort hat mir geholfen, dem auf den Grund zu gehen. Ich denke, das Problem war, dass ich ein weiches Limit hatte, das mir im Weg stand und vielleicht das harte Limit irgendwie überschrieb. Wie auch immer,-
anstatthard
es für mich zu reparieren.Verwenden
renice
ohnesudo
wäre unmöglich. Ich zitiere aus derrenice(1)
Manpage:quelle