Linux

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

La gestion de processus et direction des flux

1 Definition d’un processus


Qu'est-ce qu'un processus sous un système GNU Linux ?

Un processus est un programme en cours d'exécution. Par exemple, chaque fois


que l'on lance la commande ls, un processus est créé durant l'exécution de la
commande. Un processus est identifié par un numéro unique que l'on appelle le
PID .

2information liees au processus

Affichage des processus sous Linux

1. PID – ID de processus. Chaque processus possède son propre numéro à 5


chiffres. Il ne peut pas y avoir plus d’un même PID dans le système.
2. PPID – ID de parent de processus. ID du processus qui a lancé ce processus
en particulier.
3. Les deux commandes les plus couramment utilisées pour visualiser les
processus sont top et ps. La différence entre les deux est que top est utilisé
de manière interactive/dans un terminal et que ps est plutôt utilisé dans les
scripts, combiné avec d’autres commandes bash.

top – Cette commande est probablement la plus basique et est souvent utilisé
pour afficher simplement les processus qui consomment le plus de ressources
actuellement. Lorsque vous exécutez la commande top dans un terminal, vous
verrez une fenêtre semblable à ceci:
top est une appliction simple. Après l’exécution de la commande, le terminal
change d’affichage. La liste des processus est constamment mise à jour toutes les
5 secondes environ. Ce nouvel affichage est interactif grâce à l’utilisation du
clavier. Quelques exemples:

• H ou ? – Afficher une fenêtre d’ aide avec toutes les commandes et autres


informations utiles.
• Espace – Appuyez dessus pour mettre à jour la liste des processus.
• F – Ajouter des champs ou supprime certains champs.
• Q – Quitte l’application top ou une fenêtre rattachée à top. Par exemple,
après avoir utilisé la fonction F.
• L – Affiche les informations relatives à la disponibilité et l’utilisation
moyenne.
• M – Permet d’afficher des informations sur la mémoire.
• P (Shift + p) – Trier les processus en fonction de l’utilisation du processeur.
• S – Modifie le délai entre les actualisations (En secondes).

3.Commande de gestion de processus


1. Visualisation des processus en cours

Les processus sont référencés par un identifiant unique, le PID. Ce


nombre peut être utilisé pour changer la priorité d’un processus ou
pour l’arrêter.
Un processus correspond à n’importe quel exécutable exécuté. Si
le processus 2 a été lancé par le processus 1, on l’appelle un
processus fils. Le processus qui l’a lancé est appelé processus
parent.
2. L’arborescence des processus
La commande pstree donne une bonne illustration de la hiérarchie
des processus parents et fils.
Par exemple
pstree

init─┬─acpid
├─atd
├─cron
├─dbus-daemon
├─dhclient
├─docker.io─┬─bash
│ ├─controller───9*[{controller}]
│ ├─rethinkdb─┬─rethinkdb
│ │ └─69*[{rethinkdb}]
│ └─12*[{docker.io}]
├─7*[getty]
├─irqbalance
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree

Les options les plus courantes de pstree sont -p pour afficher les
PIDs et -h pour faire ressortir (en gras) les processus utilisateurs.
3. Recherche des processus en cours d’exécution
Une méthode plus directe pour déterminer les processus en cours
d’exécution est d’utiliser la commande ps avec une combinaison
d’options.
Tentez les différentes commandes :
$ ps
$ ps a
$ ps ax
$ ps aux
$ ps ax | grep cron

Exemples tirés de la page man de ps (en)


• Tous les processus sur le système en syntaxe standard.
ps -e
ps -ef
ps -eF
ps -ely

• Tous les processus sur le système en syntaxe BSD.


ps ax
ps axu

• Impression d’un arbre de processus.


ps -ejH
ps axjf

• Obtenir des informations sur les “threads”.


ps -eLf
ps axms

• Obtenir des informations de sécurité.


ps -eo euser,ruser,suser,fuser,f,comm,label

Description des champs (page man de ps (fr)


• PRI Il s’agit d’un compteur dans la structure représentant la
tâche. C’est la fréquence, en HZ des activations possibles du
processus.
• NI Valeur standard Unix de gentillesse (nice). Une valeur
positive signifie un accès moindre au CPU.
• SIZE Taille virtuelle de l’image du processus (code + données
+ pile).
• RSS Taille résidente de l’image du processus. Nombre de kilo-
octets se trouvant en mémoire.
• WCHAN Nom de la fonction du noyau dans laquelle le
processus est endormi.
• STAT État du processus.
Le premier champ PRI correspond à :
• R (runnable) prêt à être exécuté,
• S (sleeping) endormi,
• D sommeil ininterruptible,
• T (traced) arrêté ou suivi,
• Z (zombie).
Le second champ contient W si le processus n’a pas de pages
résidentes.
Le troisième NI champ contient N si le processus a une valeur de
gentillesse positive (nice, champ NI).
• TT terminal de contrôle
• PAGEIN Nombre de fautes de pages majeures (où l’on doit
lire des pages sur le disque, y compris dans le buffer cache).
• TRS Taille de code résident en mémoire.
• SWAP Nombre de kilo-octets (ou de pages si l’option -p est
utilisée) sur le périphérique de swap.
• SHARE Mémoire partagée.
4. Lancer une tâche dans la console
Pour ces exercices on n’hésitera pas à lire la section intitulé
“PROCESS STATE CODES” de la page de la commande ps.
On peut créer un processus :
tail -f /var/log/messages
^Z

[1]+ Stopped tail -f /var/log/syslog

et l’arrêter :
ps aux | grep tail
francois 23704 0.0 0.0 7256 620 pts/5 T 14:08 0:00 tail -f
/var/log/messages

On peut relancer le processus en tâche de fond avec bg :


bg
[1]+ tail -f /var/log/messages &

On peut reprendre le processus en premier plan dans la console


avec fg :
fg
tail -f /var/log/messages
^C

5. Gestion de tâches
On peut lancer directement une tâche en arrière plan en ajoutant
& à la commande :
tail -f /var/log/messages &

Pour visualiser les tâches (jobs) :


jobs
[1]+ Stopped tail -f /var/log/syslog
[2]- Running tail -f /var/log/syslog &

Pour reprendre une tâche en premier plan :


fg 2
tail -f /var/log/messages

6. Arrêter un processus
On utilise la commande kill pour envoyer des signaux aux
processus. Il existe 63 signaux. Le signal par défaut, nommé
SIGTERM, termine le processus et a pour valeur numérique 15.
kill SIGNAL PID

Chaque processus peut choisir ou non de détecter un signal, à


l’exception de SIGKILL qui est directement géré par le noyau. On
peut également arrêter un processus sans connaître son PID avec
la commande killall.
killall SIGNAL NOM_PROCESSUS

On trouve la liste des signaux sous le titre “Standard Signals” de la


page man 7 signal
man 7 signal

7. nohup
“Nohup” est une commande Unix permettant de lancer un
processus qui restera actif même après la déconnexion de
l’utilisateur l’ayant initiée. Combiné à l’esperluette (&) qui permet
le lancement en arrière-plan, nohup permet donc de créer des
processus s’exécutant de manière transparente sans être
dépendants de l’utilisateur.
Par exemple :
nohup tail -f /var/log/messages &

8. Priorité des processus


Les valeurs de nice (NI pour nice indice) modifient la priorité pour
le processeur et sont utilisées pour adapter la charge du
processeur dans un environnement multi-utilisateur. Chaque
processus est lancé avec la valeur de nice par défaut : 0. Ces
valeurs sont comprises entre 19 (la plus petite) et -20 (la plus
importante). (moins un processus est gentil, plus il consomme de
puissance).
Seul le super-utilisateur root peut diminuer la valeur nice d’un
processus. En conséquence, tous les processus étant lancés par
défaut avec un nice à 0, seul le root peut définir des valeurs de
nice négatives !
9. nice / renice
On utilise la commande renice pour modifier la priorité d’un
processus en cours d’exécution, et la commande nice pour définir
la priorité d’un processus à son lancement.
nice –<NI> <processus>
renice <+/-NI> -p <PID>

renice utilise les PID et peut gérer une liste de processus à la fois.
L’option -u affecte tous les processus d’un utilisateur peut être très
utile.
Exemples :
• passage des valeurs de nice à 1 pour les processus 234 et 765
renice +1 -p 234 765

• lancer xclock avec une valeur de nice à -5


nice --5 xclock

Pour vérifier les valeurs nice :


ps -lax | head

10. Mesure de l’utilisation des ressources et résolution de problèmes


Objectif LPIC 200.1
• uptime : 1, 5, 15 minutes sur tous les CPUs
• Installation de iostat sous Centos 7 : yum install sysstat
• Sortie iostat : avg-cpu: %user %nice %system %iowait
%steal %idle
• iostat -c: CPU / iostat -d : disques
• sar à la manière de iostat offre un historique dans une
cadence de 10 minutes
sar | tail

• stress (EPEL) à installer (ici, 2 CPU, 1 VM, 1 IO)


uptime
stress -c 2 -i 1 -m 1 --vm-bytes 128M -t 10s
uptime

• Compilation et installation de stress-ng


#!/bin/bash
yum -y install git || apt-get install git
yum -y groupinstall 'Development Tools' || apt-get install build-essential git
cd /tmp
git clone git://kernel.ubuntu.com/cking/stress-ng.git
cd stress-ng
make
cp stress-ng /usr/bin
rm -rf /tmp/stress-*

• free -h, vmstat


• iostat -d : bi et bo, lsblk, blkid
• lsof -u ^root, lsof -i TCP:22, lsof -p 100
• lsof /usr/ bin/bash
• option netstat: -l (listening), -lu (listening UDP sockets), -lt
(listening TCP sockets), -p (PID), -n (numérique), -c (continu),
-r (table de routage)
• ps -fe, pstree, top, htop
• Commande w
11. Prévision des besoins en ressources
Objectif LPIC 200.2
top
Htop.
4

4 priorite du processus

C’est la commande nice qui permet de fixer dès son démarrage la


priorité d’une nouvelle tâche. Pour gérer une priorité différente de
la priorité de base, il suffit de placer sa commande en argument de
la commande nice. Par défaut, cette dernière attribut une valeur de
10.

Les pipes
Les pipes sont un outil puissant du système d’exploitation open
source de Linux. Les pipes Linux permettent par exemple de traiter
de manière séquentielle une série de commandes liées à une base
de données ou de déplacer efficacement des données d’une
commande à une autre.

Syntaxe des pipes Linux et exemples d’application

pour utiliser correctement les pipes sous Linux, il faut d’abord en


connaître la syntaxe. Découvrez ci-dessous la structure de la
commande pipe, puis des exemples de la forme qu’elle peut
prendre dans votre terminal ou dans votre barre de commandes.

Vous aimerez peut-être aussi