Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Linux et Mise en réseau Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Dans le monde de l’informatique, la résolution des problèmes liés aux performances est toujours un défi, et si vous ne connaissez pas les bons outils, la situation est frustrante

Si vous travaillez en tant que support dans un environnement de production, il est fort probable que vous ayez à traiter des problèmes liés aux performances dans l’environnement Linux. Passons en revue quelques-uns des utilitaires de ligne de commande Linux les plus utilisés pour diagnostiquer les problèmes liés aux performances

Remarque : certaines des commandes énumérées ci-dessous peuvent ne pas être installées par défaut, vous devez donc les installer manuellement

lsof

lsof signifie “list open files” (liste des fichiers ouverts) et vous aide à trouver tous les fichiers et processus ouverts ainsi que la personne qui les a ouverts. L’utilitaire lsof peut s’avérer pratique dans certains cas

Pour lister tous les fichiers ouverts par un PID particulier
#

 lsof -p PID

Comptez le nombre de fichiers et de processus
[

root@localhost ~]# lsof -p 4271 | wc -l
34
[root@localhost ~]#

Vérifiez le fichier journal actuellement ouvert
#

 lsof -p | grep log

Trouvez le numéro de port utilisé par le processus

lsof -i -P |grep $PID
[root@localhost ~]# lsof -i -P |grep 4271

nginx

 4271 root 6u IPv4 51306 0t0 TCP *:80 (LISTEN)

nginx

 4271 root 7u IPv4 51307 0t0 TCP *:443 (LISTEN)

[root@localhost ~]#

Consultez d’autres exemples de commandes lsof

pidstat

pidstat peut être utilisé pour surveiller les tâches gérées par le noyau Linux. Le dépannage des problèmes liés aux entrées/sorties peut être facilité par cette commande

Liste des statistiques d’E/S de tous les PID

# pidstat -d

Pour déplacer les statistiques d’E/S d’un PID particulier

# pidstat -p 4271 -d

Si vous effectuez un dépannage en temps réel d’un processus, vous pouvez surveiller les E/S à intervalles réguliers. Dans l’exemple ci-dessous, les E/S sont surveillées toutes les 5 secondes

[root@localhost ~]# pidstat -p 4362 -d 5

Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)

07:01:30 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command

07:01:35 PM 0 4362 0.

00 0.00 0.

00 nginx

07:01:40 PM 0 4362

0

.00 0.00 0.00 nginx

07:01:45 PM 0 4362

0

.00 0.00 0.00 nginx

07:01:50 PM 0 4362

0.

00 0.00 0.00 nginx

top

L’une des commandes les plus utilisées sous Linux est probablement top. La commande top peut être utilisée pour afficher des informations sommaires sur le système et l’utilisation actuelle

La simple exécution de la commande top peut vous montrer l’utilisation du processeur, les détails des processus, un certain nombre de tâches, l’utilisation de la mémoire, un certain nombre de processus zombies, etc

top - 11:48:43 up 13 jours, 17:25, 1 utilisateur, charge moyenne : 0.00, 0.00, 0.00
Tâches : 90 au total, 2 en cours, 88 en sommeil, 0 arrêté, 0 zombie
%Cpu(s) : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.7 total, 388.1 libre, 220.3 utilisé, 1221.4 buff/cache
MiB Swap : 0.0 total, 0.0 libre, 0.0 utilisé.   1369.4 avail Mem

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
 1 root 20 0 186820 13400 9092 S 0.0 0.7 0:10.87 systemd
 2 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kthreadd
 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
 9 root 20 0 0 0 0 S 0.0 0.0 0:07.35 ksoftirqd/0
 10 root 20 0 0 0 0 R 0.0 0.0:07.30 rcu_sched
 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
 12 root rt 0 0 0 0 S 0.0 0.0 0:00.50 watchdog/0
 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
 16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
 17 root 20 0 0 0 0 S 0.0 0.0:00.68 kauditd
 18 root 20 0 0 0 0 S 0.0 0.0 0:00.25 khungtaskd
 19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper
 20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback
 21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0
 22 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
 23 root 39 19 0 0 0 S 0.0 0.0 0:05.63 khugepaged
 24 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 crypto
 25 root 0 -20 0 0 0 I

0.0 0.0 0:00.

00 kintegrityd
 26 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kblockd

Pour afficher les détails d’un processus pour un utilisateur spécifique
#

 top -u nom d'utilisateur

Pour tuer le processus, vous pouvez exécuter top et appuyer sur k. Le système vous demandera d’entrer le PID à tuer

top - 11:49:39 up 13 jours, 17:26, 1 utilisateur, charge moyenne : 0.00, 0.00, 0.00
Tâches : 91 au total, 1 en cours, 90 en sommeil, 0 arrêté, 0 zombie
%Cpu(s) : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1829.7 total, 386.9 libre, 221.4 utilisé, 1221.4 buff/cache
MiB Swap : 0.0 total, 0.0 libre, 0.0 utilisé.

1368.

3 mémoires disponibles

PID

à signaler/tuer [pid par défaut = 21261]
 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
 5834 nginx 20 0 148712 7428 4800 S

0

.0 0.4 0:02.37 nginx

ps

ps est l’acronyme de process status et est une commande très utilisée pour obtenir un aperçu du processus en cours d’exécution. Cette commande est très utile pour savoir si un processus est en cours d’exécution ou non et, s’il est en cours d’exécution, elle affiche le PID

Pour obtenir le PID et les détails du processus par un mot quelconque

[root@lab ~]# ps -ef|grep nginx
root 5833 1 0 May24 ? 00:00:00 nginx : master process /usr/sbin/nginx

nginx

 5834 5833 0 May24 ? 00:00:02 nginx : worker process
root 21267 18864 0 11:50 pts/0 00:00:00 grep --color=auto nginx
[root@lab ~]#

tcpdump

Le dépannage des problèmes de réseau est toujours un défi, et l’une des commandes essentielles à utiliser est tcpdump

Vous pouvez utiliser tcpdump pour capturer les paquets réseau sur une interface réseau

Pour capturer les paquets sur une interface réseau particulière

[root@lab ~]# tcpdump -i eth0 -w /tmp/capture

tcpdump

: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

^C9

 packets captured
16 packets received by filter

0

 packets dropped by kernel
[root@lab ~]#

Comme vous pouvez le voir ci-dessus, le flux de trafic a été capturé sur l’interface eth0

Pour capturer le trafic réseau entre l’IP source et l’IP destination

# tcpdump src $IP et dst host $IP

Capturez le trafic réseau pour le port de destination 443

# tcpdump dst port 443
tcpdump : data link type PKTAP
tcpdump : verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Packet Tap), capture size 262144 bytes
12:02:30.833845 IP 192.168.1.2.49950 > ec2-107-22-185-206.compute-1.amazonaws.com.https : Flags [.], ack 421458229, win 4096, length 0
12:02:32.076893 IP 192.168.1.2.49953 > 104.25.133.107.https : Flags [S], seq 21510813, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 353259990 ecr 0,sackOK,eol], length 0
12:02:32.090389 IP 192.168.1.2.49953 > 104.25.133.107.https : Flags [.], ack 790725431, win 8192, length 0
12:02:32.090630 IP 192.168.1.2.49953 > 104.25.133.107.https : Drapeaux [P.], seq 0:517, ack 1, win 8192, length 517
12:02:32.109903 IP 192.168.1.2.49953 > 104.25.133.107.https : Drapeaux [.], ack 147, win 8187, length 0

Lisez le fichier capturé

# tcpdump -r nom du fichier

Ex : pour lire un fichier capturé ci-dessus

# tcpdump -r /tmp/test

En savoir plus sur tcpdump pour capturer et analyser le trafic réseau

iostat

iostat signifie statistiques d’entrée-sortie et est souvent utilisé pour diagnostiquer un problème de performance avec les périphériques de stockage. Vous pouvez surveiller le rapport d’utilisation du système de fichiers CPU, Device & Network avec iostat

Afficher les statistiques d’E/S du disque

[root@localhost ~]# iostat -d
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
Périphérique : tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda

 1.82 55.81 12.63 687405 155546
[root@localhost ~]

#
Affichez les statistiques de l’unité centrale
[

root@localhost ~]# iostat -c
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
avg-cpu : %user %nice %system %iowait %steal %idle
 0.59

0.

02 0.33 0.54

0.

00 98.52
[root@localhost ~]#

ldd

ldd est l’abréviation de list dynamic dependencies (liste des dépendances dynamiques ) et permet d’afficher les bibliothèques partagées dont la bibliothèque a besoin. La commande ldd peut être utile pour diagnostiquer le problème de démarrage d’une application

Si un programme ne démarre pas parce que les dépendances ne sont pas disponibles, vous pouvez utiliser la commande ldd pour trouver les bibliothèques partagées qu’il recherche

[root@localhost sbin]# ldd httpd
 linux-vdso.so.1 => (0x00007ffe7ebb2000)
 libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fa4d451e000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fa4d42f9000)
 libaprutil-1.so.0 => /lib64/libaprutil-1.so.0 (0x00007fa4d40cf000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fa4d3e98000)
 libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fa4d3c6e000)
 libdb-5.3.so => /lib64/libdb-5.3.so (0x00007fa4d38af000)
 libapr-1.so.0 => /lib64/libapr-1.so.0 (0x00007fa4d3680000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa4d3464000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00007fa4d325f000)
 libc.so.6 => /lib64/libc.so.6 (0x00007fa4d2e9e000)
 liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fa4d2c79000)
 /lib64/ld-linux-x86-64.so.2 (0x00007fa4d4a10000)
 libuuid.so.1
=> /lib64/libuuid.so.1 (0x00007fa4d2a73000)
 libfreebl3.so => /lib64/libfreebl3.so (0x00007fa4d2870000)
[root@localhost sbin]#

netstat

netstat(Network Statistics) est une commande populaire qui permet d’afficher les connexions réseau, les statistiques des interfaces et de résoudre divers problèmes liés au réseau

Pour afficher les statistiques de tous les protocoles

# netstat -s

Vous pouvez utiliser grep pour vérifier s’il y a des erreurs

[root@localhost sbin]# netstat -s | grep error
 0 packet receive errors
 0 receive buffer errors
 0 send buffer errors
[root@localhost sbin]#

Pour afficher la table de routage du noyau

[root@localhost sbin]# netstat -r
Table de routage IP du noyau
Passerelle de destination Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eno16777736
172.

16.

179.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
192.168.122.0

0.0.0.0.0

 255.255.255.0 U 0 0 0 virbr0
[root@localhost sbin]#

Découvrez d’autres exemples de commandes netstat

libre

Si votre serveur Linux manque de mémoire ou si vous souhaitez simplement connaître la quantité de mémoire disponible, la commande free vous sera utile

[root@localhost sbin]# free -g
 total used free shared buff/cache available
Mem :             5 0 3 0 1 4
Swap : 5 0 5
[root@localhost sbin]

#
g signifie que les détails sont affichés en Go. Comme vous pouvez le voir, la mémoire totale disponible est de 5 Go et 3 Go sont libres

sar

la commande sar(System Activity Report) est utile pour collecter un certain nombre de rapports, notamment sur le processeur, la mémoire et la charge des périphériques

Il suffit d’exécuter la commande sar pour connaître l’utilisation du système pendant toute la journée

sar-output

Par défaut, le rapport d’utilisation est enregistré au bout de 10 minutes. Si vous avez besoin d’un rapport plus court en temps réel, vous pouvez l’utiliser comme suit

Affichez le rapport d’utilisation du processeur 3 fois toutes les 3 secondes

[root@localhost sbin]# sar 3 2
Linux 3.10.0-327.13.1.el7.x86_64 (localhost.localdomain) 08/13/2016 _x86_64_ (2 CPU)
11:14:02 PM CPU %user %nice %system %iowait %steal %idle
11:14:05 PM all 1.83

0

.00 0.50 0.17

0.

00 97.51
11:14:08 PM all 1.50

0.

00 0.17 0.00 0.00 98.33
Moyenne : all 1.67

0.

00 0.33 0.08

0.

00 97.92
[root@localhost sbin]#

Afficher le rapport d’utilisation de la mémoire

# sar -r

Afficher le rapport sur le réseau
#

 sar -n ALL

ipcs

ipcs(InterProcess Communication System) fournit un rapport sur les sémaphores, la mémoire partagée et la file d’attente des messages

Pour afficher la file d’attente des messages

# ipcs -q

Pour lister les sémaphores
# ipcs

-s

Pour lister la mémoire partagée
# ipcs

-m

Pour afficher l’état d’utilisation actuel de l’IPC

[root@localhost sbin]# ipcs -u

------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes

------ Shared Memory Status --------
segments allocated 5
pages allocated 2784
pages resident 359
pages swapped 0
Swap performance : 0 tentatives 0 succès

------ État des sémaphores --------
tableaux utilisés = 0
sémaphores alloués = 0
[root@localhost sbin]#

ioping

ioping est une commande externe que vous pouvez installer ici. Elle peut s’avérer très pratique pour surveiller la latence des E/S disque en temps réel

Conclusion

J’espère que les commandes ci-dessus vous aideront dans les différentes situations de votre travail d’administration système. Les commandes mentionnées ci-dessus sont bonnes à utiliser à la demande. Cependant, si vous avez besoin de surveiller les serveurs Linux en permanence, vous devriez envisager d’utiliser un logiciel de surveillance des serveurs

Et pour en savoir plus sur les performances de Linux, vous pouvez consulter ce cours Udemy.

  • Chandan Kumar
    Auteur
    Chandan Kumar est le fondateur de Geekflare. Il a aidé des millions de personnes à exceller dans le domaine numérique. Passionné de technologie, il s'est donné pour mission d'explorer le monde et d'amplifier la croissance des professionnels et des entreprises.
Merci à nos sponsors
D'autres bonnes lectures sur Linux
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus