LFCS Monitor Linux Processus d'utilisation des ressources et définir les limites de processus sur une base par utilisateur - partie 14

LFCS Monitor Linux Processus d'utilisation des ressources et définir les limites de processus sur une base par utilisateur - partie 14

En raison des modifications récentes des objectifs de l'examen de certification LFCS à partir de 2 février 2016, Nous ajoutons les articles nécessaires à la série LFCS publiée ici. Pour vous préparer à cet examen, vous êtes également encouragé à passer par la série LFCE.

Surveiller les processus Linux et définir les limites de processus par utilisateur - Partie 14

Chaque administrateur du système Linux doit savoir comment vérifier l'intégrité et la disponibilité du matériel, des ressources et des processus clés. De plus, fixer des limites de ressources sur une base par utilisateur doit également faire partie de son ensemble de compétences.

Dans cet article, nous explorerons quelques façons de nous assurer que le système de matériel et du logiciel se comporte correctement pour éviter les problèmes potentiels qui peuvent provoquer des temps d'arrêt de production inattendus et une perte d'argent.

Statistiques de processeurs de rapports Linux

Avec mpstat Vous pouvez afficher les activités de chaque processeur individuellement ou du système dans son ensemble, à la fois comme un instantané ou dynamiquement.

Pour utiliser cet outil, vous devrez installer sysstat:

# yum Update && yum install sysstat [sur Centos Systèmes basés] # APTITUTDE UPDATE && aptitude installer sysstat [sur Ubuntu Systèmes basés] # Zypper Update && zypper installer sysstat [sur ouverte systèmes] 

En savoir plus sur sysstat Et ce sont les services publics de Learn Sysstat et de ses services publics MPSTAT, PIDSTAT, IOSTAT ET SAR à Linux

Une fois que vous avez installé mpstat, Utilisez-le pour générer des rapports de statistiques de processeurs.

Afficher 3 Rapports mondiaux de l'utilisation du processeur (-u) pour tous les processeurs (comme indiqué par -P Tout) à un intervalle de 2 secondes, faites:

# MPSTAT -P All -U 2 3 
Échantillon de sortie
Linux 3.19.0-32 générique (Tecmint.com) Mercredi 30 mars 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU% usr% nice% sys% iowait% irq% soft% voler% invité% gnice% ralenti 11:41:09 ist tands 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 ist 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 ist 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU% usr% nice% sys% iowait% irq% soft% voler% invité% gnice% inactif 11:41:11 ist tout 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 ist 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU% USR% NICE% SYS% IOWait% IRQ% Soft% voler% Guest% Gnice% inactif 11:41:13 IST TOUT 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 moyenne: CPU% usr% nice% sys% iowait% irq% soft% voler% invité% gniquice% moyenne inactif: tous les 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Moyenne: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Moyenne: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 Moyenne: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 Moyenne: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59 

Pour afficher les mêmes statistiques pour un CPU (CPU 0 Dans l'exemple suivant), utilisez:

# MPSTAT -P 0 -U 2 3 
Échantillon de sortie
Linux 3.19.0-32 générique (Tecmint.com) Mercredi 30 mars 2016 _x86_64_ (4 CPU) 11:42:08 IST CPU% USR% NICE% SYS% IOWait% IRQ% Soft% Steal% Guest% Gnice% inactive 11:42:10 Ist 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 ist 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 Moyenne: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23 

La sortie des commandes ci-dessus montre ces colonnes:

  1. CPU: Numéro de processeur en tant qu'entier, ou le mot tout comme une moyenne pour tous les processeurs.
  2. % USR: Pourcentage de l'utilisation du processeur lors de l'exécution des applications de niveau utilisateur.
  3. %bon: Pareil que % USR, Mais avec une belle priorité.
  4. % sys: Pourcentage de l'utilisation du processeur qui s'est produit lors de l'exécution des applications du noyau. Cela n'inclut pas le temps passé à gérer les interruptions ou la manipulation du matériel.
  5. % iowait: Pourcentage de temps où le processeur donné (ou tous) était inactif, au cours de laquelle il y avait une opération d'E / S à forte intensité de ressources prévue sur ce processeur. Une explication plus détaillée (avec des exemples) peut être trouvée ici.
  6. % IRQ: Pourcentage de temps passé à entretenir les interruptions matérielles.
  7. %doux: Pareil que % IRQ, Mais avec les interruptions logicielles.
  8. %voler: Pourcentage de temps passé en attente involontaire (voler ou voler du temps) lorsqu'une machine virtuelle, en tant qu'invitée, est de «gagner» l'attention de l'hyperviseur tout en rivalisant pour les CPU (s). Cette valeur doit être maintenue aussi petite que possible. Une valeur élevée dans ce domaine signifie que la machine virtuelle est en décroche - ou sera bientôt.
  9. %invité: Pourcentage de temps passé à gérer un processeur virtuel.
  10. %inactif: pourcentage de temps où les processeurs n'exécutaient aucune tâche. Si vous observez une faible valeur dans cette colonne, c'est une indication du système placé sous une charge lourde. Dans ce cas, vous devrez examiner de plus près la liste des processus, comme nous en discuterons dans une minute, pour déterminer ce qui le cause.

Pour mettre la place le processeur sous une charge un peu élevée, exécutez les commandes suivantes, puis exécutez MPSTAT (comme indiqué) dans un terminal séparé:

# dd if = / dev / zéro de = test.ISO BS = 1g Count = 1 # MPSTAT -U -P 0 2 3 # Ping -f LocalHost # Interruption avec Ctrl + C après MpStat ci-dessous terminer # MPSTAT -U -P 0 2 3 

Enfin, comparer à la sortie de mpstat Dans des circonstances «normales»:

Signaler des statistiques liées aux processeurs Linux

Comme vous pouvez le voir dans l'image ci-dessus, CPU 0 était sous une charge lourde au cours des deux premiers exemples, comme indiqué par le %inactif colonne.

Dans la section suivante, nous discuterons de la façon d'identifier ces processus avides de ressources, comment obtenir plus d'informations à leur sujet et comment prendre les mesures appropriées.

Rapport des processus Linux

Pour énumérer les processus de les tri par l'utilisation du processeur, nous utiliserons le bien connu ps commande avec le -eo (pour sélectionner tous les processus avec le format défini par l'utilisateur) et --trier (Pour spécifier une commande de tri personnalisée) Options, comme ainsi:

# ps -eo pid, ppid, cmd,% CPU,% mem --sort = -% CPU 

La commande ci-dessus affichera uniquement le Piquer, PPID, la commande associée au processus et le pourcentage d'utilisation du processeur et de la RAM triés par le pourcentage d'utilisation du processeur dans l'ordre descendant. Lorsqu'il est exécuté pendant la création du .ISO Fichier, voici les premières lignes de la sortie:

Trouver les processus Linux par utilisation du processeur

Une fois que nous avons identifié un processus d'intérêt (comme celui avec Pid = 2822), nous pouvons naviguer vers / proc / pid (/ proc / 2822 Dans ce cas) et faire une liste de répertoires.

Ce répertoire est l'endroit où plusieurs fichiers et sous-répertoires avec des informations détaillées sur ce processus particulier sont conservés pendant qu'il s'exécute.

Par exemple:
  1. / proc / 2822 / io Contient des statistiques IO pour le processus (nombre de caractères et d'octets lus et écrits, entre autres, pendant les opérations IO).
  2. / proc / 2822 / att / courant Affiche les attributs de sécurité Selinux actuels du processus.
  3. / proc / 2822 / cgroup Décrit les groupes de contrôle (CGROUPS pour faire court) auquel le processus appartient si l'option de configuration du noyau Config_cgroups est activée, avec laquelle vous pouvez vérifier:
# cat / boot / config - $ (uname -r) | grep -i cgroups 

Si l'option est activée, vous devriez voir:

Config_cgroups = y 

En utilisant troupes Vous pouvez gérer le montant de l'utilisation des ressources autorisée sur une base par processus, comme expliqué dans les chapitres 1 à 4 du Guide de gestion des ressources de Red Hat Enterprise Linux 7, dans le chapitre 9 du guide d'analyse et de réglage du système OpenSUSE, et dans les groupes de contrôle Section de l'Ubuntu 14.04 Documentation du serveur.

Le / proc / 2822 / fd est un répertoire qui contient un lien symbolique pour chaque descripteur de fichier que le processus a ouvert. L'image suivante montre ces informations pour le processus démarré dans TTY1 (le premier terminal) pour créer le .ISO image:

Trouver des informations sur le processus Linux

L'image ci-dessus montre que stdin (Descripteur de fichiers 0), stdout (Descripteur de fichiers 1), et stderr (Descripteur de fichiers 2) sont mappés à / dev / zéro, / Root / Test.ISO, et / dev / tty1, respectivement.

Plus d'informations sur / proc peut être trouvé dans «le / proc Document de fichiers »conservé et maintenu par le noyau.org, et dans le manuel du programmeur Linux.

Fixer des limites de ressources sur une base par utilisateur à Linux

Si vous n'êtes pas prudent et autorisez à un utilisateur à exécuter un nombre illimité de processus, vous pouvez éventuellement vivre un arrêt de système inattendu ou être verrouillé lorsque le système entre dans un état inutilisable. Pour éviter que cela ne se produise, vous devez limiter le nombre de processus que les utilisateurs peuvent démarrer.

Pour ce faire, modifier / etc / sécurité / limites.confli et ajoutez la ligne suivante en bas du fichier pour définir la limite:

* nproc dur 10 

Le premier champ peut être utilisé pour indiquer un utilisateur, un groupe ou tous (*), tandis que le deuxième champ applique une limite dure au nombre de processus (NProc) à dix. Pour appliquer des modifications, la connexion et le retour sont suffisants.

Ainsi, voyons ce qui se passe si un certain utilisateur autre que root (soit légitime ou non) tente de démarrer une bombe de fourche de shell. Si nous n'avions pas mis en œuvre des limites, cela lancerait initialement deux instances d'une fonction, puis dupliquer chacun d'eux dans une boucle sans fin. Ainsi, cela finirait par amener votre système à ramper.

Cependant, avec la restriction ci-dessus en place, la bombe de fourche ne réussit pas mais l'utilisateur sera toujours verrouillé jusqu'à ce que l'administrateur du système tue le processus qui lui est associé:

Bombe à fourche de coquille

CONSEIL: Autres restrictions possibles rendues possibles par ulimit sont documentés dans le limites.confli déposer.

Linux Autres outils de gestion des processus

En plus des outils discutés précédemment, un administrateur système peut également avoir besoin de:

un) Modifier la priorité d'exécution (utilisation des ressources système) d'un processus en utilisant Renice. Cela signifie que le noyau allouera plus ou moins les ressources système au processus en fonction de la priorité attribuée (un nombre communément appelé «gentillesse"Dans une fourchette de -20 pour 19).

Plus la valeur est faible, plus la priorité d'exécution est élevée. Les utilisateurs réguliers (autres que la racine) ne peuvent modifier la gentillesse des processus qu'ils possèdent à une valeur plus élevée (ce qui signifie une priorité d'exécution plus bas.

La syntaxe de base de Renice est la suivante:

# identifiant Renice [-N] 

Si l'argument après la nouvelle valeur de priorité n'est pas présent (vide), il est défini sur PID par défaut. Dans ce cas, la gentillesse du processus avec Pid = identifiant est réglé sur .

b) Interrompre l'exécution normale d'un processus en cas de besoin. Ceci est communément appelé «tuer» le processus. Sous le capot, cela signifie envoyer au processus un signal pour terminer correctement son exécution et libérer toutes les ressources utilisées de manière ordonnée.

Pour tuer un processus, utilisez le tuer Commande comme suit:

# Kill Pid 

Alternativement, vous pouvez utiliser PKILL pour résilier tous les processus d'un propriétaire donné (-u), ou un propriétaire de groupe (-G), ou même les processus qui ont un PPID en commun (-P). Ces options peuvent être suivies par la représentation numérique ou le nom réel comme identifiant:

# pkill [Options] Identifiant 

Par exemple,

# pkill -g 1000 

tuera tous les processus appartenant au groupe avec Gid = 1000.

Et,

# pkill -p 4993 

tuera tous les processus dont le PPID est 4993.

Avant d'exécuter un pkill, c'est une bonne idée de tester les résultats avec pgrep Tout d'abord, peut-être en utilisant le -l option également pour répertorier les noms des processus. Il prend les mêmes options mais ne renvoie que les Pids des processus (sans prendre d'autres mesures) qui seraient tués si pkill est utilisé.

# Pgrep -L -U Gacanepa 

Ceci est illustré dans l'image suivante:

Trouver des processus d'exécution des utilisateurs dans Linux

Résumé

Dans cet article, nous avons exploré quelques façons de surveiller l'utilisation des ressources afin de vérifier l'intégrité et la disponibilité de composants matériels et logiciels critiques dans un système Linux.

Nous avons également appris à prendre les mesures appropriées (soit en ajustant la priorité d'exécution d'un processus donné, soit en le terminant) dans des circonstances inhabituelles.

Nous espérons que les concepts expliqués dans ce tutoriel ont été utiles. Si vous avez des questions ou des commentaires, n'hésitez pas à nous joindre en utilisant le formulaire de contact ci-dessous.

Devenir un administrateur système certifié Linux