Как я могу сделать так, чтобы все мои процессы начинались с милости 5

8

Я знаю, что значения корректности наследуются от значения корректности родительского процесса, но могу ли я глобально изменить значение корректности по умолчанию для конкретного пользователя (себя).

В этом случае я имею в виду небольшой удобный сервер, доступ к которому осуществляется исключительно через ssh. Итак, я думаю, что я мог бы изменить свою оболочку по умолчанию с /bin/bashна /etc/bash5пока /etc/bash5это скрипт:

#!/bin/sh
nice -n 5 /bin/bash

#file privileges: root:root 755

Это кажется мне ужасным взломом и склонностью к ошибкам. Должен быть лучший способ.

В основном меня интересуют общие решения, которые также применимы к системе настольный компьютер / ноутбук.


Изменить: я попробовал предлагаемое limits.confизменение, но оно не работает, как ожидалось:

root@server# addgroup nice
root@server# adduser myself nice
root@server# echo '@nice soft nice 5' >> /etc/security/limits.conf

Затем с моей клиентской машины я говорю

myself@client$ ssh server
myself@server$ sleep 1h &
myself@server$ htop

Теперь у sleepпроцесса есть начальная ценность0 , но если я изменю значение F8на 19, а затем попытаюсь снова уменьшить F7 его, останавливаясь на5 .

Edit2: решение

Вместо того, чтобы использовать niceэлемент в limits.conf, вы на самом деле должны использовать, priorityхотя это нелогично.

@nice soft priority 5
битовая
источник
Может положить renice -n 5в свой ~/.profile?
jw013
@ JW013: Это лучшая идея, чем мой bash5подход, я дам вам это. Но это все еще сломается, если я скажу ssh myserver -- somecommand, не так ли?
битовая
@bitmask. Я не могу воспроизвести ваш результат для limits.conf. Для чего нужен ваш вывод ps -o pid,nice,cmd?
2012 г.,
1
Пожалуйста, публикуйте решения своих проблем в качестве ответов , а не редактируйте свой вопрос. Спасибо! (Можно дать свой ответ на свой вопрос.)
mattdm
С другой стороны: это не то, что вы просили, но вы можете обнаружить, что cgroups предоставляют более эффективный способ сделать то, что (с пониженным приоритетом для определенного пользователя) вы хотите, чем nice.
Mattdm

Ответы:

7

Вы можете установить приоритет для конкретного пользователя в /etc/security/limits.confфайле.

root       hard/soft     priority    10

Таким образом, вы можете установить жесткий или мягкий предел для любого конкретного пользователя. Таким образом, все процессы, которые запустит этот пользователь root, будут иметь значение 5 как приоритетное значение по умолчанию.

Согласно странице Википедии :

Точный математический эффект установки определенного значения благости для процесса зависит от деталей того, как планировщик разработан для этой реализации Unix.

Вот снимок, который показывает, что вышеуказанная процедура работает:

Это изображение является скриншот файла /etc/security/limits.conf

Это снимок limits.confфайла, который показывает строку, которую я, наконец, добавил, как

root     hard     priority    15

После изменения этого я запустил один сеанс SSH с помощью команды ssh root@localhost

введите описание изображения здесь

На этом скриншоте показаны две последние строки, в которых показано хорошее значение двух последних процессов -bashи sshd: root@pts/3значение 15.

редактировать

Вот снимок, который показывает, что вы можете увеличивать и уменьшать точность процесса введите описание изображения здесь

Изменить 2:

Вот мгновенный снимок, который показывает, что даже обычный пользователь может изменить значение добротности.

введите описание изображения здесь

pradeepchhetri
источник
Я говорил о милости , а не приоритете. И, как я сказал в другом ответе, это, кажется, не принято. Должен ли я перезапустить какого-нибудь демона или что-то еще?
битовая
@bitmask: этот работает в моем ... Я собираюсь добавить снимок в моем ответе wait ...
pradeepchhetri
@bitmask: Я обновил ответ с помощью снимков .. :)
pradeepchhetri
Есть разница между милосердием и приоритетом . Я полностью покупаю, что вы можете изменить жесткий приоритет , но я хочу изменить мягкую милость . Это другая вещь.
битовая
@bitmask: переход на страницу вики A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. Таким образом , первый и есть , чтобы понять , что любезность и приоритет same..And Я хочу , чтобы очистить , что это , hard and soft limitsно его не так, как hard priorityи soft niceness..
pradeepchhetri
1

Это выглядит , как вы можете установить приоритет по умолчанию для пользователя в limits.conf, с линией , как:

username    soft  priority  5

Смотри man limit.conf .

donothingsuccessfully
источник
Звучит здорово. Я просто дал ему шанс (используя специальную группу, хотя), @nice soft nice 5но входя в sshмашину и выполняя sleep 1hшоу, как имеющие приятность 0в htop. Любая подсказка, почему настройки не были приняты? Я нахожусь на сжатии Debian.
битовая
что @niceв приведенном выше комментарии .. это должен быть один из пользователей машины ur linux.
Pradeepchhetri
@pradeepchhetri: см. редактирование моего ОП, пожалуйста. Это название группы.
битовая
почему @ перед именем группы при записи в limits.confфайл?
Pradeepchhetri
@pradeepchhetri: Потому что на странице руководства так написано?
битовая