M1101a - Cours 3 Processus, droits, fichiers spéciaux, archivage, scripts Département Informatique 2018/2019 - IUT2 Informatique
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
M1101a – Cours 3
Processus, droits, fichiers spéciaux, archivage, scripts
Département Informatique
IUT2, UGA
2018/2019
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 1 / 56Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 2 / 56
Processus Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 3 / 56
Processus
Multi-tâches, Multi-utilisateurs
Plusieurs utilisateurs peuvent utiliser le système simultanément
L’exécution d’un logiciel donne naissance à une tâche ou
processus
Un processus est donc un programme en train de s’exécuter
C’est une entité dont le noyau contrôle l’état, de la vie à la mort
Système à temps partagé : le processeur est partagé entre
plusieurs processus concurrents (simultanés)
Système multi-tâches préemptif : l’ordonnanceur (scheduler)
peut interrompre de force un processus pour donner le
processeur à un autre
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 4 / 56Processus
Gestion des processus
Les processus sont créés par duplication (clonage) d’un
processus existant
Les processus sont donc organisés en arbre : chaque processus
a un et un seul processus père (celui à partir duquel il a été clôné)
On peut visualiser la liste des processus avec les commandes :
ps
pstree
top
ksysguard, gnome-system-monitor
On peut mettre fin à un processus avec les commandes :
kill (par numéro de processus)
killall (par nom de processus)
ksysguard, gnome-system-monitor
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 5 / 56Processus
Arborescence de processus
systemd-+-agetty
|-apache2---11*[apache2]
|-atd
|-cron
|-cupsd
|-dhclient
|-fail2ban-server---2*[{fail2ban-server}]
|-inetd
|-lightdm-+-Xorg---{Xorg}
| |-lightdm-+-lightdm-gtk-gre---{gmain}
|-ntpd
|-rpc.gssd
|-rpc.idmapd
|-rpc.statd
|-rpcbind
|-rsyslogd
|-rwhod---rwhod
|-sshd-+-sshd---sshd
| |-sshd---bash---pstree
| ‘-sshd---sshd---sftp-server
|-x2goagent
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 6 / 56Processus
Attributs d’un processus (extrait)
PID : identifiant unique numérique
PPID : numéro de son père
UID : utilisateur au nom duquel le processus s’exécute
GID : groupe auquel le processus est rattaché
Priorité
influe sur la fréquence à laquelle l’ordonnanceur donnera le
processeur au processus
varie de -20 (le plus prioritaire) à 19 (le moins prioritaire)
modifiable par les commandes nice et renice
0 par défaut
un utilisateur de base ne peut que diminuer la priorité de ses
processus
...
toto@pc-dg-xxx-xx:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 1226 25260 25259 0 75 0 - 993 - pts/1 00:00:00 bash
0 R 1226 25380 25260 0 75 0 - 582 - pts/1 00:00:00 ps
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 7 / 56Processus
Ressources d’un processus
Environnement hérité du processus père
(un shell par exemple)
répertoire courant
ligne de commande qui a lancé le processus
variables d’environnement
Zone mémoire séparée de celle des autres processus
(mémoire virtuelle)
Liste des fichiers ouverts, dont au moins 3 par défaut
entrée standard
sortie standard
erreur standard
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 8 / 56Redirection d’entrées/sorties, filtres Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 9 / 56
Redirection d’entrées/sorties, filtres
Entrée et sorties standard d’un processus
Pourquoi « standard » ?
Entrée standard
exemple : programme Ada qui utilise lire()
Sortie standard
exemple : programme Ada qui utilise ecrire()
exemple : programme ls qui liste des fichiers
Sortie d’erreur standard
exemple : commande ls -z qui affiche une erreur
ls: invalid option -- ’z’
Try ’ls --help’ for more information.
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 10 / 56Redirection d’entrées/sorties, filtres
Redirections vers un fichier
Exemple d’utilisation :
commande ls -l trop longue
pour faire un copier/coller dans un mail
Redirection de la sortie standard
exemple : ls -l > ma-liste-de-films
COMMANDE > FICHIER
Redirection de l’erreur standard
COMMANDE 2> FICHIER
Redirection de la sortie et de l’erreur standard
COMMANDE &> FICHIER
Redirection de l’entrée standard
COMMANDE < FICHIER
exemple : tests répétitifs d’un programme Ada
qui demande des entrées
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 11 / 56Redirection d’entrées/sorties, filtres
Redirection avec ajout à la fin
Si le fichier existe déjà (ou pas)
COMMANDE >> FICHIER
Exemple d’utilisation :
depuis un autre répertoire : ls -l >> ~/ma-liste-de-films
Autre exemple :
cat fichier1.adb > gros-package.adb
(équivalent à une commande cp !)
cat fichier2.adb >> gros-package.adb
Autre façon de procéder :
cat *.adb > gros-package.adb
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 12 / 56Redirection d’entrées/sorties, filtres
Redirection vers un autre processus : tubes
Forme générale :
COMMANDE1 | COMMANDE2
Exemple :
cat ma-liste-de-films | sort
Forme plus courte :
sort ma-liste-de-films
Combinaison avec redirection :
cat ma-liste-de-films | sort > ma-liste-de-films-triée
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 13 / 56Redirection d’entrées/sorties, filtres
Filtres
Les filtres sont des commandes utiles en sortie d’un tube
Il existe des filtres pour
trier (sort)
extraire des lignes (grep, head, tail)
extraire des colonnes (cut)
compter (wc)
...
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 14 / 56Redirection d’entrées/sorties, filtres
Exemples
Rechercher avec grep
exemple : ps aux | grep mon-programme
Compter avec wc
exemple 1 : wc Avare.txt
−→ nombre de lignes, mots, caractères
exemple 2 : ps aux | wc -l
−→ compte le nombre de processus
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 15 / 56Redirection d’entrées/sorties, filtres
Tubes et filtres multiples
On peut enchaîner plusieurs filtres
Exemple 1 : compter mes processus
ps aux | grep NOM_DE_LOGIN | wc -l
Exemple 2 : combien ai-je de fichiers dont le nom contient « toto »
ls -l | grep toto | wc -l
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 16 / 56Droits d’accès aux fichiers Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 17 / 56
Droits d’accès aux fichiers
Attributs d’un fichier (métadonnées)
Nom
Type
Taille
Propriétaire (UID)
Groupe (GID)
Date de dernière modification
2 systèmes de droits d’accès qui se superposent
permissions Unix
ACL (Access Control List)
ACL POSIX
ACL NFSv4
...
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 18 / 56Droits d’accès aux fichiers
Permissions Unix
On distingue 3 catégories d’utilisateurs
u (user)
désigne la personne qui a créé le fichier ou le répertoire
(son propriétaire)
g (group)
désigne les membres du groupe d’utilisateurs auquel le fichier
appartient (info-s1, info-s2, profs, ...)
o (others)
désigne tous les autres.
Il existe 3 sortes de permissions
r (read) : permission de lecture
w (write) : permission d’écriture
x (execute) : permission d’exécution
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 19 / 56Droits d’accès aux fichiers Visualiser les permissions Commande : ls -l toto@transit:~$ ls -l /users/info/pub/s1/M1101a/tp01/ total 68 -rw-r--r-- 1 bonnaudl info 14859 2003-09-22 11:35 Avare.txt drwxr-xr-x 2 bonnaudl info 4096 2008-02-25 07:33 dossier -rwxr-xr-x 1 bonnaudl info 33666 2006-09-18 05:13 prg -rw-r--r-- 1 bonnaudl info 139 2003-09-24 10:39 prg.adb -rw-r--r-- 1 bonnaudl info 644 2006-09-18 05:16 proverbes.txt -rw-r----- 1 bonnaudl info 61 2008-02-25 07:30 réponses.txt Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 20 / 56
Droits d’accès aux fichiers
Sémantique des permissions
Permission Lecture (r) Écriture (w) Exécution (x)
exécuter (le fichier
consulter le
doit être un
Fichier contenu (afficher, modifier le contenu
programme ou un
copier, ...)
script)
modifier la liste des traverser le
consulter la liste entrées qu’il répertoire
Répertoire des entrées qu’il contient (créer une (utilisation dans un
contient (ls, ...) entrée, renommer, chemin d’accès à
supprimer) une entrée)
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 21 / 56Droits d’accès aux fichiers
Changer les permissions (1/2)
chmod [-R] [QUI]+|-PERM ENTREE...
QUI
à qui s’applique le changement de permissions
chaîne fabriquée avec les caractères u g o (ou chaîne vide)
PERM
quelles permissions on veut ajouter ou enlever
chaîne fabriquée avec les caractères r w x X
Exemples pour un fichier
chmod g+r f1
autorise les membres du groupe de f1 à lire f1
chmod o-w f1
interdit aux autres d’écrire dans f1
chmod go-rwx f1
interdit aux non propriétaires tous les accès à f1
chmod +x f1
rend f1 exécutable
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 22 / 56Droits d’accès aux fichiers
Changer les permissions (2/2)
Exemples pour un répertoire
chmod g+rx rep1
autorise les membres du groupe de rep1 à lister le contenu de
rep1 et à traverser rep1, mais pas sa descendance.
chmod -R g+rx rep1
idem, mais y compris la descendance.
Attention : tous les fichiers deviennent exécutables !
chmod -R g+rX rep1
idem, mais seuls les fichiers déjà exécutables par le propriétaire
sont rendus exécutables pour le groupe.
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 23 / 56Droits d’accès aux fichiers
ACL
Permissions avec granularité plus fine
Autorisations supplémentaires données à
un ou plusieurs utilisateur(s)
un ou plusieurs groupes
ACL : Access Control List, composée de
ACE : Access Control Entry
La présence d’ACL change l’affichage des permissions Unix
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 24 / 56Droits d’accès aux fichiers
Types d’ACL
ACL POSIX
Utilisables sur fichiers locaux à la machine
Mêmes types de permissions que droits Unix (r w x X)
ACL NFSv4 (Network File System version 4)
Utilisables sur fichiers du serveur de fichiers
Permissions plus complexes que droits Unix
(mais des simplifications existent)
Identiques aux ACL de Windows (NTFS et CIFS)
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 25 / 56Droits d’accès aux fichiers
Visualiser les ACL POSIX
Visualisation simple
$ ls -l toto
-rwxr-x---+ 27 toto etu-s1 4096 2006-09-24 19:45 toto
le + indique la présence d’une ACL
Visualisation détaillée
$ getfacl toto
# file: toto
# owner: toto
# group: etu-s1
user::rwx
group::---Droits d’accès aux fichiers
Changer les ACL POSIX
Ajouter une ACE pour un utilisateur
setfacl [-R] -m u:USER:PERMISSIONS ENTREE...
Ajouter une ACE pour un utilisateur : exemple
$ setfacl -m u:bonnaud:rx toto
$ getfacl toto
# file: toto
# owner: toto
# group: etu-s1
user::rwx
user:bonnaud:r-x
group::---
group:info:r-x
mask::r-x
other::---
Supprimer toutes les ACE
$ setfacl -R -b .
$ ls -l toto
-rwx------ 27 toto etu-s1 4096 2006-09-24 19:45 toto
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 27 / 56Droits d’accès aux fichiers
Visualiser les ACL NFSv4
Pas de visualisation simple
Visualisation détaillée
$ nfs4_getfacl essai-ACL
D::OWNER@:x
A::OWNER@:rwatTcCy
A::iuttestt@NTIUT2GRE.IUT2.UPMF-GRENOBLE.FR:rtcy
A::GROUP@:tcy
A::EVERYONE@:tcy
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 28 / 56Droits d’accès aux fichiers
Changer les ACL NFSv4
Ajouter une ACE pour un utilisateur
nfs4_setfacl [-R] COMMANDE ENTREE...
Ajouter une ACE pour un utilisateur : exemple
ACE pour un fichier
$ nfs4_setfacl -a A::iuttestt@NTIUT2GRE.IUT2.UPMF-GRENOBLE.FR:R essai-ACL
$ nfs4_getfacl essai-ACL
D::OWNER@:x
A::OWNER@:rwatTcCy
A::iuttestt@NTIUT2GRE.IUT2.UPMF-GRENOBLE.FR:rtcy
A::GROUP@:tcy
A::EVERYONE@:tcy
ACE pour le répertoire père
$ nfs4_setfacl -a A::iuttestt@NTIUT2GRE.IUT2.UPMF-GRENOBLE.FR:RX ~
$ nfs4_getfacl ~
A::OWNER@:rwaDxtTcCy
A::iuttestt@NTIUT2GRE.IUT2.UPMF-GRENOBLE.FR:rxtcy
A::GROUP@:rxtcy
A::EVERYONE@:xtcy
Supprimer une ACE : exemple
$ nfs4_setfacl -x 2 essai-ACL
Le 2 indique le numéro de l’ACE à supprimer dans l’ACL
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 29 / 56Types de fichiers spéciaux Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 30 / 56
Types de fichiers spéciaux
Liens symboliques
Principe :
accéder à un fichier ou répertoire depuis un autre chemin
Exemples vus avec ls :
lrwxrwxrwx 1 bonnaud info 26 2015-07-12 bibliothèques-iut -> /users/info/pub/1a/ada/bib/
lrwxrwxrwx 1 bonnaud staff 11 2017-07-12 /usr/local/bin/netbeans -> netbeans-8.2
-rwxr-xr-x 1 bonnaud staff 56 2017-07-12 /usr/local/bin/netbeans-8.1
-rwxr-xr-x 1 bonnaud staff 56 2017-07-12 /usr/local/bin/netbeans-8.2
lrwxrwxrwx 1 bonnaud staff 41 2015-07-12 /usr/local/bin/mon_prg -> /users/info/.../mon_prg
Commande de création :
ln -s ENTREE_EXISTANTE REPERTOIRE_DU_LIEN
ln -s ENTREE_EXISTANTE NOM_DU_LIEN
Exemples :
ln -s /users/info/.../mon_prg /usr/local/bin/
ln -s /users/info/pub/1a/ada/bib ada/bibliothèques-iut
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 31 / 56Types de fichiers spéciaux
Fichiers représentant des périphériques (/dev/)
Périphériques blocs (bloc devices) : accès avec un tampon
d’anté-mémoire (cache)
Exemple : 1er disque dur IDE/SATA
brw-rw---- 1 root disk 3, 0 sep 19 17:07 /dev/sda
Exemple : 1ère partition de ce disque
brw-rw---- 1 root disk 3, 1 sep 19 17:07 /dev/sda1
Exemple : 1ère clé USB
brw-rw---- 1 root disk 3, 1 sep 19 17:07 /dev/sdb
Périphériques caractères (character devices) : accès sans
mémoire tampon
Exemple : souris USB
crw-rw---- 1 root root 13, 63 sep 19 17:07 /dev/input/mice
Exemple : carte son et mixer
crw-rw---- 1 root audio 14, 3 sep 19 17:07 /dev/snd/*
Exemple : carte graphique 3D
crw-rw-rw- 1 root root 226, 0 sep 19 17:07 /dev/dri/card0
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 32 / 56Types de fichiers spéciaux
Systèmes de fichiers virtuels /proc/ et /sys/
Type de processeur :
-r--r--r-- 1 root root 0 2013-10-12 /proc/cpuinfo
Infos sur processus : /proc/PID/*
Paramètres et infos système : /proc/sys/*
/sys/* : infos sur bus, périphériques, drivers, modules, ...
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 33 / 56Types de fichiers spéciaux
Autres types de fichiers spéciaux
Tubes nommés (pipes)
un des moyens pour la communication inter-processsus
Sockets
un des moyens pour la communication inter-processsus
exemple : communication entre le serveur graphique X11 et ses
clients locaux :
srwxrwxrwx 1 root root 0 2013-10-12 /tmp/.X11-unix/X0=
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 34 / 56Archivage Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 35 / 56
Archivage
Archivage
Principe :
regrouper plusieurs fichiers et répertoires dans un unique fichier
Intérêts :
Manipulation plus aisée d’un ensemble de fichiers
(transfert entre 2 machines, ...)
Compression pour stockage ou transmission
Envoi en pièce jointe d’un courrier électronique
Vérification de l’intégrité des fichiers
(détecter une corruption sur clé USB)
Préservation des attributs des fichiers (date, permissions, ...)
Différents formats :
ZIP
TAR+GZIP, TAR+BZIP2, TAR+XZ
7ZIP
nombreux autres formats et logiciels propriétaires,
non multi-plateformes ...
Attention à la pérennité des données !
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 36 / 56Archivage
Archivage : fonctionnement
ZIP
Chaque fichier est compressé indépendamment des autres
−→ Rapidité d’extraction d’un fichier seul
N’archive pas les fichiers spéciaux Unix (liens symboliques, tubes,
périphériques, ...)
N’archive pas tous les attributs Unix (propriétaire, groupe,
permissions, ...)
TAR + logiciel de compression
Philosophie Unix de séparer chaque fonction dans un utilitaire
spécialisé
tar assure uniquement l’archivage
(y compris les fichiers spéciaux et attributs Unix)
gzip, bzip2 ou xz assure la compression
Pour extraire un fichier, il faut décompresser tous ceux qui le
précèdent dans l’archive. Rapide pour vos (faibles) volumes de
données !
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 37 / 56Archivage
Exemple d’archives
Taille des archives obtenues avec réglage de compression
maximale
$ du -s test
5696 test
$ ls -l test.*
-rw-r--r-- 1 bonnaud info 5038080 1 sept. 12:22 test.tar
-rw-r--r-- 1 bonnaud info 2119386 1 sept. 12:25 test.zip
-rw-r--r-- 1 bonnaud info 1962267 1 sept. 12:22 test.tar.gz
-rw-r--r-- 1 bonnaud info 1603608 1 sept. 12:28 test.tar.bz2
-rw-r--r-- 1 bonnaud info 1331005 1 sept. 12:33 test.7z
-rw-r--r-- 1 bonnaud info 1229128 1 sept. 12:25 test.tar.xz
Le résultat dépend du type de données archivées
La terminaison .tar.gz est parfois remplacée par .tgz pour
assurer la compatibilité avec certains systèmes
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 38 / 56Archivage
Commandes et utilitaires d’archivage
Ligne de commande
Compression Décompression
ZIP zip -r9 FICHIER-ARCHIVE RÉPERTOIRE unzip FICHIER-ARCHIVE
TAR+GZIP GZIP=-9 tar zcvf FICHIER-ARCHIVE RÉPERTOIRE tar zxvf FICHIER-ARCHIVE
TAR+BZIP2 BZIP2=-9 tar jcvf FICHIER-ARCHIVE RÉPERTOIRE tar jxvf FICHIER-ARCHIVE
TAR+XZ XZ_OPT=-9e tar Jcvf FICHIER-ARCHIVE RÉPERTOIRE tar Jxvf FICHIER-ARCHIVE
7ZIP 7z -mx=9 a FICHIER-ARCHIVE RÉPERTOIRE 7z x FICHIER-ARCHIVE
−→ écriture de scripts en TP pour automatiser
Interfaces graphiques
KDE : ark, dolphin
GNOME : file-roller
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 39 / 56Scripts shell Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 40 / 56
Scripts shell
Scripts shell
Principe : exécution séquentielle automatique de commandes
Exemple : fichier texte nommé ménage-ada
#!/bin/bash
# Ce script supprime tous les fichiers générés
# par le compilateur Ada et qui peuvent facilement
# être recréés par compilation
# (ceci est un commentaire)
# Supression des fichiers objets
rm *.ali *.o
# Supression des fichiers exécutables
find -type f -perm -700 | xargs rm -i
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 41 / 56Scripts shell
Création d’un script
1 Créer un fichier avec un éditeur de texte (gedit, ...)
2 Rendre le fichier exécutable :
chmod +x NOM_DU_SCRIPT
3 Exécuter le script :
./NOM_DU_SCRIPT
4 Mettre le script dans un répertoire bin où le shell le trouvera
automatiquement
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 42 / 56Scripts shell
Variables du shell
2 types de variables
Variables d’environnement
existent pour tout processus (cf. /proc/PID/environ)
transmises d’un processus père à ses fils
nom généralement en majuscules
modifient le comportement de certains logiciels
Variables locales à un shell
définies uniquement pour un processus shell particulier
ses processus fils n’en héritent pas
nom généralement en minuscules
Transformation variable locale −→ variable d’environnement :
export NOM_DE_VARIABLE
Définition directe d’une variable d’environnement :
export NOM_DE_VARIABLE=VALEUR
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 43 / 56Scripts shell
Variables d’environnement couramment rencontrées
Commande pour lister les variables : env
Variables standard
SHELL=/bin/bash
TERM=xterm-256color
USER=toto
PATH=/usr/local/bin:/usr/bin:/bin:
/usr/games:/users/info/pub/bin
PWD=/users/info/etu-s1/toto/ada
PS1=\[\033]0;[\u@\h:\w]\007\]\u@\h:\w\$
HOME=/users/info/etu-s1/toto
Préférences personnelles :
GZIP=--best
PAGER=less
EDITOR=gedit
BROWSER=firefox
ADA_INCLUDE_PATH=/users/info/pub/1a/ada/bib
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 44 / 56Scripts shell
Utilisation de variables dans un script
Affectation : attention aux espaces ! Ex :
fichier="/tmp/toto"
Utilisation : nom de la variable précédé par $ et entre guillemets.
Ex : affichage d’une variable ; le shell remplace la variable par sa
valeur
echo "Nom du fichier: $fichier"
Pas de déclaration. Une simple affectation suffit.
Attention à ne pas se tromper de nom ! Ex :
i=0
echo "$j" # Pas de message d’erreur.
# Rien n’est affiché.
Pas de type. Ex :
i="toto"
i=9
interprétation selon le contexte.
erreurs détectée lors de l’exécution, pas de la compilation
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 45 / 56Scripts shell
Rôle de la variable PATH
Liste de répertoires où le shell cherche des programmes ou
scripts
Pour un simple utilisateur :
répertoires bin
Pour le super-utilisateur :
répertoires bin et sbin
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 46 / 56Scripts shell
Variables particulières prédéfinies
$0 : nom du script. Ex :
echo "Bonjour, je suis le script $0"
$1, $2, ... : paramètres (positionnels) passés au script. Ex :
$ ./suppression-ada toto
$ cat suppression-ada
#!/bin/sh
rm "$1" "$1.o" "$1.ali"
$# : nombre de paramètres passés au script.
$@ : liste des paramètres passés au script. Équivalent à
"$1" "$2" ...
$? : code (numérique) de retour passé au système par la dernière
commande appelée. En général 0 si pas d’erreur, nombre 6= 0 en
cas d’erreur. Ex :
cp "$1" "$2"
echo "code de retour de la commande cp: $?"
$$ : PID du shell exécutant le script
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 47 / 56Scripts shell
Structures de contrôle
Instruction conditionnelle :
si ... alors ... sinon ...
Boucles for
Boucles while
...
Langage puissant, mais complexe
Tout ceci sera vu au semestre 3...
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 48 / 56Scripts shell
Caractères spéciaux du shell
Les espaces
Les jokers (wildcards) : * ? []
Les 3 types de guillemets :
double quote (") utiles pour utiliser des espaces et la plupart des
autres caractères spéciaux. Les variables sont encore substituées.
single quote (’) utiles pour tous les caractères spéciaux. Les
variables ne sont plus substituées.
back quote (‘) permet de lancer une commande et de récupérer
son résultat. Ex :
date_courante=‘date -I‘
ou date_courante=$(date -I) (version plus moderne)
Le caractère backslash (\) pour rendre normal un caractère
spécial
$ echo \"
"
Autres caractères spéciaux : ! ; ( ) | & $ < > #
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 49 / 56Shell avancé Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 50 / 56
Shell avancé
Initialisation du shell
Scripts communs à tous les utilisateurs
/etc/profile
/etc/bash.bashrc
Scripts spécifiques à un utilisateur
~/.profile
~/.bashrc
~/.bash_logout
Scripts par défaut utilisés lors de la création d’un compte
répertoire /etc/skel/ (skeleton)
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 51 / 56Shell avancé
Réglages avancés du shell I
Liste des réglages : shopt
$ shopt
autocd off
cdable_vars off
cdspell off
cmdhist on
[...]
Nombre de réglages
$ shopt | wc -l
48
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 52 / 56Shell avancé
Réglages avancés du shell II
Signification des réglages : man bash
The list of shopt options is:
autocd
If set, a command name that is the name of a directory
is executed as if it were the argument to the cd command.
This option is only used by interactive shells.
cdable_vars
If set, an argument to the cd builtin command
that is not a directory is assumed to be the name
of a variable whose value is the directory to change to.
[...]
Activation d’un réglage :
shopt -s NOM_RÉGLAGE (set)
Désactivation d’un réglage :
shopt -u NOM_RÉGLAGE (unset)
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 53 / 56Shell avancé
Exemple de réglage utile : globstar
Activation :
shopt -s globstar
Utilisation :
nouveau wildcard **
Usage : aller chercher des fichiers dans toute une arborescence
Exemple :
rm ~/**/*.o ~/**/*.ali
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 54 / 56Résumé Plan du cours 1 Processus 2 Redirection d’entrées/sorties, filtres 3 Droits d’accès aux fichiers 4 Types de fichiers spéciaux 5 Archivage 6 Scripts shell 7 Shell avancé 8 Résumé Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 55 / 56
Résumé
Résumé
Processus et multi-tâches préemptif
Je fais attention aux droits d’accès de mes fichiers
Sous Unix, tout est un fichier
J’archive mes données avant de les transmettre ou de les stocker
Les scripts shell sont très utiles pour de petits programmes,
mais attention à la syntaxe !
Département Informatique (IUT2, UGA) M1101a – Cours 3 2018/2019 56 / 56Vous pouvez aussi lire