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
sleepverzögert einfach die Ausführung von renice. reniceselbst 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 nicekeine Option. Dies wäre ein großes Sicherheitsproblem.sudo nice bash
nicefestzulegen scheint nicht zu funktionieren, ich musste beide mit festlegen-.