GNU/Linux >> Tutoriels Linux >  >> Linux

Surveillance des processus sous Linux

Présentation

Dans cet article, nous discuterons des commandes les plus courantes avec des exemples qui sont utilisés dans la surveillance des processus dans les systèmes Linux tels que :

  • ps
  • haut
  • htop
  • lsof

1. ps

Comme nous le savons tous, Linux est un système multitâche et multi-utilisateurs. Ainsi, il permet à plusieurs processus de fonctionner simultanément sans interférer les uns avec les autres. Le processus est l'un des concepts fondamentaux importants du système d'exploitation Linux. Un processus est une instance d'exécution d'un programme et exécute différentes tâches au sein du système d'exploitation.

Linux nous fournit un utilitaire appelé ps pour afficher les informations relatives aux processus sur un système qui est l'abréviation de "Process Status". La commande ps est utilisée pour répertorier les processus en cours d'exécution et leurs PID ainsi que d'autres informations dépendent de différentes options. Il lit les informations de processus à partir des fichiers virtuels dans /proc système de fichiers. /proc contient des fichiers virtuels, c'est la raison pour laquelle il est appelé système de fichiers virtuel.

ps fournit de nombreuses options pour manipuler la sortie en fonction de nos besoins.

Syntaxe :

ps [options]

Options pour la commande ps :

1- Sélection de processus simple :

Affiche les processus du shell courant

Le résultat contient quatre colonnes d'informations.
Où,
PID– l'ID de processus unique
ATS – type de terminal auquel l'utilisateur est connecté
HEURE – quantité de CPU en minutes et secondes que le processus a exécuté
CMD – nom de la commande qui a lancé le processus.

Remarque - Parfois, lorsque nous exécutons ps commande, il affiche TIME sous la forme 00:00:00. Ce n'est rien d'autre que le temps total d'utilisation du CPU accumulé pour n'importe quel processus et 00:00:00 indique qu'aucun temps CPU n'a été donné par le noyau jusqu'à présent. Dans l'exemple ci-dessus, nous avons constaté que, pour bash, aucun temps CPU n'a été donné. En effet, bash n'est qu'un processus parent pour différents processus qui ont besoin de bash pour leur exécution et bash lui-même n'utilise aucun temps CPU jusqu'à présent.

2. Afficher les processus :

Afficher tous les processus en cours d'exécution, utilisez l'une des options suivantes avec ps –

# ps -A
# ps -e
3. Afficher les processus non associés à un terminal :

Affichez tous les processus à l'exception des responsables de session et des processus non associés à un terminal.

# ps -a

Remarque - Vous pensez peut-être qu'est-ce qu'un animateur de session ? Une session unique est attribuée à chaque groupe de processus. Ainsi, le leader de session est un processus qui lance d'autres processus. L'ID de processus du premier processus de n'importe quelle session est similaire à l'ID de session.

4. Afficher tous les processus sauf les responsables de session :
# ps -d

5. Afficher tous les processus sauf ceux qui remplissent les conditions spécifiées (annule la sélection) :
Exemple – Si vous souhaitez voir uniquement le leader de la session et les processus non associés à un terminal. Ensuite, lancez

# ps -a -N
or
# ps -a --deselect

6. Afficher tous les processus associés à ce terminal :

# ps -T

7. Afficher tous les processus en cours :

# ps -r

8. Afficher tous les processus dont vous êtes propriétaire : Processus, c'est-à-dire le même EUID que ps, ce qui signifie exécuteur de la commande ps, root dans ce cas

# ps -x

Traiter la sélection par liste

Ici, nous allons discuter de la façon d'obtenir la liste des processus spécifiques à l'aide de la commande ps. Ces options acceptent un seul argument sous la forme d'une liste séparée par des blancs ou des virgules. Ils peuvent être utilisés plusieurs fois.
Par exemple : ps -p "1 2" -p 3,4

  1. Sélectionnez le processus par le nom de la commande. Cela sélectionne les processus dont le nom exécutable est donné dans cmdlist. Il est possible que vous ne connaissiez pas l'ID de processus et avec cette commande, il est plus facile de rechercher.

Syntaxe : ps -C nom_commande

Exemple :

[root@unixcop ~]# ps -C dhclient
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

2. Sélectionnez par ID de groupe ou nom. L'ID de groupe identifie le groupe de l'utilisateur qui a créé le processus.

Syntax : ps -G group_name
         ps --Group group_name

Example :
[root@unixcop ~]# ps -G root

3. Afficher par identifiant de groupe :

Syntax : ps -g group_id
              ps -group group_id

Exemple maintenant :

# ps -g 1

4. Afficher le processus par ID de processus.

-Syntax :
ps p process_id
ps -p process_id
ps --pid process_id

Et des exemples :

[root@unixcop ~]#  ps p 27223
  PID TTY      STAT   TIME COMMAND
27223 ?        Ss     0:01 sshd: root@pts/2

[root@unixcop ~]#  ps -p 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

[root@unixcop ~]#  ps --pid 27223
  PID TTY          TIME CMD
27223 ?        00:00:01 sshd

Vous pouvez afficher plusieurs processus en spécifiant plusieurs ID de processus séparés par un espace ou une virgule -
Pour Exemple :

[root@unixcop ~]#  ps -p 1 904 27223
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:13 /usr/lib/systemd/systemd --switched-root --system --d
  904 tty1     Ssl+   1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ?        Ss     0:01 sshd: root@pts/2

Ici, nous avons mentionné trois ID de processus - 1, 904 et 27223 qui sont séparés par un espace.

5. Sélectionnez par ID de processus parent. En utilisant cette commande, nous pouvons afficher tous les processus appartenant au processus parent, à l'exception du processus parent.

Exemples :

[root@unixcop ~]# ps -p 766
  PID TTY          TIME CMD
  766 ?        00:00:06 NetworkManager

[root@unixcop ~]# ps --ppid 766
  PID TTY          TIME CMD
19815 ?        00:00:00 dhclient

Dans l'exemple ci-dessus, l'ID de processus 766 est affecté à NetworkManager et il s'agit du processus parent pour dhclient avec l'ID de processus 19815.

6. Afficher tous les processus appartenant à n'importe quel ID de session.

Syntax :
ps -s session_id
ps --sid session_id

Example :
[root@unixcop ~]# ps -s 1248
  PID TTY          TIME CMD
 1248 ?        00:00:00 dbus-daemon
 1276 ?        00:00:00 dconf-service
 1302 ?        00:00:00 gvfsd
 1310 ?        00:00:00 gvfsd-fuse
 1369 ?        00:00:00 gvfs-udisks2-vo
 1400 ?        00:00:00 gvfsd-trash
 1418 ?        00:00:00 gvfs-mtp-volume
 1432 ?        00:00:00 gvfs-gphoto2-vo
 1437 ?        00:00:00 gvfs-afc-volume
 1447 ?        00:00:00 wnck-applet
 1453 ?        00:00:00 notification-ar
 1454 ?        00:00:02 clock-applet

7. Sélectionnez par tty. Ceci sélectionne les processus associés au tty mentionné :

The Syntax :
ps t tty
ps -t tty
ps --tty tty

Par exemple :

# ps -t pts/0

8. Sélectionnez par identifiant ou nom d'utilisateur effectif.

Et la syntaxe est :
ps U nom_utilisateur/ID

ps -U nom_utilisateur/ID

Contrôle du format de sortie

Ces options permettent de choisir les informations affichées par ps. Il existe plusieurs options pour contrôler le format de sortie. Ces options peuvent être combinées avec d'autres options comme e, u, p, G, g etc, dépend de nos besoins.

1. Utilisez -f pour afficher la liste en plein format.

ps -af

2. Utilisez -F pour afficher le format Extra complet.

ps -F

3. Pour afficher le processus selon le format défini par l'utilisateur.

#  ps --formate column_name
#  ps -o column_name
#  ps o column_name

Exemple :

ps -aN --format cmd,pid,user,ppid

Dans cet exemple, je souhaite voir la commande, l'ID de processus, le nom d'utilisateur et l'ID de processus parent, donc je passe respectivement les arguments cmd, pid, user et ppid.

4. Afficher au format de contrôle des tâches BSD :

ps -j

5. Afficher le format long BSD :

ps l

6. Ajoutez une colonne de données de sécurité.

ps -aM

7. Afficher la commande avec le format du signal.

[root@unixcop ~]# ps s 766

8. Afficher le format orienté utilisateur

ps u 1

9. Afficher le format de la mémoire virtuelle

ps v 1

10. Si vous voulez voir l'environnement de n'importe quelle commande. Ensuite, utilisez l'option **e** –

[root@unixcop ~]# ps ev 766
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
  766 ?        Ssl    0:08     47  2441 545694 10448  1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

11. Afficher les processus utilisant la mémoire la plus élevée.

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

12. imprimer un arbre de processus

[root@unixcop ~]# ps --forest -C sshd
  PID TTY          TIME CMD
  797 ?        00:00:00 sshd
11680 ?        00:00:03  \_ sshd
16361 ?        00:00:02  \_ sshd

13. Listez tous les threads pour un processus particulier. Utilisez soit le -T ou -L option pour afficher les threads d'un processus.

[root@unixcop ~]# ps -C sshd -L
  PID   LWP TTY          TIME CMD
  797   797 ?        00:00:00 sshd
11680 11680 ?        00:00:03 sshd
16361 16361 ?        00:00:02 sshd

Remarque - Pour l'explication des différents contenus de colonne, reportez-vous à la page de manuel.

Référence : Page de manuel

2. haut

haut La commande est utilisée pour afficher les processus Linux. Il fournit une vue dynamique en temps réel du système en cours d'exécution. Habituellement, cette commande affiche les informations récapitulatives du système et la liste des processus ou des threads actuellement gérés par le noyau Linux.
Dès que vous exécuterez cette commande, elle ouvrira un mode de commande interactif où la moitié supérieure contiendra les statistiques des processus et de l'utilisation des ressources. Et la moitié inférieure contient une liste des processus en cours d'exécution. En appuyant sur q quittera simplement le mode de commande.

Syntaxe :

top

Ici,

  • PID : Affiche l'ID de processus unique de la tâche.
  • RP : Représente la priorité de la tâche.
  • SHR : Représente la quantité de mémoire partagée utilisée par une tâche.
  • VIRT : Mémoire virtuelle totale utilisée par la tâche.
  • UTILISATEUR : Nom d'utilisateur du propriétaire de la tâche.
  • %CPU : Représente l'utilisation du processeur.
  • TIME+ : Temps CPU, identique à "TIME", mais reflétant une plus grande granularité au centième de seconde.
  • SHR : Représente la taille de la mémoire partagée (ko) utilisée par une tâche.
  • NI : Représente une belle valeur de tâche. Une valeur Nice négative implique une priorité plus élevée, et une valeur Nice positive signifie une priorité inférieure.
  • %MEM : Affiche l'utilisation de la mémoire de la tâche.

Exemples :

1) Quitter la commande supérieure après une répétition spécifique : La sortie supérieure continue de se rafraîchir jusqu'à ce que vous appuyiez sur 'q'. Avec la commande ci-dessous, la commande supérieure se terminera automatiquement après 20 répétitions.

top -n 10

2) Afficher le processus utilisateur spécifique

top -u unixcop

ici l'utilisateur appelé unixcop

3) Mettez en surbrillance le processus en cours d'exécution en haut : Appuyez sur ‘z‘ l'option dans la commande top en cours d'exécution affichera le processus en cours d'exécution en couleur, ce qui peut vous aider à identifier facilement le processus en cours d'exécution

4) Affiche le chemin absolu des processus :

Appuyez sur 'c' option dans l'exécution de la commande top, elle affichera le chemin absolu de l'exécution de pro

5) Arrêter le processus en cours : Vous pouvez tuer un processus après avoir trouvé le PID du processus en appuyant sur ‘k‘ option dans l'exécution de la commande supérieure sans quitter la fenêtre supérieure, comme indiqué ci-dessous.

6) Trier par utilisation du processeur : Appuyez sur (Maj+P) pour trier les processus en fonction de l'utilisation du processeur.

7) Affiche la syntaxe de la commande supérieure :

top -h 

8) Mode par lot : Envoyez la sortie du haut vers un fichier ou vers tout autre programme.

top -b

9) Mode sécurisé : Utilisez top en mode sécurisé.

top -s

10) Ligne de commande : La commande ci-dessous démarre en haut avec le dernier état fermé.

Top -c

11) Délai : Il indique le délai entre les mises à jour de l'écran.

top -d seconds.tenths

3. htop

htop La commande dans le système Linux est un utilitaire de ligne de commande qui permet à l'utilisateur de surveiller de manière interactive les ressources vitales du système ou les processus du serveur en temps réel. htop est un programme plus récent par rapport à top commande, et il offre de nombreuses améliorations par rapport à la commande supérieure. htop prend en charge le fonctionnement de la souris, utilise la couleur dans sa sortie et donne des indications visuelles sur l'utilisation du processeur, de la mémoire et de l'échange. htop imprime également des lignes de commande complètes pour les processus et permet de faire défiler verticalement et horizontalement les processus et les lignes de commande respectivement.

Syntaxe :

htop [-dChusv]

Exemple :

Choix :

  • -d –délai : Utilisé pour afficher le délai entre les mises à jour, en dixièmes de secondes.
  • -C –pas de couleur –pas de couleur :Démarrez htop en mode monochrome.
  • -h –help : Utilisé pour afficher le message d'aide et quitter.
  • -u –user=USERNAME : Utilisé pour afficher uniquement les processus d'un utilisateur donné.
htop -u qadry
  • -p –pid=PID, PID… : Utilisé pour afficher uniquement les PID donnés.
  • -s –sort-key COLONNE : Trier par cette colonne (utilisez l'aide de la clé de tri pour une liste de colonnes).
  • -V – version : Afficher les informations de version et quitter.

Commandes interactives :

  • Flèches, Page vers le haut, Page vers le bas, Accueil, Fin :Faites défiler la liste des processus.
  • Espace  :baliser ou débaliser un processus.
  • Vous – Démarquez tous les processus (supprimez toutes les balises ajoutées avec la touche Espace).
  • s – Suivi des appels système du processus.
  • F1 – Aide
  • F2 – configuration
  • F3 – rechercher
  • F4 – filtrage :tapez une partie de la ligne de commande d'un processus et seuls les processus dont les noms correspondent seront affichés.
  • F5 – Vue arborescente.
  • F6 – Trier.
  • F7 – Augmenter la priorité du processus sélectionné. Cela ne peut être fait que par le superutilisateur.
  • F8 – Diminuer la priorité du processus sélectionné.
  • F9 – Tuer le processus.
  • F10 – Quitter.

4. lsof

Linux/Unix considère tout comme un fichier et maintient un dossier. Alors « Fichiers ou un fichier » est très important sous Linux/Unix. Lorsque vous travaillez sur un système Linux/Unix, plusieurs fichiers et dossiers peuvent être utilisés, certains d'entre eux étant visibles et d'autres non.
lsof la commande signifie Liste des fichiers ouverts . Cette commande fournit une liste des fichiers qui sont ouverts. Fondamentalement, il donne les informations pour connaître les fichiers qui sont ouverts par quel processus. En une seule fois, il répertorie tous les fichiers ouverts dans la console de sortie. Il ne peut pas seulement répertorier les fichiers réguliers communs, mais il peut répertorier un répertoire, un fichier spécial de bloc, une bibliothèque partagée, un fichier spécial de caractère, un canal standard, un canal nommé, un socket Internet, un socket de domaine UNIX et bien d'autres. il peut être combiné avec la commande grep peut être utilisé pour effectuer une recherche et une liste avancées.

Syntaxe :

lsof [option][user name]

Options avec exemples :

  • Répertorier tous les fichiers ouverts : Cette commande répertorie tous les fichiers ouverts par n'importe quel processus du système.
lsof

Ici, vous observez qu'il y a des détails sur les fichiers qui sont ouverts. L'ID de processus, l'utilisateur associé au processus, FD (descripteur de fichier), la taille du fichier donnent tous ensemble des informations détaillées sur le fichier ouvert par la commande, l'ID de processus, l'utilisateur, sa taille, etc.

  • FD représente comme descripteur de fichier.
  • cwd :Répertoire de travail courant.
  • txt :Fichier texte.
  • mémoire :Fichier mémoire.
  • mmap  :Périphérique mappé en mémoire.
  • Répertorier tous les fichiers ouverts par un utilisateur : Il existe plusieurs utilisateurs d'un système et chaque utilisateur a des exigences différentes et, par conséquent, il utilise des fichiers et des périphériques. Pour trouver une liste des fichiers ouverts par un utilisateur spécifique, cette commande est utile.

Syntaxe :

lsof -u username

Exemple :

lsof -u qadry

Dans la figure ci-dessus avec la commande lsof -u qadry répertorie tous les fichiers ouverts par l'utilisateur. Parallèlement à cela, nous pouvons voir le type de fichier ici et ils sont :

  • DIR : Annuaire
  • REG : Fichier normal
  • CHR : Fichier spécial caractère
  • Répertorier tous les fichiers ouverts par tout le monde sauf un utilisateur spécifique : Avec l'aide de cette commande, vous pouvez lister tous les fichiers ouverts par tous les processus et tous les utilisateurs. Mais lorsque nous voulons trouver la liste des fichiers ouverts par tous les utilisateurs à l'exception d'un utilisateur particulier, nous pouvons utiliser :

Syntaxe :

lsof -u ^root

Dans la figure donnée, nous pouvons observer qu'aucun fichier n'est ouvert par l'utilisateur root.

  • Répertorier tous les fichiers ouverts par un processus particulier : Cette commande peut lister tous les fichiers ouverts par un processus particulier. -c suivi des noms de processus peut trouver tous les fichiers ouverts par ce processus particulier nommé dans la commande.
Syntaxe :
lsof -c crond

Ici, vous pouvez observer que les fichiers et leur description sont ouverts par le processus crond.

  • Répertorier tous les fichiers ouverts qui sont ouverts par un processus particulier : Chaque fichier est associé à un ID de processus. De nombreux fichiers peuvent être ouverts par un processus particulier. En utilisant lsof -p process ID, les fichiers ouverts par un processus particulier peuvent être vérifiés.

Syntaxe :

lsof -p process ID

Exemple :

lsof -p 2781
  • Fichiers ouverts par tous les autres PID : Comme la commande de la figure ci-dessus répertorie les fichiers ouverts par un ID de processus particulier. De la même manière, vous pouvez utiliser l'option de commande ci-dessous pour connaître la liste des fichiers qui ne sont pas ouverts par un ID de processus particulier.
Syntaxe :
lsof -p ^process ID
  • Répertorier les ID de processus parent : Il existe un grand nombre de processus en cours d'exécution dans un système et ils ont des fichiers ouverts pour son utilisation. Il peut y avoir de nombreux processus enfants d'un processus et ce processus peut également être appelé processus parent. Pour connaître la liste des fichiers ouverts par le processus parent, la commande Id lsof est utilisée avec l'option -R .

Syntaxe :

lsof -R
  • Fichiers ouverts par un répertoire : Il répertorie les fichiers qui sont ouverts par un répertoire particulier. Il existe des fichiers ainsi que le répertoire dans un système. Il peut donc y avoir plusieurs fichiers ouverts par un répertoire en plus du fichier normal.

Syntaxe :

lsof -D directory path
  • Fichiers ouverts par les connexions réseau : Notre PC/système peut être connecté via différents réseaux, ce qui aide à diverses fins. Comme nous savons que sous Linux, tout est un fichier, nous pouvons même vérifier les fichiers ouverts par certaines connexions réseau dans le système.

Syntaxe :

lsof -i

Exemple :

lsof -i tcp

Ici, sur la figure, nous pouvons voir les fichiers ouverts par le réseau TCP. De la même manière, nous pouvons vérifier UDP, etc.

Remarque : Pour en savoir plus sur la commande lsof, vous pouvez consulter la page de manuel comme suit :

 man lsof

Linux
  1. 30 exercices de processus Linux pour les administrateurs système

  2. Linux – Init Process :ancêtre de tous les processus ?

  3. Commande Linux ps

  4. UNIX / Linux :3 façons d'envoyer un signal aux processus

  5. Linux :trouver et tuer les processus zombies

30 meilleurs exemples de commandes pour la surveillance sous Linux

Comment tuer les processus Zombie sous Linux

Processus en cours d'exécution

Comprendre les processus sous Linux

Commandes pour la gestion des processus sous Linux

Comment envoyer des processus en arrière-plan sous Linux