Chcę, aby użytkownik uruchomił w systemie określony proces z ujemną wartością ładną. Nie mogę po prostu rozwidlić procesu na tło, ponieważ ten konkretny program jest serwerem Minecraft i polegam na linii poleceń do kontrolowania serwera.
Mój obecny skrypt bash wygląda następująco (ważna część):
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
po prostu opóźnia wykonanie renice
. renice
sam używa ps
do sprawdzania procesu Java za pomocą własnego identyfikatora użytkownika. Mogą istnieć inne przypadki odradzania się Java dla różnych użytkowników, ale serwer Minecraft działa pod własnym minecraftem użytkownika .
Oczywiście nie chcę wpisywać hasła przy każdym uruchomieniu serwera.
z / etc / sudoers :
minecraft ALL = NOPASSWD: /etc/renice
Czy jest na to bardziej elegancki sposób? Proste użycie nice
nie jest opcją, sudo nice bash
w połączeniu z NOPASSWD: opcja byłaby świetnym problemem bezpieczeństwa.
nice
Wydaje się, że ustawienie tylko twardego limitu na to nie pozwala, musiałem ustawić oba, używając-
.