Étiquette : kill

15 décembre 2017 /

Pour tuer tous les processus d’un utilisateur:

pkill -u login

12 octobre 2016 /

Un processus zombie est un processus qui a été lancé par un processus parent et qui s’est terminé sans que le processus père ne soit mis au courant.

Le système a donc vidé la mémoire et les ressources utilisées par le processus zombie.
La table des processus garde cependant une trace de celui-ci, (attendant simplement le moment où le processus parent demandera au système d’exploitation l’état de son processus fils) cela crée un processus zombie.

Trop de processus zombies provoque un gaspillage énorme de ressources et peut aussi amener à ne plus pouvoir lancer de nouveaux programmes si le nombre de processus max est atteint au sein du système.

Vous pouvez identifier le nombre maximal de processus:

cat /proc/sys/kernel/pid_max

32768

Généralement, c’est la valeur 32768 qui apparaît.

Pour éviter ce genre de situation, tout processus bien écrit ne devrait pas créer de zombie et par extension, il n’est donc pas normal d’en trouver.
Pour supprimer un zombie, vous devez tuer le processus père.

Attention tout de même, le fait de tuer un processus parent peut rendre votre système instable et vous obliger à redémarrer.

Pour vérifier l’état des processus, on va utiliser la commande ps:

ps aux | grep Z

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
starmate 7294 0.0 0.0 0 0 pts/9 Z 20:47 0:00 [08_zombie]
starmate 7282 0.0 0.0 11812 2316 pts/9 S+ 20:48 0:00 grep --colour=auto Z

La colonne STAT (en gras) affiche un Z si le processus est dans l’état zombie.
C’est le cas du processus qui a le PID 7294.

Pour connaître le processus père, il suffit d’utiliser la commande pstree:

pstree -p -s 7294

init(1)───mdm(1354)───mdm(1381)───init(2525)───entropia(3509)───bash(3682)───08_zombie(7293)───08_zombie(7294)

On peut voir que le processus père est le programme 08_zombie dont le PID est 7293.
Pour tuer ce programme, on utilise la commande kill:

kill -9 7293

Bravo, vous avez tué votre premier zombie.

22 octobre 2015 /

Lsof (List Open file) est une commande Unix/Linux qui permet de lister les fichiers actuellement ouverts sur le système.

Utilisation de commande lsof :
lsof /chemin/d'un/fichier (pour voir qui ou quoi ouvre actuellement le fichier)
lsof +D /chemin/répertoire/ (pour voir qui ou quoi ouvre actuellement les fichiers d'un répertoire )
lsof -i (tous services internet TCP/UDP)
lsof -i tcp (tous services TCP)
lsof -i udp (tous services UDP)
lsof -i tcp:80 (services TCP sur port 80)
lsof -i @192.168.2.10 (liaison internet de mon poste avec 192.168.2.10)

Afficher les fichiers ouverts par un processus (uid):

lsof -p 75014

Afficher les connexions internet ouvertes par un processus :

lsof -i -p 75014

Pour connaître tous les ports réseau ouvert par le processus qui a le pid 75014 (-a est interprété comme AND)

lsof -i -a -p 75014

La forme suivante de la commande permet de connaître tous les fichiers ouverts par l’utilisateur starmate:

lsof -u starmate

La même chose mais cette fois cela concerne tous les utilisateurs sauf starmate:

lsof -u ^starmate

L’option « -t » permet de retourner dans la sortie standard uniquement l’uid du/des processus ouvrant le/les fichier(s), il est simple par la suite de l’exploiter avec une petite boucle:

for i in `lsof -t -u starmate`; do kill -9 $i; done

Pour identifier les processus en cours d’exécution qui ont gardés ouvert des fichiers qui ont été supprimés:

lsof +L1

Les processus qui n’ont pas libérés les fichiers supprimés sont identifiés avec l’argument (deleted) en fin de ligne.

8 octobre 2015 /

Un petit script pour tuer un processus qui dure trop longtemps (ici php):

#!/bin/bash
/bin/ps -eo pid,etime,command|/bin/grep /usr/local/zend/bin/php|/bin/egrep '([0-9]+)([ ]+)([2-9]{1}[0-9]{1}:[0-9]{2})'|/bin/awk '{print $1}'|xargs -I{} kill {}

1 octobre 2015 /

Tous d’abord il faut récupérer son PID, pour le test j’ai lancé une vidéo avec vlc.
Pour cela on fait un petit ps:

ps -ef | grep -i vlc | grep -v grep

starmate  1656 20540 52 22:07 ?        00:00:03 /usr/bin/vlc --started-from-file /...

On voit que le PID est 1656.

Donc maintenant pour figer le processus, on utilise le paramètre -STOP:

kill -STOP 1656

Pour le reprendre, on utilisera le paramètre –CONT:

kill -CONT 1656