Retour au masque de création : umask Sa valeur donne les droits à la création d'un fichier où d'un répertoire. Valeur standard : 022 --> droits 644 pour un fichier (mode 644) --> droits 755 pour un répertoire (mode 755) N.B. : il faut les droits d'exécution pour “traverser un répertoire” et par défaut, un fichier n'est pas exécutable. Notion de processus ● ● ● Définition : série d'instructions en exécution ou en attente de l'UC. C'est donc un programme en exécution (vu par l'usager qui lance des commandes). Une commande peut lancer plusieurs processus. Hierarchie des processus Sous Linux/Un*x , la représentation des processus est hierarchique=> Il existe un mécanisme de filiation. On parle de processus père, fils, d'héritage en général. Linux/Un*x assigne un numéro unique à tous les processus actifs pour les différencier et les contrôler. Types de Processus 1) Processus système : attaché à aucun terminal, il a pour propriétaire root--> concerne les processus démons - répertoire de travail : en général la racine - il est créé au lancement du système (lors du “boot”) Le plus important : init (processus n°1) : processus parent des processus shells créés par les utilisateurs connectés. --> il recueille les processus orphelins --> il traite l'élimination des processus zombies 2) Processus utilisateur : - durée de vie limitée, mais non bornée - exécution de commandes shell ou de programmes - les programmes peuvent créér des processus fils par la fonction fork Commande permettant d'obtenir des informations sur les processus en cours : ps host@machine $: ps aux N.B. : on peut lancer un processus en “tâche de fond” --> commande suivie de “&” Principaux attibuts d'un processus donné : ● PID : Id du processus lui-même ● PPID : Id du processus père ● priorité => commande “nice” ● UID : Id utilisateur qui a créé le processus ● ● ● GUID : Id du groupe auquel appartient l'utilisateur qui a lancé le processus (réél, effectif) TTY: terminal auquel est attaché le processus On peut détacher un processus de son “père”: commande “nohup” Le Shell Buts du shell : - interpréteur de commandes - langage de programmation - il sert d'intermédiaire entre l'utilisateur et le noyau Plusieurs versions de Shell : le “Shell de Bourne” (appelé Bourne Shell), le Korn Shell, le C_Shell, le Bourne Again Shell (Bash) = shell étudié en LO22 Rappel : Cadre de l'UV ● Introduction : Quels sont les métiers de l'informatique ? Exemple : site d'offres d'emplois (libre) : fr.lolix.org ● Qu'utilise-t-on en pratique ? Perl, C, C++, Python, Java...etc. ● Conclusion : Bash = passage obligé permettant d'acquérir des mécanismes Le Bash n'est pas beaucoup utilisé en pratique : but pédagogique d'abord Principe de fonctionnement du Shell Ouverture initiale de 3 fichiers standards : ● entrée standard (stdin, fd=0),par défaut le clavier ● sortie standard (stdout, fd=1), par défaut l'écran ● sortie d'erreur standard (stderr, fd=2), par défaut l'écran aussi. N.B. : fd signifie file descriptor Après ouverture de ces fichiers standards : le shell se comporte comme une boucle infinie : Début_de_Boucle - affichage du prompt ($ par exemple) d'attente du clavier - lecture d'une ligne -analyse syntaxique (découpe en mots) -substitution (caractères spéciaux) -exécution de la commande Fin_de_Boucle Exemple : Exécution de la commande ls -l ~/ - l'utilisateur entre la commande - le shell reconnaît chaque partie de la commande : --> nom de la commande : quoi faire --> [option(s)] : comment le faire --> [arguments ] sur quoi le faire Si la commande est correcte, le shell reconnaît les mots, crée un processus qui exécute la commande avec les paramètres. quand la commande est terminée, le processus se temrine et le shell réaffiche l'invite La sortie de la boucle s'effectue par exit ou par CTRL-D (fin de l'entrée standard) Les Métacaractères du shell ● Métacaractères Expressions régulières → Comprendre caractères “jokers” et “spéciaux” Ces caractères permettent - de construire des chaînes de caractères génériques - de modifier l'interprétation d'une commande Caractères jokers : * désigne une chaîne de caractères quelconque ? désigne un (unique) caractère quelconque [...] désigne les caractères entre crochets, définis par énumération ou par un intervalle ! désigne la négation ; sépare deux commandes sur une même ligne ' délimite une chaîne de caractères contenant des espaces (à l'intérieur, tous les métacaractères perdent leur signification) “ délimite une chaîne de caractères contenant des espaces (à l'intérieur, tous les métacaractères perdent leur signification, à l'exception des métacaractères `et $ ` “capture” la sortie standard pour former un nouvel argument ou une nouvelle commande \ annihile la signification du métacaractère qui suit { et } permettent de regrouper un ensemble de commandes et de les exécuter dans le shell courant ( et ) permettent de regrouper un ensemble de commandes et de les exécuter dans un shell fils Exemples : ls -l ./f* ls -l /dev/[a-b]* ls .[jpg]* cp *.c backup ls ~/[a-z][0-9].??? kill `pidof gphoto` echo “je suis sous ”`pwd` echo “il y a”`who | wc -l`utilisateurs connectés ls -li [gh]*.* | cat -n | head -3 | tail -1