Comment puis-je faire démarrer tous mes processus avec gentillesse 5

8

Je sais que les valeurs de gentillesse sont héritées de la valeur de gentillesse du processus parent, mais puis-je changer globalement la valeur de gentillesse par défaut pour un utilisateur particulier (moi-même).

Dans ce cas, j'ai un petit serveur de commodité à l'esprit, qui est exclusivement accessible via ssh. Donc, je pense que je pourrais changer mon shell par défaut de /bin/bashà /etc/bash5tout /etc/bash5est ce script:

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

#file privileges: root:root 755

Cela me semble être un terrible piratage et sujet à des erreurs. Il doit y avoir un meilleur moyen.

Je suis principalement intéressé par les solutions générales, qui s'appliqueraient également à un système de bureau / ordinateur portable.


Edit: j'ai essayé la limits.confmodification suggérée , mais cela ne fonctionne pas comme prévu:

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

Ensuite, depuis ma machine cliente, je dis

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

Maintenant, le sleepprocessus a une valeur de gentillesse initiale de0 , mais si je change la valeur avec F8à 19 et que j'essaye de la réduire à nouveau avec F7 elle s'arrête à5 .

Edit2: Solution

Au lieu d'utiliser l' niceélément dans limits.conf, vous devez en fait l'utiliser prioritymême s'il est contre-intuitif.

@nice soft priority 5
bitmask
la source
Peut-être mettre un renice -n 5dans votre ~/.profile?
jw013
@ jw013: C'est une meilleure idée que mon bash5approche, je vous donne ceci. Mais ça casse quand je dis ssh myserver -- somecommandnon?
bitmask
@bitmask. Je ne peux pas reproduire votre résultat pour limits.conf. À quoi sert votre sortie ps -o pid,nice,cmd?
donothingsuccess
1
Veuillez publier des solutions à vos propres problèmes en tant que réponses , plutôt que des modifications à votre question. Merci! (Vous pouvez fournir votre propre réponse à votre propre question.)
mattdm
Sur une autre note: ce n'est pas ce que vous avez demandé, mais vous pouvez constater que les groupes de contrôle fournissent un moyen plus efficace de faire ce (priorité réduite pour un certain utilisateur) que vous le souhaitez nice.
mattdm

Réponses:

7

Vous pouvez définir la priorité d'un utilisateur particulier dans le /etc/security/limits.conffichier.

root       hard/soft     priority    10

De cette façon, vous pouvez définir une limite stricte ou souple pour un utilisateur particulier. Ainsi, tous les processus que cet utilisateur racine démarrera auront 5 comme valeur de priorité par défaut.

Selon la page Wikipedia :

L'effet mathématique exact de la définition d'une valeur de gentillesse particulière pour un processus dépend des détails de la conception du planificateur sur cette implémentation d'Unix.

Voici l'instantané qui montre que la procédure ci-dessus fonctionne:

Cette image est la capture d'écran du fichier /etc/security/limits.conf

Ceci est un instantané du limits.conffichier qui montre une ligne que j'ai enfin ajoutée comme

root     hard     priority    15

Après avoir changé cela, j'ai commencé une session ssh en utilisant la commande ssh root@localhost

entrez la description de l'image ici

Cette capture d'écran montre les deux dernières lignes, ce qui montre la valeur intéressante des deux derniers processus -bashet sshd: root@pts/3être 15.

Éditer

Voici l'instantané qui montre que vous pouvez augmenter et diminuer la finesse d'un processus entrez la description de l'image ici

Modifier 2:

Voici le snapshort qui montre que même un utilisateur normal peut changer la valeur de gentillesse.

entrez la description de l'image ici

pradeepchhetri
la source
Je parlais de gentillesse , pas de priorité. Et comme je l'ai dit dans l'autre réponse, cela ne semble pas être accepté. Dois-je redémarrer un démon ou quelque chose?
bitmask du
@bitmask: celui-ci fonctionne dans le mien ... Je vais ajouter un instantané dans ma réponse, attendez ...
pradeepchhetri
@bitmask: J'ai mis à jour la réponse avec les instantanés .. :)
pradeepchhetri
Il y a une différence entre la gentillesse et la priorité . J'achète totalement que vous pouvez changer la priorité dure , mais je veux changer la douceur douce . C'est autre chose.
bitmask
@bitmask: Accirind à la page wiki, A niceness of −20 is the highest priority and 19 or 20 is the lowest priority. Alors d' abord u doivent comprendre que la priorité et niceness sont same..And Je veux clair que ce sont , hard and soft limitsmais pas comme son hard priorityet soft niceness..
pradeepchhetri
1

Il semble que vous puissiez définir une priorité par défaut pour un utilisateur dans limits.conf, avec une ligne comme:

username    soft  priority  5

Voir man limits.conf .

avec succès
la source
Super. Je l' ai juste donné un coup de feu ( en utilisant un groupe spécial cependant) , @nice soft nice 5mais sshing dans la machine et l' exécution des sleep 1hspectacles comme ayant niceness 0dans htop. Un indice pourquoi le paramètre n'a pas été accepté? Je suis sur Debian Squeeze.
bitmask
ce qui est @nicedans le commentaire ci-dessus .. il devrait être celui de l'utilisateur de la machine linux ur.
pradeepchhetri
@pradeepchhetri: Voir l'édition de mon OP, s'il vous plaît. C'est un nom de groupe.
bitmask
pourquoi @ devant le nom du groupe tout en mettant une entrée dans un limits.conffichier?
pradeepchhetri
@pradeepchhetri: Parce que la page de manuel le dit?
bitmask