Wie kann ich alle meine Prozesse mit Freundlichkeit beginnen lassen? 5

8

Ich weiß, dass die Nizza-Werte vom Nizza-Wert des übergeordneten Prozesses geerbt werden, kann aber den Standard-Nizza-Wert für einen bestimmten Benutzer (mich selbst) global ändern.

In diesem Fall habe ich einen kleinen Convenience-Server im Sinn, auf den ausschließlich über zugegriffen wird ssh. Ich denke also, ich könnte meine Standard-Shell von /bin/bashzu ändern , /etc/bash5während /etc/bash5dieses Skript:

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

#file privileges: root:root 755

Dies scheint mir ein schrecklicher Hack und fehleranfällig zu sein. Es muss einen besseren Weg geben.

Ich interessiere mich hauptsächlich für allgemeine Lösungen, die auch für ein Desktop / Laptop-System gelten.


Bearbeiten: Ich habe die vorgeschlagene limits.confÄnderung versucht , aber es funktioniert nicht wie erwartet:

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

Dann sage ich von meinem Client-Computer aus

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

Jetzt hat der sleepProzess einen anfänglichen Freundlichkeitswert von0 , aber wenn ich den Wert mit F8auf 19 ändere und dann versuche, ihn erneut zu reduzieren F7 , stoppt er bei5 .

Edit2: Lösung

Anstatt das niceElement in zu verwenden limits.conf, müssen Sie es tatsächlich verwenden, priorityobwohl es nicht intuitiv ist.

@nice soft priority 5
Bitmaske
quelle
Vielleicht ein renice -n 5in dein ~/.profile?
jw013
@ jw013: Das ist eine bessere Idee als mein bash5Ansatz, ich gebe dir das. Aber es bricht immer noch, wenn ich sage ssh myserver -- somecommand, nicht wahr?
Bitmaske
@bitmask. Ich kann Ihr Ergebnis für nicht reproduzieren limits.conf. Wofür ist deine Ausgabe ps -o pid,nice,cmd?
Donothings erfolgreich
1
Bitte veröffentlichen Sie Lösungen für Ihre eigenen Probleme als Antworten , anstatt Ihre Frage zu bearbeiten. Vielen Dank! (Es ist in Ordnung, Ihre eigene Antwort auf Ihre eigene Frage zu geben.)
Mattdm
Ein weiterer Hinweis: Dies ist nicht das, was Sie gefragt haben, aber Sie werden möglicherweise feststellen, dass cgroups eine effektivere Möglichkeit bieten, das zu tun, was Sie möchten (reduzierte Priorität für einen bestimmten Benutzer) nice.
Mattdm

Antworten:

7

Sie können die Priorität für einen bestimmten Benutzer in der /etc/security/limits.confDatei festlegen .

root       hard/soft     priority    10

Auf diese Weise können Sie ein hartes oder weiches Limit für einen bestimmten Benutzer festlegen. Alle Prozesse, die dieser Root-Benutzer startet, haben also 5 als Standardprioritätswert.

Laut Wikipedia-Seite :

Der genaue mathematische Effekt des Festlegens eines bestimmten Wertes für einen Prozess hängt von den Details ab, wie der Scheduler für diese Implementierung von Unix entwickelt wurde.

Hier ist der Schnappschuss, der zeigt, wie das obige Verfahren funktioniert:

Dieses Bild ist der Screenshot der Datei /etc/security/limits.conf

Dies ist eine Momentaufnahme einer limits.confDatei, die eine Zeile zeigt, die ich zuletzt hinzugefügt habe

root     hard     priority    15

Nachdem ich dies geändert hatte, startete ich eine SSH-Sitzung mit dem Befehl ssh root@localhost

Geben Sie hier die Bildbeschreibung ein

Dieser Screenshot zeigt die letzten beiden Zeilen, die den schönen Wert der letzten beiden Prozesse zeigen -bashund sshd: root@pts/315 sein sollen.

Bearbeiten

Hier ist der Schnappschuss, der zeigt, dass Sie die Schönheit eines Prozesses erhöhen und verringern können Geben Sie hier die Bildbeschreibung ein

Bearbeiten 2:

Hier ist der Schnappschuss, der zeigt, dass selbst normale Benutzer den Wert für die Schönheit ändern können.

Geben Sie hier die Bildbeschreibung ein

pradeepchhetri
quelle
Ich sprach von Freundlichkeit , nicht von Priorität. Und wie ich auf der anderen Antwort sagte, scheint es nicht akzeptiert zu werden. Muss ich einen Daemon neu starten oder so?
Bitmaske
@bitmask: dieser arbeitet in meinem ... Ich werde einen Schnappschuss in meine Antwort
einfügen,
@bitmask: Ich habe die Antwort mit den Schnappschüssen aktualisiert .. :)
pradeepchhetri
Es gibt einen Unterschied zwischen Freundlichkeit und Priorität . Ich kaufe total, dass Sie die harte Priorität ändern können , aber ich möchte die weiche Schönheit ändern . Das ist etwas anderes.
Bitmaske
@bitmask: Zur Wiki-Seite gelangen , A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. Also zuerst musst du verstehen, dass Freundlichkeit und Priorität gleich sind. Und ich möchte klarstellen, dass dies hard and soft limitsaber nicht so ist hard priorityund soft niceness...
pradeepchhetri
1

Es sieht so aus, als könnten Sie eine Standardpriorität für einen Benutzer in festlegen limits.conf, mit einer Zeile wie:

username    soft  priority  5

Siehe man limit.conf .

nicht erfolgreich
quelle
Klingt gut. Ich habe es nur einen Schuss (mit einer speziellen Gruppe zwar) @nice soft nice 5aber sshing in die Maschine und Ausführung sleep 1hzeigt als Nettigkeit mit 0in htop. Gibt es einen Hinweis, warum die Einstellung nicht akzeptiert wurde? Ich bin auf Debian Squeeze.
Bitmaske
Was ist @nicein dem obigen Kommentar. Es sollte derjenige des Benutzers Ihrer Linux-Maschine sein.
Pradeepchhetri
@pradeepchhetri: Siehe bitte die Bearbeitung meines OP. Es ist ein Gruppenname.
Bitmaske
Warum @ vor dem Gruppennamen, während ein Eintrag in die limits.confDatei eingefügt wird?
Pradeepchhetri
@pradeepchhetri: Weil die Manpage das sagt?
Bitmaske