AccueilLinuxSystemes d'exploitation

Processus Linux

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, sous debian 7 :

$ 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

Par exemple, sous Centos 7 :

$ pstree systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───{at-spi2-registr}
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─caribou───2*[{caribou}]
├─chronyd
├─colord───2*[{colord}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─dconf-service───2*[{dconf-service}]
├─firewalld───{firewalld}
├─gdm─┬─Xorg───2*[{Xorg}]
│ ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───4*[{gnome-settings-}] ...........

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)

  1. 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.
  2. NI Valeur standard Unix de gentillesse (nice). Une valeur positive signifie un accès moindre au CPU.
  3. SIZE Taille virtuelle de l’image du processus (code + données + pile).
  4. RSS Taille résidente de l’image du processus. Nombre de kilo-octets se trouvant en mémoire.
  5. WCHAN Nom de la fonction du noyau dans laquelle le processus est endormi.
  6. 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

  • Ajout des dépôts EPEL et RPMFORGE : https://gist.github.com/goffinet/4332ae9486345c2bf623
  • 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
#!/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 -hvmstat
  • iostat -d : bi et bo, lsblkblkid
  • lsof -u ^rootlsof -i TCP:22lsof -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 -fepstreetophtop
  • Commande w

11. Prévision des besoins en ressources

Objectif LPIC 200.2

$ top 
$ htop
yum install collectd-web 
systemctl enable collectd
systemctl enable httpd
systemctl start collectd
systemctl start httpd
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
cat /etc/httpd/conf.d/collectd.conf
Configuration for collectd. 

Alias /collectd/ /usr/share/collectd/collection3/

<Directory "/usr/share/collectd/collection3/">
Require local
# Require all granted
DirectoryIndex bin/index.cgi
DirectoryIndexRedirect on
</Directory>

<Directory "/usr/share/collectd/collection3/etc/">
Require all denied
</Directory>

<Directory "/usr/share/collectd/collection3/lib/">
Require all denied
</Directory>

<Directory "/usr/share/collectd/collection3/share/">
Require local
# Require all granted
</Directory>

<Directory "/usr/share/collectd/collection3/bin/">
Options ExecCGI
AddHandler cgi-script .cgi
Require local
# Require all granted
</Directory>
cat /etc/collectd.conf | wc -l

12. Cgroups, cpulimit

En cours de développemnt.

Mourad ELGORMA

Fondateur de summarynetworks, passionné des nouvelles technologies et des métiers de Réseautique , Master en réseaux et système de télécommunications. ,j’ai affaire à Pascal, Delphi, Java, MATLAB, php …Connaissance du protocole TCP / IP, des applications Ethernet, des WLAN …Planification, installation et dépannage de problèmes de réseau informatique……Installez, configurez et dépannez les périphériques Cisco IOS. Surveillez les performances du réseau et isolez les défaillances du réseau. VLANs, protocoles de routage (RIPv2, EIGRP, OSPF.)…..Manipuler des systèmes embarqués (matériel et logiciel ex: Beaglebone Black)…Linux (Ubuntu, kali, serveur Mandriva Fedora, …). Microsoft (Windows, Windows Server 2003). ……Paquet tracer, GNS3, VMware Workstation, Virtual Box, Filezilla (client / serveur), EasyPhp, serveur Wamp,Le système de gestion WORDPRESS………Installation des caméras de surveillance ( technologie hikvision DVR………..). ,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *