Outils pour utilisateurs

Outils du site


linux:processus

Les processus

Les processus sont des instances de programmes. Il est bien sûr possible d'interragir avec ceux-ci. Chaque processus est identifié par un numéro. Le premier processus (qui a toujours le numéro 1) est le processus init.


Afficher les processus

Pour lister les processus, on utilise la commande ps

Voici quelques exemple d'utilisation de cette commande.

ps -ux 

Permet de voir tous les processus de l'utilisateur

ps aux

Permet de voir tous les processus du système.


Il est également possible d'afficher l'arborescence des processus, avec leur PID et leur utilisateur :

pstree -pu 


Lorsque l'on parle des processus, on utilise souvent les notions suivantes :

  • PID : le numéro d'identification du processus
  • PPID : le numéro d'identification du processus parent


Il est possible d'obtenir le PID d'un processus comme ceci :

ps -l | grep process


Il existe une commande très pratique permettant de voir l'activité des processus en temps réél. Il s'agit de la commande top. Cette commande permet de visualiser l'utilisation des ressources par chaque processus.


Envoyer un signal à un processus

Pour interragir avec un processus, il faut lui envoyer un signal. Cela se fait en utilisant la comande kill.
Sous Linux, il existe 63 signaux différents. Certains sont assez peu utilisés. Voyons seulement les plus utilisés :

  • 1 : le signal 1 (SIGHUP) est un signal envoyé par le processur parent à tous ses enfants lorsqu'il termine son activité.
  • 2 : le signal 2 (SIGINT) est le signal d'interruption d'un processus.
  • 9 : le signal 9 (SIGKILL) termine un processus via un appel noyau. Dans ce cas, le processus prend fin immédiatement, sans sauvegarde.
  • 15 : le signal 15 (SIGTERM) : termine un processus, en vidant la mémoire. C'est le signal par défaut de la commande kill car c'est le plus propre pour mettre fin à un processus.


La commande kill nécessite de préciser le numéro de processus. Par exemple :

kill -9 1515


Mais il se peut qu'on ne connaisse pas le PID auquel on souhaite envoyer le signal. On peut alors utiliser killall :

killall -9 gedit


Fonctionnement des processus

Lorsque l'ordinateur est en fonction, on peut constater par la commande ps aux que de nombreux processus sont en fonctionnement. Comment sont-il hierarchisés ? Tout simplement par l'attribution d'un numéro de priorité. Ainsi, plus la priorité est élevée, plus le processus se verra attribuer du temps processeur.


La commande nice, utilisée au démarrage du processus, permet d'en modifier la priorité. Elle permet, en effet, de définir une valeur comprise entre -20 et +19. Plus la valeur sera élevée, moins le processus sera prioritaire. Voici un exemple d'utilisation de la commande nice :

nice -n 10 /home/justegeek/mon_script

Attention : l'utilisateur peut utiliser que des valeurs positives (qui diminuent la priorité). Les valeurs négatives ne peuvent être utilisées que par le super-utilisateur (root).


Si l'on souhaite modifier la priorité d'un processus en cours, il convient d'utiliser la commande renice. Pour l'utilisation de renice :

renice -n 15 -p 1515

L'option -p correspond au PID. Il est également possible d'agir sur plusieurs processus d'un utilisateur en utilisant -u ou d'un groupe, avec -g.


La commande nohup

Quand un utilisateur se déconnecte, le shell est quitté, et un signal SIGHUP est envoyé aux processus enfants de ce shell.
La commande nohup permet de lancer un processus qui restera actif même lorsque l'utilisateur quittera le shell. Cette commande permet d'ignorer le SIGHUP. Voici un exemple d'utilisation :

nohup /home/justegeek/mon_script &

Le signe “&” à la fin de la ligne permet de faire tourner la commande en arrière plan et de récupérer le prompt.


linux/processus.txt · Dernière modification: 2018/04/09 05:01 (modification externe)