M1101a - Cours 3 Processus, droits, fichiers spéciaux, archivage, scripts Département Informatique 2018/2019 - IUT2 Informatique

 
M1101a - Cours 3 Processus, droits, fichiers spéciaux, archivage, scripts Département Informatique 2018/2019 - IUT2 Informatique
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
Diapositive suivante ... Annuler