Introduction
un serveur Linux, comme tout autre ordinateur que vous connaissez peut-être, exécute des applications. Pour l’ordinateur, ceux-ci sont considérés comme des « processus”.
bien que Linux gère la gestion de bas niveau et en coulisses dans le cycle de vie d’un processus, vous aurez besoin d’un moyen d’interagir avec le système d’exploitation pour le gérer à partir d’un niveau supérieur.
dans ce guide, nous allons discuter de quelques aspects simples de la gestion des processus. Linux fournit une collection abondante d’outils à cet effet.,
Nous allons explorer ces idées sur un VPS Ubuntu 12.04, mais toute distribution Linux moderne fonctionnera de la même manière.
Comment afficher les processus en cours D’exécution sous Linux
top
le moyen le plus simple de savoir quels processus sont en cours d’exécution sur votre serveur est d’exécuter la commandetop
:
top
la partie supérieure des informations donne des statistiques système, telles que la charge du système et le nombre total de tâches.
Vous pouvez facilement voir qu’il y a 1 processus en cours d’exécution et que 55 processus sont en sommeil (aka inactif / n’utilisant pas de ressources CPU).,
la partie inférieure contient les processus en cours et leurs statistiques d’utilisation.
htop
Une version améliorée de top
appelé htop
, est disponible dans les dépôts. L’installer avec cette commande:
sudo apt-get install htop
Si nous courons à la balise htop
commande, nous allons voir qu’il est plus convivial d’affichage:
htop
Vous pouvez en apprendre davantage sur la façon d’utiliser le haut et htop ici.,
comment utiliser ps pour lister les processus
Les deuxtop
Ethtop
fournissent une interface agréable pour afficher les processus en cours d’exécution similaires à un gestionnaire de tâches graphique.
cependant, ces outils ne sont pas toujours assez flexibles pour couvrir adéquatement tous les scénarios. Une commande puissante appelée ps
est souvent la réponse à ces problèmes.,
lorsqu’elle est appelée sans arguments, la sortie peut être un peu lack-luster:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
Cette sortie affiche tous les processus associés à la session utilisateur et terminal en cours. Cela a du sens car nous n’exécutons que bash
Et ps
avec ce terminal actuellement.,
pour obtenir une image plus complète des processus sur ce système, nous pouvons exécuter ce qui suit:
ps aux
ces options indiquentps
pour afficher les processus appartenant à tous les utilisateurs (quelle que soit leur association de terminal) dans un format convivial.
pour voir une vue arborescente, où les relations hiérarchiques sont illustrées, nous pouvons exécuter la commande avec ces options:
ps axjf
comme vous pouvez le voir, le processuskthreadd
est montré comme un parent du processusksoftirqd/0
et les autres.,
Note sur les ID de processus
dans les systèmes de type Linux et Unix, chaque processus se voit attribuer un ID de processus, ou PID. C’est ainsi que le système d’exploitation identifie et assure le suivi des processus.
Un moyen rapide d’obtenir le PID d’un processus avec la balise pgrep
commande:
pgrep bash
1017
Ce sera tout simplement la requête de l’ID de processus et de le retourner.
le premier processus généré au démarrage, appelé init, reçoit le PID de « 1”.,
pgrep init
1
Ce processus est responsable de la ponte tous les autres processus du système. Les processus ultérieurs reçoivent des nombres PID plus grands.
le parent d’un processus est le processus responsable de son apparition. Les processus parents ont un PPID, que vous pouvez voir dans les en-têtes de colonne dans de nombreuses applications de gestion de processus, y compris top
, htop
et ps
.,
toute communication entre l’utilisateur et le système d’exploitation au sujet des processus implique la traduction entre les noms de processus et les PID à un moment donné au cours de l’opération. C’est pourquoi les utilitaires vous indiquent le PID.
relations Parent-enfant
La création d’un processus enfant se fait en deux étapes: fork(), qui crée un nouvel espace d’adressage et copie les ressources appartenant au parent via copy-on-write pour être disponibles pour le processus enfant; et exec(), qui charge un exécutable dans l’espace d’adressage et l’exécute.,
dans le cas où un processus enfant meurt avant son parent, l’enfant devient un zombie jusqu’à ce que le parent ait collecté des informations à ce sujet ou indiqué au noyau qu’il n’a pas besoin de ces informations. Les ressources du processus enfant seront alors libérées. Si le processus parent décède avant que l’enfant, cependant, l’enfant sera adopté par init, mais peut également être réaffecté à un autre processus.
Comment envoyer des signaux de processus sous Linux
tous les processus sous Linux répondent aux signaux. Les signaux sont un moyen au niveau du système d’exploitation de dire aux programmes de mettre fin ou de modifier leur comportement.,
Comment envoyer des signaux de processus par PID
la façon la plus courante de transmettre des signaux à un programme est avec la commandekill
.
Comme vous vous en doutez, la valeur par défaut de la fonctionnalité de cet utilitaire est de tenter de tuer un processus:
<avant>
kill <span class= »highlight”>PIDoftarget_process</durée:>
</pre>
Cela envoie le signal TERM au processus., Le terme signal indique au processus de se terminer. Cela permet au programme d’effectuer des opérations de nettoyage et de quitter en douceur.,
Si le programme est défaillante et ne se ferme pas lorsque compte tenu de la DURÉE du signal, on peut convertir un signal en passant par le KILL
signal:
<avant>
kill-kill <span class= »highlight”>PIDoftarget_process</durée:>
</pre>
C’est un signal qui n’est pas envoyé au programme.,
Au Lieu de cela, il est donné au noyau du système d’exploitation, qui arrête le processus. Ce est utilisé pour contourner les programmes qui ignorent les signaux qui lui sont envoyés.
chaque signal a un numéro associé qui peut être passé à la place du nom. Par exemple, Vous pouvez passer « -15” au lieu de « TERME”, et « -9” au lieu de « TUER”.
Comment Utiliser les Signaux à d’Autres Fins
les Signaux ne sont pas seulement utilisés pour arrêter les programmes. Ils peuvent également être utilisés pour effectuer d’autres actions.
par exemple, de nombreux démons redémarreront lorsqu’ils recevront le HUP
, ou un signal de raccrochage., Apache est un programme qui fonctionne comme ceci.
<avant>
sudo kill-HUP <span class= »highlight”>pidofapache</durée:>
</pre>
La commande ci-dessus va provoquer Apache pour recharger son fichier de configuration et de reprendre la portion de contenu.,
Vous pouvez lister tous les signaux qu’il est possible d’envoyer avec kill en tapant:
kill -l
Comment envoyer des signaux de processus par nom
bien que la manière conventionnelle d’envoyer des signaux soit l’utilisation de pid, il existe également des méthodes pour le faire avec des noms,
Le pkill
commande fonctionne dans presque exactement de la même manière que kill
, mais il fonctionne sur un nom de processus à la place:
pkill -9 ping
La commande ci-dessus est l’équivalent de:
kill -9 `pgrep ping`
Si vous voulez d’envoyer un signal à chaque instance d’un certain processus, vous pouvez utiliser la balise killall
commande:
killall firefox
La commande ci-dessus va envoyer le signal à chaque instance de firefox en cours d’exécution sur l’ordinateur.,
comment ajuster les priorités des processus
souvent, vous voudrez ajuster quels processus sont prioritaires dans un environnement serveur.
certains processus peuvent être considérés comme critiques pour votre situation, tandis que d’autres peuvent être exécutés chaque fois qu’il peut y avoir des ressources restantes.
Linux contrôle la priorité via une valeur appelée niceness.
les tâches hautement prioritaires sont considérées comme moins agréables, car elles ne partagent pas non plus les ressources. Les processus à faible priorité, en revanche, sont agréables car ils insistent pour ne prendre que des ressources minimales.,
Lorsque nous avons couru top
au début de l’article, il y avait une colonne marquée « NI”. C’est la belle valeur du processus:
top
Les belles valeurs peuvent varier entre « -19/-20” (priorité la plus élevée) et « 19/20” (priorité la plus basse) selon le système.,
To run a program with a certain nice value, we can use the nice
command:
<pre>
nice -n 15 <span class= »highlight”>commandtoexecute</span>
</pre>
This only works when beginning a new program.,= »9b4b74b24a »>:
<pre>
renice 0 <span class= »highlight”>pidtopriorize</span>
</pre>
remarque: bien que Nice fonctionne avec un nom de commande par nécessité, renice opère en appelant le processus pid
conclusion
la gestion des processus est un sujet parfois difficile à appréhender pour les nouveaux utilisateurs car les outils utilisés sont différents de leurs homologues graphiques.,
Cependant, les idées sont familières et intuitives, et avec un peu de pratique, deviendra naturel. Parce que les processus sont impliqués dans tout ce que vous faites avec un système informatique, apprendre à les contrôler efficacement est une compétence essentielle.
<div class= »auteur”>Par Justin Ellingwood</div>
Leave a Reply