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 / 56
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 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 / 56
Processus 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 / 56
Processus 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 / 56
Processus 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 / 56
Processus 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Redirection 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Droits 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 / 56
Types 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 / 56
Types 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 / 56
Types 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 / 56
Types 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 / 56
Archivage 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 / 56
Archivage 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 / 56
Archivage 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 / 56
Archivage 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Scripts 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 / 56
Shell 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 / 56
Shell 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 / 56
Shell 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 / 56
Shell 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 / 56
Ré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 / 56
Vous pouvez aussi lire