Od man renice
:
Użytkownicy inni niż superużytkownicy mogą jedynie zmieniać priorytet własnych procesów i mogą jedynie monotonicznie zwiększać swoją `` niezłą wartość '' (ze względów bezpieczeństwa) w zakresie od 0 do PRIO_MAX (20) [...]
Mogę więc realizować renice
własne procesy w górę (nadać im niższy priorytet), ale nigdy w dół:
$ renice 10 22316
22316 (process ID) old priority 0, new priority 10
$ renice 9 22316
renice: failed to set priority for 22316 (process ID): Permission denied
Dlaczego to? Rozumiem, dlaczego normalni użytkownicy nie mogą ustawić ładnych wartości poniżej 0, ale dlaczego, skoro mogę zmniejszyć priorytet do 10, nie mogę go ponownie zwiększyć do 9? Jaki jest „powód bezpieczeństwa”? Mam prawo uruchomić proces o wartości 9, więc dlaczego nie mogę go zmienić na 9?
EDYCJA: Powinienem nauczyć się przewijać w dół. Okazuje się, że jest to wymienione jako błąd w man renice
:
BUGS
Non super-users can not increase scheduling priorities of their own
processes, even if they were the ones that decreased the priorities
in the first place.
To jeszcze bardziej mylące. Jeśli uważają to zachowanie za błąd, to dlaczego nie zmienić? renice
Komenda pojawiła się w 4.0BSD co moim zdaniem jest od roku 1980. To powinno być bardzo łatwe do naprawienia, więc z jednej strony wydaje się, że wybrano go opuścić, az drugiej, że listy to jako błąd.
Odpowiedzi:
Od Linuksa 2.6.12 zależy to od wartości limitu RLIMIT_NICE (
ulimit -e
). Który może przyjmować wartości od 0 do 40. Limit ten jest bardziej limitem priorytetu procesu (im większa liczba, tym wyższy priorytet może zostać ustawiony przez użytkownika dla procesu).Zauważysz, że domyślna wartość to 20 na Ubuntu 10.04 i 0 na przykład w Debianie jessie.
Wartość
n
tego limitu oznacza, że proces bez możliwości CAP_NICE może jedynie zwiększyć priorytet procesu do maksymalnien
, co oznacza zmniejszenie uprzywilejowania do uprzywilejowania20 - n
. Tak więc dla wartości 0 oznacza to, że żaden nieuprzywilejowany użytkownik nie może obniżyć uprzywilejowania poniżej 20, więc żaden nieuprzywilejowany użytkownik nie może obniżyć uprzywilejowania.Przy wartości 20 użytkownicy nieuprzywilejowani mogą zmniejszyć wartość z powrotem do 0.
Administrator musi zdecydować, czy zezwoli użytkownikom na obniżenie priorytetu procesu i do jakiego poziomu, ustawiając dla niego twardy limit.
Aby dowiedzieć się, dlaczego administrator może nie chcieć, aby użytkownicy obniżali priorytet procesu, zobacz odpowiedź Flup .
źródło
To z tego, co nazwałbym polityką . Chodzi o to, że zwykli użytkownicy nie mogą zastąpić działań użytkowników uprzywilejowanych.
Powiedzmy, że jesteś użytkownikiem na jakimś ogromnym serwerze współdzielonym. Prowadzisz potworne procesy powodujące nadmierne obciążenie procesora ze szkodą dla innych użytkowników. Sysadmin
renice
niektóre z twoich procesów, ponieważ nie bardzo cię lubi. System operacyjny nie pamięta, kto to zrobiłrenice
, ale wie, że zwykli użytkownicy nie mogą odwrócić działania. W ten sposób sysadmin ma kontrolę nad priorytetami procesów normalnych użytkowników.źródło
man renice
.renice
nie można cofnąć inaczej niż przez uprzywilejowanego użytkownika.renice
toroot
zrobiło.Dziwne ? działa dla mnie na
przykład
2. edycja
Skonfiguruj zmiany
I jestem członkiem grupy audio, aby zmniejszyć opóźnienie z jack / ardor i bufor xruns podczas nagrywania.
renice
źródło
cat /etc/lsb*
irenice --version
.renice --version renice from util-linux-ng 2.17.2
ale wciąż w systemie AIX nie jest to możliwe