Introduction au système Unix

Compétences visées

  • commandes de base d’Unix
  • compréhension du système de fichiers, propriétaires, groupes, droits
  • maitrise de base de vim
  • compréhension des flux et des redirections
  • gestion des processus
  • utilisation du système de paquetages, installation de logiciels
  • sauvegardes
  • scripting en Python

UNIX timeline

L’interpréteur de commandes bash

  • sudo <commande> : exécute la commande en tant qu’utilisateur root
  • pour exécuter une séquence de commandes sans vérification, les séparer par ';'
  • pour exécuter une séquence de commandes avec vérification à chaque commande, les séparer par '&&'
  • flèche haut / bas : commande précédente / suivante
  • Ctrl-u : efface du début de la ligne jusqu’au curseur
  • Ctrl-a : amène le curseur en début de ligne
  • Ctrl-e : amène le curseur en fin de ligne
  • Ctrl-r : recherche d’une commande antérieure par son nom
  • Ctrl-c : tue un programme en cours d’exécution
  • Ctrl-d : asphyxie le flux d’entrée (ferme la plupart des interpréteurs)
  • Tab : propose des choix en fonction du contexte
  • caractères spéciaux : les précéder par \, ou les mettre dans une chaine. Exemple : $ mkdir c\'est\ l\'été ou $ mkdir "C'est l'été"

Le manuel

  • man <cmd> : affiche le manuel de la commande <cmd>
  • man -k <keyword> : affiche toutes les pages de manuel associées au mot-clé <keyword>
  • recherche d’un texte dans une page de man : /<text> puis entrée

Installation de packages et d’applications

Utilisation du package manager apt

  • installer un package et toutes ses dépendances : sudo apt install <package_name>
  • supprimer un package : sudo apt remove <package>
  • mettre à jour les packages disponibles dans les dépots : sudo apt update
  • liste des dépots : /etc/apt/sources.list

Installation des fichiers Debian .deb

  • installer un fichier Debian : sudo apt install ./<file>.deb
  • installer les dépendance : sudo apt-get install -f

Arborescence des fichiers Linux

  • une seule racine / (contrairement à Windows)
  • les noms de fichiers et de répertoires peuvent contenir n’importe quels caractères
/ ------| /etc -------------| /etc/passwd
        | root drwxr-xr-x   | root -rw-r--r--
        |                   | 
        |                   | /etc/apt
        |                   | ...
        |
        | /home ------------| /home/chris -------| /home/chris/.bashrc
        | root drwxr-xr-x   | chris drwxr-xr-x   | /home/chris/.nvm
        |                                        | /home/chris/work -----| /home/chris/work/file1
        |                                        | /home/chris/save      | /home/chris/work/file2
        |
        | /usr -------------| /usr/local --------| /usr/local/bin -------| /usr/local/bin/node
        | root drwxr-xr-x                                                | /usr/local/bin/pm2 --> ../lib/node_modules/pm2/bin/pm2
        |                                                                | ...
        |
        | /var -------------| /var/log ----------| /var/log/dmesg
        | root drwxr-xr-x                        | /var/log/messages ----| /var/log/messages/nginx
        |                                                                | /var/log/messages/gunicorn
        |                                                                | /var/log/messages/gunicorn
        | /var/www
        | root drwxr-xr-x
        |
        | /tmp
        | root drwxrwxrwt

Répertoire courant

Chemin d’accès relatifs et absolus aux fichiers et répertoires

Un chemin absolu commence par /, un chemin relatif au répertoire courant commence par . ou ..

Copie, déplacement et suppression de fichiers et répertoires

Attention

  • cp -r ../d1/d2/ . copie tout le contenu de d2 dans le répertoire courant (sans créer de répertoire d2)
  • cp -r ../d1/d2 . créé dans le répertoire courant un répertoire d2, copie du répertoire ../d1/d2

bash globbing characters

  • * remplace 0 ou n caractères quelconques
  • ? remplace un caractère quelconque
  • [abc] remplace un caractère parmi “abc”
  • [a-p] remplace n’importe quel caractère de la suite ‘a’,…,‘p’, [!a-p] remplace n’importe quel caractère qui n’est pas de la suite ‘a’,…‘p’
  • \ demande au shell de ne pas interpréter le caractère spécial qui le suit

Guillements simple et double

Guillemets simples (‘…’)

À utiliser lorsque vous souhaitez préserver la valeur littérale de chaque caractère. Tout ce qui se trouve entre des guillemets simples est traité comme une chaîne littérale, et les caractères spéciaux comme $, \, et ! ne sont pas interprétés.

Guillemets doubles (“…”)

À utiliser lorsque vous souhaitez autoriser l’expansion des variables et la substitution de commandes, mais tout en échappant certains caractères spéciaux. À l’intérieur des guillemets doubles, le shell interprétera $ (pour les variables),  (pour les séquences d’échappement) et ` (pour la substitution de commandes), mais traitera la plupart des autres caractères spéciaux littéralement.

Droits d’accès aux fichiers et répertoires

  • file1 appartient à l’utilisateur chris et au groupe chris
  • le premier - indique qu’il s’agit d’un fichier
  • le premier bloc de trois lettres rw- décrit les droits du user (chris) : read: oui, write: oui, execute: non
  • le deuxième bloc r-- décrit les droits du group (staff) : read: oui, write: non, execute: non
  • le troisième bloc r-- décrit les droits des others (tous les autres) : read: oui, write: non, execute: non
  • pour un répertoire, le droit 'x' est un droit de traversée

L’éditeur de texte vim

  • Ouverture: vim nom_fichier. Si le fichier n’existe pas, le texte édité sera sauvegardé dans ce fichier lors de l’enregistrement
  • Il y a 3 modes différents : ‘normal’, ‘insertion’, ‘commande’
  • Au lancement on est en mode ‘normal’. On ne peut pas taper directement du texte, mais seulement des commandes mono ou bi- caractère, telles que ‘x’, ‘GG’, etc.
  • On passe au mode insertion en tapant :
    • i : insertion à la position du curseur
    • a : à droite du curseur
    • o : sur une nouvelle ligne en dessous
    • O : sur une nouvelle ligne au dessus
  • On revient en mode ‘normal’ avec la touche Escape
  • En mode ‘normal’, commandes de déplacement :
    • le curseur se déplace avec les touches fléchées
    • gg pour se placer sur la première ligne
    • G pour se placer sur la dernière ligne
    • :n pour aller à la ligne n
    • Ctrl-f descend d’une page
    • Ctrl-b remonte d’une page
    • w pour se déplacer d’un mot vers l’avant ; 10w pour se déplacer de 10 mots
    • b pour se déplacer de mot en mot vers l’arrière
  • En mode ‘normal’, commandes de modification :
    • x pour supprimer le caractère qui est sous le curseur
    • 10x pour supprimer 10 caractères
    • dd pour supprimer la ligne courante, 10dd pour supprimer 10 lignes à partir de la courante.
    • yy pour copier la ligne courante, 10yy pour copier 10 lignes à partir de la courante.
    • p pour coller les dernières lignes supprimées ou copiées en dessous de la ligne courante (P au dessus de la ligne courante).
    • dw pour supprimer un mot ; 10w pour supprimer 10 mots
    • J met bout à bout la ligne courant et la ligne suivante
  • On passe en mode ‘commande’ en tapant ‘:’ suivi du texte de la commande

  • Recherche et substitution
    • /mot pour chercher un mot, n pour passer à l’occurrence suivante, N à l’occurence précédente.
    • :s/mot1/mot2/ pour remplacer mot1 par mot2 sur la ligne courante.
    • :n1,n2s/mot1/mot2/ pour remplacer mot1 par mot2 sur les lignes numérotées de n1 à n2
    • . désigne la ligne courante, $ désigne la dernière ligne du fichier, % désigne la totalité du fichier et peut remplacer 1,$
    • la substitution n’est réalisée que sur la première occurrence trouvée sur une ligne. Pour qu’elle se fasse sur toutes les occurrences de la même ligne, il faut ajouter g à la fin de la commande
    • si on souhaite qu’une confirmation soit demandée pour chaque substitution, il faut ajouter c à la fin de la commande.
    • :%s/\(.*\);\(.*\);\(.*\)/\1;\2;\1;\3/
  • Enregistrement, sortie
    • Enregistrement en tapant :w
    • Enregistrer et sortir en tapant :wq
    • Sortir sans enregistrer en tapant :q!
  • Configuration
    • :set number pour numéroter les lignes.
  • Configuration des tabulations
    • :set expandtab pour remplacer le caractère de tabulation par des espaces
    • :set tabstop=4 pour fixer à 4 le nombre d’espaces qui remplacent une tabulation

sed, sed -E (Streamlined Editor)

sed permet d’exécuter des commandes de type vim sur les lignes d’un fichier.

sed -E utilise des expressions régulières standard.

Pour enregistrer directement les changements dans les fichiers :

Remplacement :

Supprimer les lignes qui contiennent un mot :

Supprimer les lignes vides d’un fichier :

Éditeur de texte par défaut

Flux d’une commande et redirections

     entrée standard ------> commande  --------> sortie standard
                                       |
                                       |-------> sortie d'erreur
  • '>' redirige la sortie standard dans un fichier
  • '>>' ajoute le flux à la fin du fichier (sans l’effacer)

  • '<' redirige l’entrée standard d’un commande ; '2>' et '2>>' redirigent la sortie d’erreur

  • '|' connecte la sortie standard d’une commande à l’entrée standard d’une autre.

Encodage des fichiers texte

Unicode

Chaque caractère ou idéogramme possède un codepoint unique. Par exemple la lettre cyrilique Я a le codepoint U+042F.

Les codepoints sont organisés en blocs qui reprennent, translatés, les anciens codages de caractères tels que l’ASCII, ISO-8859, EBCDIC, etc. Les caractères ASCII (lettres majuscules non accentuées, chiffres, symboles courants) occupent le premier bloc.

Un texte, c’est à dire une suite de codepoints, est encodé en une suite d’octets en utilisant une méthode d’encodage telle qu’UTF8. UTF8 conserve l’encodage des codes ASCII du premier bloc sous forme d’un octet. Les autres caractères peuvent donner lieu à 2, 3 voire 4 octets.

Les fichiers sont des suites d’octets

La commande file permet de deviner le type et l’encodage d’un fichier.

La commande iconv permet de convertir un fichier texte d’un encodage vers un autre. VSCode permet également facilement de changer l’encodage d’un fichier.

Les liens

  • ln dir1/file1 dir2/file2 : lien ‘dur’. dir1/file1 doit exister, mais pas dir2/file2. Après le lien, les noms dir1/file1 et dir2/file2 renvoient au même fichier sur le disque dur. Ils deviennent totalement équivalents. La modification des droits, propriétaire, groupe etc. de l’un est visible sur l’autre. Un lien ‘dur’ ne peut pas pointer vers un répertoire. Un lien ‘dur’ ne peut pas traverser les systèmes de fichiers (ne peut pas être sur des ‘volumes’ différents)

  • ln -s dir1/file1 dir2/file2 : lien ‘symbolique’. Les contenus de dir1/file1 et dir2/file2 semblent être également identiques. En fait, l’information stockée avec dir2/file2 contient le nom du fichier vers lequel le lien pointe (dir1/file1). Un lien symbolique est plus lent qu’un lien dur. Un lien symbolique est orienté, dans l’exemple de dir2/file2 vers dir1/file1. Un lien symbolique peut être fait entre répertoires, et au travers des systèmes de fichiers. Un lien symbolique peut être corrompu. Les deux extrémités d’un lien symbolique peuvent avoir des droits, proriétaires, groupes différents.

head, tail

  • head [-n <count>] <file> : affiche les 10 (ou <count>) premières lignes d’un fichier
  • tail [-n <count>] <file> : affiche les 10 (ou <count>) dernières lignes d’un fichier
  • tail -f <file> : cette commande ne termine pas, et affiche en continu les 10 dernières lignes d’un fichier. Très utile pour des fichiers de log qui grossissent en continu (ex: tail -f /var/log/nginx/error.log)

Gestion de comptes utilisateurs

  • sudo adduser <username> : créé un nouvel utilisateur <username>, qui appartient à un nouveau groupe de nom <username>. Un répertoire /home/<username> est créé qui devient le ‘repertoire home’ de cet utilisateur.
  • sudo deluser <username> : supprime l’utilisateur, sans supprimer son répertoire home ni aucun de ses fichiers. L’option --remove-all-files supprime tous les fichiers possédés par l’utilisateur. L’option --remove-home supprime tous les fichiers du répertoire ‘home’
  • passwd : change le mot de passe
  • sudo passwd <username> : change le mot de passe de <username>
  • sudo su - <username> : prend l’identité du user de nom <username>

Gestion des groupes

  • sudo addgroup <groupname> : créé un nouveau groupe
  • sudo adduser <username> <groupname> : ajoute un utilisateur existant <username> à un groupe existant <groupname>. Par exemple, sudo adduser chris sudo ajoute chris au groupe sudo.
  • sudo groups <username> : affiche la liste des groupes auquels appartient

Clés SSH

Création de clés SSH

Créé une paire de clés publique/privée de 2048 bits. Les clés sont accessibles dans ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub

Copie de la clé publique vers une autre machine

La clé publique est copiée dans le fichier .ssh/authorized_keys de la machine cible

Permettre l’utilisation de git clone

Résoud le problème GitHub/Gitlab “Fix Permission denied (publickey)” : copier les fichiers ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub avec les même propriétaires et permissions : 600 (id_rsa) et 664 (id_rsa.pub)

sudo sans mot de passe

ssh, scp

rsync

Forme générale:

Synchronise, copie ou actualise les données d’une source (locale ou distante) vers une destination (locale ou distante) en ne transférant que les fichiers qui ont été modifiés.

[options]:

  • r : copie récursivement
  • v : verbose
  • a : archive (analogue à r avec conservation des droits et propriétaires)
  • --exclude-from <file> : exclut de la synchronisation les fichiers et répertoires mentionnés dans <file> (un motif par ligne, jokers possibles)

Attention au / à la fin de source : s’il n’est pas présent, un répertoire source est créé dans le répertoire destination.

Variables shell

Variables d’environnement

Comme des variables shell, mais leur valeur est passée à tous les sous-processus

Exécuter une commande avec des variables d’environnement temporaires

wget

Wget est une commande non interactive de téléchargement de fichiers depuis le Web.

  • --recursive: download the entire Web site

  • --domains: don’t follow links outside listed domains

  • --no-parent: don’t follow links outside the specified directory

  • --page-requisites: get all the elements that compose the page (images, CSS and so on)

  • --convert-links: convert links so that they work locally, off-line

aliases

  • alias : affiche la liste des alias
  • alias rm='rm -i : définit un alias pour rm
  • alias ls='ls --color=auto : définit un alias pour ls

~/.bashrc, ~/.zshrc etc.

~/.bashrc contient des commandes exécutées à chaque démarrage de shell On y définit typiquement des alias, ou son invite de commande.

  • export PATH="<dir>:$PATH" : ajoute le répertoire <dir> à la variable d’environnement $PATH
  • export PS1="\u@\h \w> " : modifie le prompt bash
    • \u : username
    • \h : hostname
    • \w : working directory

Pour zsh, c’est la variable PROMPT qui est utilisée

rc files (“run command”)

Exemples de dot files

grep / grep -E

grep explore les fichiers désignés ligne par ligne, à la recherche d’un motif (pattern).

grep -E est une extension de la commande grep avec des expressions régulières étendues ; elle est à préférer à grep

Syntaxe :

egrep [options] <pattern> <path>

Options :

  • -n : affiche le nom du fichier et le numéro de la ligne
  • -c : affiche le nombre d’occurences
  • -i : case-insensitive
  • -w : recherche le mot complet, pas ses variantes
  • -v : inverse l’effet du pattern
  • -f file : recherche les mots mentionnés dans file (un mot par ligne)
  • -r : récursif
  • ‘-o’ : n’affiche que la partie de la ligne reconnue, au lieu de la ligne entière

Pattern :

  • . : un caractère quelconque
  • ?: l’item précédent est optionnel et match au plus une fois
  • *: l’item précédent match zéro ou plusieurs fois
  • +: l’item précédent match une ou plusieurs fois
  • [<liste>] : un choix parmi les éléments de <liste> (ex: [aA], [0-9], [a-z], [A-Z])
  • [^<caractère>] : tout sauf <caractère>
  • (<item1>|<item2>) : match <item1> ou <item2>
  • {n}: l’item précédent match exactement n fois consécutivement
  • {n,}: l’item précédent match exactement n ou plusieurs fois consécutivement
  • {,m}: l’item précédent match au plus m fois consécutivement
  • {n,m} : l’item précédent match entre n et m fois (inclus) consécutivement
  • ^ : début de ligne
  • $ : fin de ligne (attention : lines se terminant par LF (Unix), pas CRLF (Windows))

find

La commande find permet de traverser récursivement toute une hiérarchie de fichiers et de répertoires. Les options précisent les filtres pour limiter le parcours, et les actions à effectuer sur chaque fichier ou répertoire parcouru.

Options de filtrage :

  • -type <type> : spécifie le type (f = file, d = répertoire)
  • -name <pattern> : le nom du fichier ou répertoire match <pattern>
  • -user <user> : le propriétaire du fichier ou répertoire est <user>
  • -group <group> : le groupe du fichier ou répertoire est <group>
  • -perm <xyz> : les permissions du fichier ou répertoire sont <xyz> en octal
  • -atime +/-<n> : fichier accédé il y a plus/moins de <n> jours
  • -mtime +/-<n> : fichier modifié il y a plus/moins de <n> jours
  • -size +/-<n><U> : le fichier a une taille supérieure/inférieure à <n><U> (U: K=kilo, M=méga, G=giga, T=téra)

Plusieurs options de filtre réalisent implicitement un et. Si on souhaite un ou, il faut utiliser la forme : <filtre> -o <filtre>

Par exemple, tous les fichiers modifiés il y a plus de 7 jours ou accédés il y a plus de 30 jours : -mtime +7 -o -atime +30

Options d’actions à effectuer :

  • -exec <command> : exécute <command> sur le fichier ou le répertoire
  • -ok <command> : comme -exec mais demande confirmation au terminal

<command> doit se terminer par \; et peut contenir des termes {} qui seront remplacés par le fichier ou répertoire courant.

Par exemple, pour faire un listing détaillé de tous les fichiers filtrés : -exec ls -l {} \;

Gestion de processus

Un processus est une instance de programme en cours d’exécution. Un processus est interactif s’il est lancé depuis le terminal et il accepte des entrées depuis le clavier. Les autres processus, non-interactifs, s’exécutent en arrière-plan et n’attendent pas d’entrées du clavier.

Chaque processus est associé à un utilisateur (l’utilisateur du shell qui a lancé son exécution s’il s’agit d’un processus interactif). Chaque processus possède un numéro PID unique qui l’identifie.

Liste des processus

La commande ps aux permet d’obtenir la liste et des informations détaillées sur tous les processus en cours :

La commande pidof <command> permet d’obtenir la liste des PID des processus associés à une commande :

Lister tous les processes qui écoutent sur un port :

Tuer un processus

La commande kill -9 <pid> permet d’envoyer le signal 9 (kill) au processus <pid>.

Lancer un programme en arrière-plan

<commande> &          # le processus continue en arrière-plan, mais il est tué à la déconnexion
nohup <commande> &    # le processus continue même après déconnexion

Shebang

Ligne à mettre au début d’un fichier texte contenant un programme écrit dans un langage de script (bash, python, node) et qui précise quel interpréteur utiliser

On peut préciser le chemin absolu vers l’interpréteur, par exemple pour bash sous Linux :

En général il est préférable de chercher l’exécutable dans le PATH du user avec l’écriture /usr/bin/env. Par exemple :

Pour installer un script exécutable en tant que commande ‘system-wide’, on peut créer un lien symbolique du type :

Tar

La commande tar (goudron) permet d’agglomérer une ou plusieurs hiérarchies de fichiers en une seule archive, sans compression.

  • création d’une archive : tar cvf <archive> <file/dir> <file/dir> ...
  • extraction d’une archive : tar xvf <archive>
  • liste des fichiers d’une archive : tar tvf <archive>
  • l’option z en création ou en extraction ajoute une compression/décompression des données
  • -T - : permet de prendre la liste des fichiers et répertoires sur l’entrée standard

Scripts shell

https://devhints.io/bash

Services système

Un service est une tache de longue durée, souvent infinie, qui s’exécute en arrière-plan (démon). En cas de crash elle est relancée automatiquement. La commande systemd permet de lister, inspecter, démarrer, arrêter, redémarrer les services existants.

Les services sont définis dans le réperetoire /etc/systemd/system.

Exemple de définition de service :

Cron

Cron est un service système :

Cron exécute périodement les tâches listées dans le fichier /etc/crontab. Sur Ubuntu 20, son contenu par défaut est :

Il exécute donc, en tant qu’utilisateur root, à partir du répertoire / :

  • les scripts situés dans le répertoire /etc/cron.hourly, à chaque heure (minutes: 17)
  • les scripts situés dans le répertoire /etc/cron.daily, chaque jour à 06:25
  • les scripts situés dans le répertoire /etc/cron.weekly, chaque semaine, le dimanche à 06:47
  • les scripts situés dans le répertoire /etc/cron.monthly, chaque mois, le premier du mois à 06:52

Les premiers champs de chaque ligne sont m h dom mon dow :

  • m : minute, 0-59
  • h : hour, 0-23
  • dom : day of month, 1-31
  • mon : month, 1-12
  • dow : day of week), 0/7=dimanche, 1=lundi, 2=mardi, 3=mercredi, 4=jeudi, 5=vendredi, 6=samedi

Exemple : Le fichier /tmp/crontest sera créé et sa date de dernière modification mise à jour à chaque minute.

Status

Une erreur de syntaxe peut mettre le service cron en erreur :

Oct 23 04:43:01 ubuntu cron[605]: Error: bad username; while reading /etc/crontab
Oct 23 04:43:01 ubuntu cron[605]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

Restart

Mémo

  • ls : liste les fichiers et les répertoires, sauf ceux qui commencent par .
  • ls -a : liste tous les fichiers et les répertoires
  • ls -l : liste les fichiers et les répertoires avec des détails
  • mkdir : créé un répertoire
  • cd directory : déplace le répertoire courant vers directory
  • cd : déplace le répertoire courant vers le ‘home’ de l’utilisateur
  • cd .. : déplace le répertoire courant vers le répertoire père
  • pwd : affiche le chemin d’accès absolu du répertoire courant
  • cp file1 file2 : copie file1 et nomme la copie file2
  • cp file1 file2 dir1 : copie file1 et file2 dans le répertoire dir1
  • mv file1 file2 : déplace ou renomme file1 en file2. Si file2 existe, il est écrasé
  • mv file1 file2 dir1 : déplace file1 et file2 dans le répertoire dir1
  • rm file1 file2... : supprime les fichiers file1, file2,…
  • rm -r file_or_dir1 file_or_dir2 ... : supprime récursivement les fichiers et les répertoires file_or_dir1, file_or_dir2
  • rmdir directory : supprime un répertoire vide
  • chmod [options] file : change les droits d’accès de file
  • chown newowner file : change le propriétaire de file
  • chgrp newgrp file : change le groupe de file
  • chown newowner:newgrp file : change le propriétaire et le groupe de file
  • which : localise une commande dans le PATH de l’utilisateur
  • cat file1 file2... : affiche à la console le contenu de file1, puis de file2 etc.
  • more file : affiche le contenu d’un fichier une page à la fois
  • head file : affiche les premières lignes d’un fichier
  • tail file : affiche les dernières lignes d’un fichier
  • tail -f file : affiche les dernières lignes d’un fichier en continu
  • file file : devine le type d’un fichier
  • grep 'keyword' file : cherche des mots dans un fichier
  • wc file : compte le nombre de lignes/mots/caractères dans un fichier
  • hexdump file : affiche le contenu de file octet par octet en hexadécimal
  • cut -d delim -f n,m,p file : découpe les lignes de file en champs séparés par delim et garde seulement les champs de numéros n, m et p
  • tr -s ' ' file : remplace dans les fichiers toutes les occurences multiples d’espaces par un seul espace
  • command > file : redirige la sortie standard de command vers le fichier file
  • command >> file : redirige la sorte standard de command à la fin du fichier file
  • command < file : redirige le contenu de filevers l’entrée standard de command
  • command1 | command2 : redirige la sortie de command1 vers l’entrée de command2
  • cat file1 file2 > file3 : cancatène file1 et file2 vers file3
  • sort file : trie les lignes de file
  • sudo <command> : exécute <command> en tant qu’utilisateur root
  • sudo -u <username> <command> : exécute <command> en tant qu’utilisateur
  • sudo -i : ouvre un nouveau shell avec l’utilisateur root
  • su - <username> : ouvre un nouveau shell en tant que <username>
  • command & : exécute une commande en arrière plan
  • ^C : tue la commande qui s’exécute en avant-plan
  • ^Z : suspend la commande qui s’exécute au premier plan
  • bg : exécute en arrière plan le job suspendu
  • jobs : affiche la liste des jobs
  • fg %1 : met au premier plan le job numéro 1
  • kill %1 : tue le job numéro 1
  • ps : liste mes processes
  • ps aux : liste tous les processes
  • ps -u fred : liste tous les processes de fred
  • kill -9 26152: tue le process de pid 26152