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.
źródło
nice
Wydaje się, że ustawienie tylko twardego limitu na to nie pozwala, musiałem ustawić oba, używając-
.priority
na -10 inice
na -15 i zawsze dostaję „odmowę dostępu”, nawet gdy próbuję użyć „nice -n -2” na czymś. Czy muszę się restartować? Właśnie się wylogowałem i zalogowałem zgodnie z tą radą .priority
ustawienie ma wpływ, alenice
ustawienie pozwala mi tylko zmniejszyć priorytet. Kiedy zaczynam coś z domyślnym priorytetem, teraz jest to -10. Mogęrenice
przetworzyć na -9, ale potem nie mogęrenice
wrócić do -10.hard
powodowało problemy.-
Zamiast tego zmieniłem na i wszystko działa teraz dobrze. Ta odpowiedź pomogła mi dojść do sedna. Myślę, że problem polegał na tym, że miałem przeszkodę, która przeszkadzała, być może w jakiś sposób nadpisując twardy limit. W każdym razie-
zamiasthard
mnie to naprawić.Używanie
renice
bezsudo
byłoby niemożliwe. Cytuję ze strony podręcznikarenice(1)
:źródło