Licence Pro GSI: scripts sous unix/ TD No1
Objectifs du TD : processus, redirection et enchaînement de commandes.
Exercice 1: hiérarchie de processus, recouvrement, commandes
internes/externes
- tapez "sleep 120". Quel est le PID de la commande sleep. Quel est
celui de son processus père ? Quand reprenez-vous la main ?
- tapez "exec sleep 120".Quel est le PID de la commande sleep. Quel
est celui de son processus père ? Expliquez les
différences avec la situation ci-dessus et ce qui se passe une
fois que la commande "sleep 120" est finie.
- affichez l'arborescence de vos processus
- notre shell est bash. Précisez pour chacune des commandes
suivantes si elles sont internes, externes et, dans ce cas, le chemin
absolu du fichier correspondant: : ls, exec, cd, w,time.
- tapez "sleep 600". Comment faites-vous depuis le shell de
lancement:
- reprendre la main en suspensant la commande
- relancer la commande suspendue
- la susprendre et la relancer en tâche de fond
- Quand c'est possible, indiquez comment réaliser ces opérations depuis un
autre shell que le shell de lancement
- Comment aurait-on du procéder pour lancer cette commande
directement en tâche de fond ?
exercice 2: redirections
- sauvegardez la liste des fichiers présents dans /etc dans
un dossier nommé /tmp/liste.txt
- ajoutez y la liste des fichiers présents dans /usr/bin et
dans /var/log
- sauvez dans un fichier la liste des noms et espaces disques
occupé du contenu de /var : une ligne par fichier/dossier contenu dans
/var
- faites de même mais sauvez aussi dans /tmp/erreurs la liste
des erreurs générée par votre commande
$ ls /etc > /tmp/liste.txt
$ ls /usr/bin /var/log >> /tmp/liste.txt
$ du -sk /var/* > /tmp/espaceVar.txt
$ du -sk /var/* > /tmp/espaceVar.txt 2> /tmp/erreurs
Exercice 4: filtres usuels
regardez le manuel et testez les commandes tail, head, sort, uniq, grep, wc, tr, cut, more.
Exercice 3: enchaîments de commandes, filtres
- comptez le nombre de fichiers présents dans le dossier /etc
- combien y a-t-il de comptes contenant la lettre 'o' dans leur nom ?
- donnez une ligne de commande permettant d'afficher le contenu du fichier /etc/passwd à partir de la ligne 5
- donnez une ligne de commande permettant d'afficher le contenu du fichier /etc/passwd jusqu'à la ligne 12
- donnez une ligne de commande permettant d'afficher les lignes 5
à 12 du fichier /etc/passwd
- le fichier /etc/passwd est constitué de champs
séparés par le caractère :. Le dernier champ (a
priori, le 7e champ, cf "man 5 passwd" pour plus d'informations)
contient le shell de l'utilisateur. Donnez une commande permettant de
connaitre le nombre de shells différents utilisés par les
utilisateurs présents dans /etc/passwd. Un même shell
utilisé par plusieurs utilisateurs ne doit être
compté qu'une seule fois.
petit@u2-dell:~$ ls /etc|wc -l
271
petit@u2-dell:~$ grep -E '^[^:]*o[^:]*:' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
avahi-autoipd:x:103:108:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
kernoops:x:108:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
postfix:x:114:123::/var/spool/postfix:/bin/false
petit@u2-dell:~$ grep -E '^[^:]*o[^:]*:' /etc/passwd|wc -l
8
petit@u2-dell:~$ head -n 12 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
petit@u2-dell:~$ head -n 12 /etc/passwd | tail -n 7
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
# ne pas oublier que uniq attend des données triées
petit@u2-dell:~$ cut -d : -f 7 /etc/passwd |sort |uniq
/bin/bash
/bin/false
/bin/sh
/bin/sync
petit@u2-dell:~$ cut -d : -f 7 /etc/passwd |sort |uniq|wc -l
4
Sources
une partie des exercices du présent TD s'inspire des sources
suivantes :