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
nice
festzulegen scheint nicht zu funktionieren, ich musste beide mit festlegen-
.