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
sleeppo prostu opóźnia wykonanie renice. renicesam używa psdo 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 nicenie jest opcją, sudo nice bashw połączeniu z NOPASSWD: opcja byłaby świetnym problemem bezpieczeństwa.
niceWydaje się, że ustawienie tylko twardego limitu na to nie pozwala, musiałem ustawić oba, używając-.