Как я могу сделать так, чтобы все мои процессы начинались с милости 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:

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

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


Я говорил о милости , а не приоритете. И, как я сказал в другом ответе, это, кажется, не принято. Должен ли я перезапустить какого-нибудь демона или что-то еще?
— битовая

@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 .


Звучит здорово. Я просто дал ему шанс (используя специальную группу, хотя), @nice soft nice 5но входя в sshмашину и выполняя sleep 1hшоу, как имеющие приятность 0в htop. Любая подсказка, почему настройки не были приняты? Я нахожусь на сжатии Debian.
— битовая

что @niceв приведенном выше комментарии .. это должен быть один из пользователей машины ur linux.
— Pradeepchhetri

@pradeepchhetri: см. редактирование моего ОП, пожалуйста. Это название группы.
— битовая

почему @ перед именем группы при записи в limits.confфайл?
— Pradeepchhetri

@pradeepchhetri: Потому что на странице руководства так написано?
— битовая
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.