Les processus

Les Processus UNIX

* Processus = programme + données + CPU
* Chaque commande déclenche un processus (si le nom de la commande est trouvé -> PATH)
* A un instant, un seul processus actif

* Le processus actif est changé (swapped) un grand nombre de fois par seconde
* Un même utilisateur peut lancer plusieurs processus
* Chaque processus est identifiable par un numéro, le PID (process Identification)

La Commande ps

* Permet de visualiser l’ensemble des processus existants sur la machine
* Les options varient d’un système l’autre (voir “man“)
* Principales options
BSD : “-aux“ (liste de tous les processus avec le nom de leur propriétaire)
SYSTEM V : “-edf“ (équivalent)

$> # liste des process qui m’appartiennent
$> ps
PID TTY TIME CMD
18156 pts/29 00:00:00 bash
21199 pts/29 00:00:00 ps

$> # ps ‘full’

# liste des process qui m’appartiennent avec noms user, PPID et parametres de commande
$> ps -f
UID PID PPID C STIME TTY TIME CMD
oracle 18156 18137 0 11:38 pts/29 00:00:00 -bash
oracle 21218 18156 0 13:16 pts/29 00:00:00 ps -f
$>

$> # tous les process (sauf kernel)
$> ps -ef
UID PID PPID C STIME TTY TIME CMD
root 27340 893 0 10:36 ? 00:00:00 /usr/sbin/sshd
root 27342 27340 0 10:36 pts/32 00:00:00 -bash
root 27433 27431 0 10:36 pts/33 00:00:00 -bash
root 7093 2143 0 11:09 ? 00:00:00 smbd -D

Principaux Attributs d’un processus

Tous ces attributs ne sont pas forcément montrés par la commande ps, cela dépend des options…

  • UID : l’idenfiant du user propriétaire du process
  • PID process ID, l’identifiant, c’est un integer.
  • PPID ou parent process ID, identifie le process père
  • C : utilisation du CPU
  • Nice number, utile à la gestion des priorités
  • TTY, le terminal auquel est connecté le processus
  • RUID, ou real user ID. l’utilisateur ayant lancé la commande
  • EUID, ou effective user ID. détermine les permissions utilisées
  • RGID, ou real group owner : le groupe de l’utilisateur réel
  • STIME : heure de début
  • TIME : temps total d’exécution
  • CMD : programme ou commande exécutée

La Commande kill et les signaux

* Permet de supprimer un processus qu’on ne contrôle plus (programme qui boucle …)
* L’argument de la commande est le PID du (des) processus qu’on désire supprimer

$ kill 12345
$ kill -9 54321

Par défaut la coimmande kill envoie un signal d’arret au processus mais il est possible d’envoyer d’autres interruptions avec la commande

$> kill -signal no_process

Le signal peut être considéré comme un événemnt envoyé au process par un autre process, un suer ou le noyau. Il y en a une trentaine différents, référencables par leur nom ou par un numéro. Citons les + utiles :

Voir commande : kill -l ou man 7 signal pour + d’infos

Voici une liste des signaux standards (POSIX) :

       Signal   |  Valeur  | Action | Commentaire
       ---------+----------+--------+------------------------------------------
        SIGHUP  |     1    |   A    | Raccrochement (déconnexion) sur terminal               |          |        | de contrôle, ou mort du processus
                |          |        | de contrôle.
        SIGINT  |     2    |   A    | Interruption depuis le clavier.
        SIGQUIT |     3    |   A    | Demande 'Quitter' depuis le clavier.
        SIGILL  |     4    |   A    | Instruction illégale.
        SIGABRT |     6    |   C    | Signal d'arrêt depuis abort(3).
        SIGFPE  |     8    |   C    | Erreur mathématique virgule flottante.
        SIGKILL |     9    |  AEF   | Signal 'KILL'.
        SIGSEGV |    11    |   C    | Référence mémoire invalide.
        SIGPIPE |    13    |   A    | Ecriture dans un tube sans lecteur.
        SIGALRM |    14    |   A    | Temporisation alarm(2) écoulée.
        SIGTERM |    15    |   A    | Signal de fin.
        SIGUSR1 | 30,10,16 |   A    | Signal utilisateur 1.
        SIGUSR2 | 31,12,17 |   A    | Signal utilisateur 2.
        SIGCHLD | 20,17,18 |   B    | Fils arrêté ou terminé.
        SIGCONT | 19,18,25 |        | Continuer si arrêté.
        SIGSTOP | 17,19,23 |  DEF   | Arrêt du processus.
        SIGTSTP | 18,20,24 |   D    | Stop invoqué depuis tty.
        SIGTTIN | 21,21,26 |   D    | Lecture sur tty en arrière-plan.
        SIGTTOU | 22,22,27 |   D    | Ecriture sur tty en arrière-plan

avec les actions :

A      Par défaut, terminer le processus.
B      Par défaut, ignorer le signal.
C      Par  défaut,  créer  un fichier core et terminer le  processus.
D      Par défaut arrêter le processus.
E      Le signal ne peut pas être intercepté.
F      Le signal ne peut pas être ignoré.

Exercice sur les processus

Vérifier qu’un serveur ssh (sshd) tourne sur la machine.
Notez son PID et aussi le PID de votre bash.
Lancez un client ssh.
Vérifiez comment sont liés votre process Batch , le process  ssh que vous avez lancé, le process ssh serveur et le process init.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.