Site de Jean-Michel RICHER

Maître de Conférences en Informatique à l'Université d'Angers

Ce site est en cours de reconstruction certains liens peuvent ne pas fonctionner ou certaines images peuvent ne pas s'afficher.


stacks
counter_0   Historique counter_1   Cours 1 counter_2   TP 1 counter_3   TP 2 counter_4   accès

1. Système de fichiers, arborescences

1.1. Système d'exploitation

Définition : Système d'exploitation

Un Système d'Exploitation (SE), ou Operating System en anglais (OS) est constitué d'un ensemble de programmes qui gèrent le fonctionnement de composants électroniques (ordinateur, téléphone portable, tablette, smartphone, montre connectée).

L'OS permet notamment :

  • de gérer les périphériques de stockage comme les disques durs (HDD, SSD, internes et externes), les CD/DVD/BluRay ainsi que les clés USB au travers de drivers qui sont des petits programmes qui seront chargés si on utilise un périphérique en particulier (réseau filaire, Wifi, etc)
  • de gérer le matériel pour exécuter les programmes (attribution de mémoire, gestion de l'accès aux fichiers et aux périphériques, ordonnancement pour l'exécution sur tel coeur du microprocesseur)

Généralement, l'OS impose un format spécifique de stockage des fichiers sur les périphériques comme les disques durs : il s'agit du système de fichiers du système d'exploitation.

Le système de fichiers définit notamment :

  • les conventions de nommage des fichiers comme le nombre maximal de caractères, les caractères autorisés
  • le format permettant de déterminer le chemin d'accès à un fichier au travers de l'arborescence de répertoires
  • la manière dont sont stockés les fichiers et répertoires sur le support physique

Voici quelques exemples de systèmes de fichiers liés à des systèmes d'exploitation :

 Système d'Exploitation   Type de système 
 MSDOS   FAT (Fat16, Fat32, VFAT) 
 WINDOWS   NTFS 
 LINUX   EXT (EXT2, EXT3, EXT4) 
 MACOS   HFS (HFS+) 
Exemples de Systèmes de fichiers

Par exemple le système de fichier FAT (File Allocation Table), qui est relativement ancien (1977), est généralement utilisé pour les clés USB notamment dans sa version FAT32 (1996).

En général, un ordinateur sous Windows ne pourra pas lire des fichiers sous LINUX à moins d'installer des drivers ou un logiciel spécifique. De la même manière un ordinateur sous LINUX ne pourra pas lire des fichiers sous NTFS à moins d'installer le package ntfs-3g.

Il existe d'autres systèmes d'exploitation comme :

  • Chrome OS de Google qui est un embranchement de la distribution GNU/Linux Gentoo
  • Android (Google) est un système d'exploitation mobile fondé sur le noyau Linux pour les téléphones portables et tablettes

1.2. Système de fichier MSDOS / Windows et Linux / Unix

1.2.1. MSDOS / Windows

Le système de fichier de MSDOS -- MicroSoft Disk Operating System -- (FAT16, FAT32, VFAT), puis de Windows qui utilise NTFS (New Technology File System) depuis 1993 avec la version Windows NT 3.1, repose sur l'utilisation de lecteurs identifiés par une lettre : A:, B:,C:, etc.

Ces lecteurs correspondent à un disque ou une partition (c'est à dire une partie du disque).

Dans une configuration classique, on trouvera les associations suivantes :

  • A:, B: lecteurs de disquettes (obsolète)
  • C: SSD (Solid State Disk), qui stocke le système d'exploitation Windows
  • D: HDD (Disque Dur) qui stocke les données utilisateurs (jeux, vidéos, images)
  • E: lecteur de CD/DVD/BluRay

1.2.2. Linux / Unix

L'organisation d'un système Unix ou Linux repose sur une seule arborescence qui commence à la racine notée / (pour barre oblique ou slash en anglais).

Chaque sous-répertoire peut être associé à un support physique différent ou à une partition d'un disque.

Sous Linux on utilise le slash pour décrire un chemin : /home/users/richer/

Sous Windows on utilise l'anti-slash pour décrire un chemin : C:\Documents\

Voici une arborescence de premier niveau sous Linux Ubuntu 20.04 à partir de la racine :

Voici quelques répertoires importants sous Linux :

  • /boot : contient les informations nécessaires au démarrage de Linux
  • /bin : contient les programmes de base du système d'exploitation Linux
  • /dev pour devices contient les fichiers de périphériques
  • /etc contient les fichiers de configuration (serveur web, PHP, Perl, réseau, etc)
  • /home répertoire qui contient les comptes des utilisateurs
  • /mnt pour mount ensemble des systèmes de fichiers montés, c'est à dire utilisables
  • /proc ensemble des programmes (processus) en fonctionnement
  • /sys pour system
  • /usr programmes et librairies additionnels
  • /var pour variable contient les fichiers fréquemment modifiés notamment les log du système

Vous trouverez plus d'explications sur la documentation Ubuntu.

1.3. Le shell

Définition : Shell

Le shell que l'on qualifie également de console ou de terminal est un programme qui exécute les commandes que saisit l'utilisateur au clavier. On peut le voir comme un petit langage de programmation.

Il permet d'interagir avec le système d'exploitation.

En fait, on confond généralement ces trois termes, mais on distingue :

  • le shell qui est le programme qui interprète vos commandes
  • le terminal qui est l'application (la fenêtre) dans laquelle vous saisissez vos commandes
  • la console qui est l'interface texte fondamentale de bas niveau du système

Il existe plusieurs types de shell :

  • sh : de Stephen Bourne, AT&T, Version 7 d'Unix, shell par défaut
  • bash : Bourne Again SHell, amélioration de sh (celui que nous utiliserons)
  • csh : C SHell, syntaxe proche du langage C
  • tcsh : Tenex C shell, amélioration de csh
  • ksh : de David Korn
  • zsh : bash + ksh + tcsh

Pour connaître le shell utilisé par défaut, saisissez la commande suivante dans le terminal :

richer@zentopia:~\$ echo $SHELL
/bin/bash

1.3.1. Cas du Bash

Dans votre HOME directory (voir ci-après), vous disposez d'un fichier .bashrc qui contient la configuration du terminal et définit des variables d'environnement :

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case \$- in
    *i*) ;;
      *) return;;
esac
...
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
...
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "\$(dircolors -b ~/.dircolors)" || eval "\$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi
...
export PATH=/usr/local/openmpi-4.1.8/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/openmpi-4.1.8/lib:\$LD_LIBRARY_PATH

Ce fichier peut être modifié notamment le PATH qui est une variable d'environnement qui contient la liste des répertoires dans lesquels on doit chercher les programmes exécutables en plus du répertoire courant :

\$echo $PATH
/usr/local/openmpi-4.1.8/bin:/home/richer/.nix-profile/bin:
/nix/var/nix/profiles/default/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:
/snap/bin:/snap/bin

La variable PS1 définit le prompt de votre shell :

\$echo $PS1
\\[\\e]0;\\u@\\h: \\w\\a\]\${debian_chroot:+(\\$debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\033[00m\\]:
\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\\$

On peut la diviser en trois parties principales : le titre de la fenêtre, l'indicateur de chroot et l'invite visible.

Par exemple, concernant l'invité de commande (affiché avant de taper une commande) :

\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\\$

  • \\[\\033[01;32m\\...] indique gras (01), vert (32m), utilisateur (\\u), machine (\\h)
  • \\[\\033[00m\\] réinitialisation des caractéristiques du texte (couleur, gras, italique)
  • \\[\\033[01;34m\\...] indique gras (01), bleu (34m), répertoire de travail (\\w), fin de l'invité (\\\$)

1.4. HOME Directory (Home, Sweet Home)

UNIX/Linux étant un système multi-utilisateurs, chaque utilisateur dispose par convention de son espace personnel de fichiers dans le répertoire /home.

Par exemple, les utilisateurs jean et paul peuvent stocker leurs fichiers respectivement dans les répertoires /home/jean et /home/paul.

Comme nous le verrons plus tard, jean peut autoriser paul à avoir accès à ses fichiers ou lui interdire tout accès.

Le répertoire /home/jean de l'utilisteur jean s'appelle son HOME directory, soit en français son répertoire principal ou personnel.

Lorsque l'on ouvre un terminal, on se trouve dans ce répertoire. Pour retourner dans ce répertoire, il suffit de taper l'une des commandes suivantes :

richer@zentopia:~$cd
richer@zentopia:/$cd $HOME
richer@zentopia:/$cd ~

Notamment le symbole ~ représente le HOME directory.

L'expression \$HOME prend le contenu de la variable HOME. Vous pouvez voir sa valeur en tapant la commande suivante dans le terminal :

richer@zentopia:~$export | grep HOME
declare -x HOME="/home/richer"

1.4.1. Différence entre chemin relatif et absolu

Dans une arborescence, lorsque l'on fait référence à un fichier ou un répertoire, on distingue :

  • le chemin absolu qui représente les noms des répertoires depuis la racine pour atteindre un fichier ou un répertoire
  • le chemin relatif qui représente les noms des répertoires depuis le répertoire courant pour atteindre un fichier ou un répertoire

Considérons l'arborescence de répertoires suivante pour l'utilisateur jean :


/home/jean
├── tds
│   ├── td1
│   │   ├── file10.txt
│   │   ├── file11.txt
│   │   ├── file1.txt
│   │   ├── file20.txt
│   │   ├── file2.txt
│   │   ├── file3.txt
│   │   └── images
│   │       └── pyramide.jpg
│   └── td2
└── tps
    ├── tp1
    │   ├── script1.sh
    │   └── script2.sh
    └── tp2

Le fichier file1.txt peut être accédé :

  • depuis la racine (/) par : /home/jean/tds/td1/file1.txt (chemin absolu)
  • depuis le home directory (/home/jean) par : tds/td1/file1.txt (chemin relatif)
  • depuis le répertoire (/home/jean/tps/tp1) par : ../../tds/td1/file1.txt (chemin relatif)
  • le symbole . désigne le répertoire actuel
  • la suite de symboles .. le répertoire parent.

1.5. Commandes

1.5.1. Format des commandes

Les commandes ont toutes le même format, à savoir :

commande [-options] [arguments]

  • les options sont introduites par :
    • le symbole - suivi d'une lettre pour les options courtes
    • le symbole -- suivi d'une ou plusieurs lettres pour les options longues
    elles permettent de modifier le comportement de la commande
  • les arguments sont les données que traite la commande

Les crochets [] qui entourent "arguments" ou "-options" signifient que ceux-ci sont optionnels.

1.5.2. man pour l'accès au manuel

La commande man est l'abrégé de manual, c'est à dire le manuel d'utilisation (RTFM !)

  • man ls : donne des informations sur la commande ls
  • man -k time : indique dans quelles pages du manuel le mot clé "time" est mentionné
  • man 3 printf : donne des informations sur la fonction printf du langage C

Le manuel est composé de plusieurs niveaux (voir man man) :

  • 1 : Programmes exécutables ou commandes de l'interpréteur de commandes (shell)
  • 2 : Appels système (fonctions fournies par le noyau)
  • 3 : Appels de bibliothèque (fonctions fournies par les bibliothèques des programmes)
  • ...

1.5.3. pwd pour afficher le répertoire courant

pwd pour Print Working Directory affiche le répertoire dans lequel on se trouve.

# répertoire actuel
pwd
/home/jean/tds/td1

1.5.4. cd pour changer de répertoire

cd pour Change Directory permet de changer de répertoire.

# revenir au home directory
cd
# ou
cd ~

# aller dans le répertoire tds/td1
cd tds/td1

# aller dans le répertoire tp1/tp2
cd ../../tps/tp2
# ou
cd ~/tps/tp2

1.5.5. ls pour lister le contenu d'un répertoire

ls pour List Directory contents permet d'afficher les répertoires et les fichiers.

# lister les fichiers du répertoire courant
ls
# ou
ls *
file10.txt  file11.txt  file1.txt  file20.txt  file2.txt  file3.txt images

# lister tous les fichiers (dont les fichiers cachés, cf ci-après)
ls -a
.  ..  file10.txt  file11.txt  file1.txt  file20.txt  file2.txt  file3.txt

# lister les fichiers au format long
ls -l
total 28
-rw-rw-r-- 1 richer richer  370 nov.   1 23:39 file10.txt
-rw-rw-r-- 1 richer richer  982 nov.   1 23:39 file11.txt
-rw-rw-r-- 1 richer richer  142 nov.   1 23:38 file1.txt
-rw-rw-r-- 1 richer richer   27 nov.   1 23:39 file20.txt
-rw-rw-r-- 1 richer richer  273 nov.   1 23:39 file2.txt
-rw-rw-r-- 1 richer richer  529 nov.   1 23:39 file3.txt
drwxrwxr-x 2 richer richer 4096 nov.   1 23:44 images

# lister au format long avec tri sur taille du fichier
ls -l -S
ou
ls -lS
total 28
drwxrwxr-x 2 richer richer 4096 nov.   1 23:44 images
-rw-rw-r-- 1 richer richer  982 nov.   1 23:39 file11.txt
-rw-rw-r-- 1 richer richer  529 nov.   1 23:39 file3.txt
-rw-rw-r-- 1 richer richer  370 nov.   1 23:39 file10.txt
-rw-rw-r-- 1 richer richer  273 nov.   1 23:39 file2.txt
-rw-rw-r-- 1 richer richer  142 nov.   1 23:38 file1.txt
-rw-rw-r-- 1 richer richer   27 nov.   1 23:39 file20.txt

# lister les fichiers dans le répertoire /bin
ls /bin

Attention : sous Linux les fichiers cachés commencent par un point .

Au format long (-l), les champs affichés sont les suivants :

  • droits d'accès appelés également permissions (utilisateur, groupe, autres)
  • nombre de liens au fichier
  • propriétaire du fichier
  • groupe auquel appartient le fichier
  • taille en octets
  • date et heure de modification
  • nom du fichier

Concernant les permissions, elles sont listées pour le propriétaire (utilisateur), le groupe et les autres (user, group, others)  :

  • r = Readable, on peut lire le fichier
  • w = Writable, on peut écrire dans le fichier
  • x = eXecutable, exécutable pour les fichiers ou accès pour les répertoires

Voir la commande chmod pour modifier les permissions.

On peut utiliser des caractères spéciaux pour spécifier les fichiers à afficher.

? [ ] - ^ * \

  • le point d'interrogation ? désigne n'importe quel caractère
  • les crochets [abc] désignent un caractère quelconque parmi ceux listés
  • le tiret, utilisé avec les crochets, [a-zA-Z] désigne une classe de caractères
  • l'accent circonflexe ^ à l'intérieur des crochets permet d'exclure un caractère ou une classe de caractères
  • l'étoile * désigne n'importe quelle séquence de caractères ainsi que la chaine vide
  • l'anti-slash \ suivi d'un caractère spécial transforme ce caractère spécial en un caractère normal
# ? pour un caractère
ls file?.txt
file1.txt  file2.txt  file3.txt

# [] pour une liste de caractères
# tous les fichiers dont le 5ème caractère est 1 ou 2 et qui commence par 'file'
ls file[1-2].txt
file1.txt  file2.txt

# tous les fichiers qui commencent par une lettre minuscule, puis 0 à n caractères et qui se terminent par ".txt"
ls [a-z]*.txt
file10.txt  file11.txt  file1.txt  file20.txt  file2.txt  file3.txt

# tous les fichiers qui commencent par "f", puis 0 à n caractères et qui se terminent par ".txt"
ls f*.txt
file10.txt  file11.txt  file1.txt  file20.txt  file2.txt  file3.txt

# tous les fichiers qui ne commencent par par la lettre f
ls [^f]*

1.5.6. chmod pour modifier les droits d'un fichier

La commande chmod (CHange file MODe bits) permet de modifier les droits d'un fichier ou d'un répertoire.

On distingue :

  • l'utilisateur (user = u)
  • le groupe (group = g) auquel appartient l'utilisateur
  • les autres utilisateurs (others = o) qui ne font pas partie du groupe de l'utilisateur
  • tous (all = a) concerne u, g et o

Le fichier /etc/group contient les groupes existants :

# nom du groupe:mot de passe:identifiant numérique:liste utilisateurs
root:x:0:
daemon:x:1:
bin:x:2:
...

cdrom:x:24:richer      utilisation du cdrom
sudo:x:27:richer       devenir super utilisateur
lpadmin:x:120:richer   gérer les imprimantes
richer:x:1000:  

On peut modifier les droits de deux manières différentes :

  • soit en utilisant des lettres ugoa +/- rwx
  • soit en utilisant des chiffres en notation octale
# interdire l'écriture pour le groupe et les autres sur un fichier
chmod go-w file1.txt

# donner tous les droits à l'utilisateur et aucun au groupe ou aux autres
chmod 0700 file1.txt

# jean ne donne aucun droit au groupe ou aux autres sur son HOME directory :
chmod go-rwx /home/jean

1.5.7. echo pour afficher du texte

La commande echo permet d'afficher du texte :

echo "Bonjour !"
Bonjour
echo "Bonjour $USER"
Bonjour richer

On peut également rediriger la sortie de la commande pour l'envoyer vers un fichier :

echo "Bonjour !" > file.txt

1.5.8. mkdir pour créer un répertoire

Pour créer un répertoire on utilise la commande mkdir pour MaKe DIRectory.

Cette commande accepte une option -p qui permet de créer une arborescence de répertoires.

A partir d'un terminal :

# créer un répertoire cms et un sous répertoire cm1 dans cms
mkdir cms
cd cms
mkdir cm1

# ou alors
mkdir -p cms/cm1

1.5.9. rmdir pour supprimer un répertoire

La commande rmdir (RemoVe DIRectory) permet de supprimer un répertoire s'il ne contient aucun fichier.

# supprimer le répertoire cm1 de cms
rmdir cms/cm1

1.5.10. rm pour supprimer des fichiers et des répertoires

La commande rm (ReMove) permet de supprimer des fichiers ou des répertoires.

# supprimer tous les fichiers
!!! A ne pas utiliser en général ou faire très attention !!!
rm *

# supprimer tous les fichiers récursivement (dans les sous répertoires)
!!! A ne pas utiliser !!!
rm -r *

# supprimer tous les fichiers d'extension ".txt" en mode interactif
rm -i *.txt

1.5.11. Afficher le contenu d'un fichier texte

On dispose de plusieurs commandes pour afficher le contenu d'un fichier texte :

  • cat : affiche le contenu en totalité
  • more (filtre) : page par page
  • less (filtre) : page par page
  • head (filtre) : début du fichier
  • tail (filtre) : fin du fichier
# afficher le fichier file1.txt
cat file1.txt

# afficher le fichier file1.txt page par page
more file1.txt
ou
cat file1.txt | more

# afficher les 20 premières lignes
head -n 20 file1.txt
ou
cat file1.txt | head -n 20

# afficher les 15 dernières lignes
tail -n 15 file1.txt
ou
cat file1.txt | tail -n 15

Le symbole | (appelé pipe en anglais) fournit le résultat de la commande à sa gauche à la commande de droite.

1.5.12. tar ou zip pour archiver des fichiers

Il existe plusieurs utilitaires qui permettent de créer une archive et de la compresser, notamment l'utilitaire tar (Tape ARchiver) qu'il faut utiliser avec les options suivantes que l'on peut combiner :

  • -c : créer
  • -x : extraire tous les fichiers
  • -z : compresser avec gzip
  • -f : suivi d'un nom de fichier archive .tar ou .tar.gz ou .tgz
# créer une archive du répertoire tds
tar -cf tds.tar tds

# créer et compresser
tar -czf tds.tar.gz tds
ou
tar -czf tds.tgz tds

# décompresser une archive
tar -xf tds.tar
ou
tar -xzf tds.tgz

# décompresser une archive vers le répertoire ~/tmp
tar -xzf tds.tgz -C ~/tmp

On peut également utiliser l'utilitaire zip :

# créer une archive du répertoire tds
zip -r tds.zip tds
  adding: tds/ (stored 0%)
  adding: tds/td2/ (stored 0%)
  adding: tds/td1/ (stored 0%)
  adding: tds/td1/images/ (stored 0%)
  adding: tds/td1/images/pyramide.jpg (deflated 1%)
  adding: tds/td1/file3.txt (deflated 51%)
  adding: tds/td1/file20.txt (deflated 15%)
  adding: tds/td1/file11.txt (deflated 50%)
  adding: tds/td1/file10.txt (deflated 41%)
  adding: tds/td1/file2.txt (deflated 44%)
  adding: tds/td1/file1.txt (deflated 36%)

# décompresser avec zip
unzip tds.zip

# décompresser avec zip dans le répertoire ~/tmp
unzip tds.zip -d ~/tmp

1.5.13. ps et kill pour gérer les processus

Sous Linux un processus est un programme qui s'exécute. Il est identifié par un identifiant entier appelé pid pour Processus IDentifier.

Pour afficher tous les processus qui s'exécutent, on utilise la commande ps -ef ou ps -aux (format BSD):

richer@zentopia:/$ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 13:08 ?        00:00:01 /sbin/init splash
root           2       0  0 13:08 ?        00:00:00 [kthreadd]
root           3       2  0 13:08 ?        00:00:00 [rcu_gp]
root           4       2  0 13:08 ?        00:00:00 [rcu_par_gp]
root           5       2  0 13:08 ?        00:00:00 [netns]
...
richer      6937    3644  0 13:12 pts/1    00:00:00 bash
richer      6984    6937  1 13:12 pts/1    00:01:18 gedit autodescr_nasm.asm
richer      7379    2698  0 13:13 ?        00:00:00 /usr/libexec/gvfsd-network --spawner :1.3 /org/gtk/gvfs/e
richer      7398    2698  0 13:13 ?        00:00:00 /usr/libexec/gvfsd-dnssd --spawner :1.3 /org/gtk/gvfs/exe
...
www-data   12093    2013  0 14:14 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   12097    2013  0 14:14 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   12098    2013  0 14:14 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   12099    2013  0 14:14 ?        00:00:00 /usr/sbin/apache2 -k start
www-data   12100    2013  0 14:14 ?        00:00:00 /usr/sbin/apache2 -k start

Dans la liste précédente on distingue le PID et le PPID, le parent PID, c'est à dire le numéro de processus qui est reponsable de la création du processus.

Dans l'exemple précédent, il y a 394 processus.

Pour supprimer un processus il faut utiliser la commande kill qui envoie un signal (une sorte de message) à un processus. Par exemple la commande kill -l donne la liste des signaux que l'on peut envoyer :

richer@zentopia:/$kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

En l'occurrence, le signal de numéro 9 (SIGKILL) permet de tuer (demander la fin de l'exécution) d'un processus. Pour arrêter l'éditeur gedit, on saisira :

richer@zentopia:/$ps -ef | grep "gedit"
richer      6984    6937  1 13:12 pts/1    00:01:29 gedit autodescr_nasm.asm
richer     12495   12120  0 14:29 pts/2    00:00:00 grep --color=auto gedit
richer@zentopia:/$kill -9 6984

Note : il faut faire précéder la commande de sudo pour devenir super-utilisateur si on désire supprimer un processus qui ne nous appartient pas.