Un processus est l'instance d'exécution d'un programme dans un contexte donné. Plusieurs processus d'un même programme peuvent s'exécuter parallèlement sur le même serveur, et exécuter par des utilisateurs différents. Nous verrons ici un ensemble d'instructions permettant la gestion de ces processus sur une machine Debian.
Pour lister les processus tournant sur la machine Debian, on peut utiliser la commande top.
top
Pour ma part, je préfère utiliser le programme htop qui est plus complet que top.
htop n'est pas installé nativement sur Debian. Il faut l'installer avec aptitude ou apt-get, comme ceci : aptitude install htop
htop
La commande ps permet d'afficher les processus en cours d'exécution.
ps
ps aux
ps -u root ps -u apache2
La commande pidof est plus adapté a l'utilisation dans un script car pidof retourne les PID d'un processus contrairement a la commande ps qui fait un instantané.
pidof apache2
Cet exemple donnera à l'écran quelque chose qui ressemble a ceci
15008 15006 15005 15004 15003 15001 10046 10044 10043 9997 9975
Ici nous constatons que Apache2 est lancé plusieurs fois, ce qui est normal. Un processus Apache2 est attribué à chaque visiteur.
Il arrive, parfois, qu'on ai besoin d'arrêter un processus, voici 3 commandes spécialisées dans l'arrêt des processus.
killall permet de tuer tous les processus dont le nom de commande est connu
killall apache2
kill permet de tuer le processus dont on connait le PID.
kill -9 2731
On peut connaître le PID d'un processus grâce à la commande top ou htop.
pkill permet d'arrêter tous les processus liés à un utilisateur spécifique.
pkill -u utilisateur
On va prendre comme exemple un cas pratique. J'ai rencontré lors d'un redémarrage serveur postfix qui ne voulait pas démarrer car un processus était déjà en route sur le port 25. J'avais ce message dans les logs
Mar 6 18:36:16 xxx postfix/master[4393]: fatal: bind 0.0.0.0 port 25: Address already in use
Pour savoir quel processus écoutait sur le port 25, et empêchait le redémarrage de postfix, j'ai utilisé cette commande :
lsof -i TCP:25
Ce qui m'a donné le message suivant :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sendmail- 3169 root 4u IPv4 6510 0t0 TCP ns1.chg-web.net:smtp (LISTEN)
Donc, il a suffit de "killer" le processus avec la commande kill pour pouvoir démarrer postfix.
Autres liens rapides pouvant vous intéresser