Partie 1 : Rappel des commandes shell de l'OS GNU/Linux
- Conditions de mise en oeuvre
Logiciel : vous utiliserez la machine virtuelle mint du dossier c:\Machines Virtuelles
Utilisez le compte : nsi , mot de passe : nsiuser pour ouvrir une session.
- Compétences attendues:
Identifier les fonctions d’un système d’exploitation.
Utiliser les commandes de base en ligne de commande.
Gérer les droits et permissions d’accès aux fichiers
- Partie 1.1: rappel de quelques commandes shell de l'OS GNU/Linux
1. Se situer dans l'arborescence du système de fichier
- Commande: pwd
La commande pwd vous permet de se localiser dans l’arborescence du système; à l’ouverture du terminal vous êtes habituellement dans votre répertoire personnel, exemple:
Question 1
Ouvrez un terminal, lancez la commande pwd et concluez sur votre localisation dans l'arborescence du système.
2. Afficher le contenu d'un répertoire
- Commande: ls
ls est une commande POSIX (abréviation de list en anglais) qui permet de lister le contenu d'un répertoire.
La commande ls sans arguments vous permet de connaître les fichiers et dossier du répertoire courant ( là où vous êtes dans l'arborescence).
Question 2
- Recherchez la signification de la norme Posix et sa prise en compte sous Windows
- Lancez la commandes ls -l pour voir le contenu du dossier courant avec les droits des utilisateurs.
- Lancez la commandes ls -la, quelle est la différence? Rappeler ce que signifie un nom de fichier précédé d'un point.
3. Se déplacer dans l'arborescence
- Commande: cd
La commande cd (Change Directory) permet de se déplacer dans le système de fichiers.
Lorsqu’elle est appelée « sans argument », la commande cd dirige vers le répertoire personnel de l’utilisateur ( la commande cd ~ est équivalente).
Exemple d'utilisation de la commande cd:
cd Documents: aller dans le dossier Documents si le dossier Documents est enfant du dossier où on se situe au moment de lancer la commande
cd .. : remonter d'un niveau ( vers le répertoire parent d'où on est situé)
cd ../.. : remonter vers la racine / équivalent de cd /
Chemin Relatif ou absolu
- Tout chemin qui commence par / est un chemin « absolu ».
Exemple de chemin absolu: pour aller dans le répertoire Documents de nsiuser :
nsiuser@nsidebian:~$cd /home/nsiuser/Documents |
- Les chemins qui ne commencent pas par la racine / sont « relatifs ». Un chemin relatif a comme point de départ le répertoire courant.
En partant du répertoire utilisateur, voici un chemin relatif pour se rendre dans le répertoire Documents de nsiuser:
nsiuser@nsidebian:~$cd Documents |
Ici le chemin est relatif à /home/nsiuser qui est le répertoire courant.
Notations à connaître:
- Le tilde : ~/ est interprété comme le répertoire personnel de l'utilisateur qui a lancé la commande. Par exemple, l'utilisateur nsiuser pourra utiliser le caractère tilde dans une ligne de commande en remplacement du chemin absolu de son répertoire personnel : /home/nsiuser.
Exemple: /home/nsiuser/Documents <=> ~/Documents
- Le point “.” représente le répertoire courant (où on se trouve) et deux points “..” indiquent le répertoire parent de celui dans lequel on se trouve.
Question 3
Saisissez la commande absolue cd /var , préciser où vous êtes dans l'arborescence.
Remonter à la racine avec une commande relative depuis /var
Saisissez la commande qui vous ramène dans le dossier personnel
4. Créer, éditer, supprimer des fichiers
- Commande: touch
Pour créer un fichier, on peut utiliser la commande touch
Exemple:
nsiuser@nsidebian:~$touch test.txt |
- Commande: cat
Pour « visualiser » en mode terminal ce genre de petits fichiers texte, on peut utiliser cat:
nsiuser@nsidebian:~$cat test.txt Hello World NSI |
Question 4
- Créez le fichier montexte.txt,
On peut l’éditer avec un éditeur simplifié intégré nativement, nano:
nsiuser@nsidebian:~$nano montexte.txt |
- Editez le avec nano, ajoutez « Ici c'est la NSI » puis CTRL+X pour quitter, puis O pour enregistrer et enfin la touche du clavier Entrée pour valider le nom du fichier à écrire. Vérifiez que le fichier contient bien votre texte avecla commande cat.
A SAVOIR pour aller plus vite, UTILISER L’AUTOCOMPLÉTION: la touche «TAB» peut venir compléter les dernières lettres d'un nom de fichier : essayez avec .bash_h puis TAB
- Editez avec nano le fichier .bash_history contenu dans votre dossier utilisateur, parcourez le et indiquez ce qu’il semble contenir.
5. Créer, supprimer des répertoires
Pour créer un répertoire, on utilise la commande mkdir (abréviation de make directory) :
Exemples:
nsiuser@nsidebian:~$mkdir Monrep |
Pour supprimer ce répertoire, on utilise la commande rmdir (abréviation de remove directory):
nsiuser@nsidebian:~$rmdir Monrep |
ATTENTION ! Si le répertoire n’est pas vide, rmdir ne peut pas supprimer le répertoire, il faut utiliser rm -R (abréviation de remove Recursively ) :
nsiuser@nsidebian:~$rm -R Monrep |
Question 5
Créez dans votre répertoire personnel le dossier nsirep1 , saisissez la commande ls -l, précisez quel caractère en début de ligne nous indique que c'est biennun répertoire.
Ajoutez à l'intérieur du répertoire nsirep1 un fichier appelé untexte.txt
Vérifiez que la commande de suppression rmdir seule ne permet pas de supprimer le répertoire.
6. déplacer et copier des fichiers et répertoires
- Commande: cp
Pour copier un fichier, on peut utiliser la commande cp ( abreviation de copy) ci-dessous on copie le fichier carte1.txt du dossier Monrep vers le dossier /home/nsiuser
Exemple:
nsiuser@nsidebian:~/Monrep$cp carte1.txt /home/nsiuser |
Pour copier un dossier et son contenu, on utilise la commande cp -r, ci-dessous on copie le dossier Monrep et son contenu vers le dossier /home/nsiuser/Téléchargement
nsiuser@nsidebian:~$cp -r Monrep ~/Téléchargement |
- Commande: mv
La commande mv (abréviation de move) permet de déplacer un fichier ou un dossier. Ci-dessous on déplace le fichier carte2.txt dans le dossier /home/nsiuser/Monrep/et le dossier Monrep avec son contenu vers le dossier /home/nsiuser/Téléchargement:
nsiuser@nsidebian:~$mv carte2.txt /home/nsiuser/Monrep/ nsiuser@nsidebian:~$mv Monrep ~/Téléchargement |
La commande mv peut aussi renommer un répertoire ou un fichier en l’appliquant sur la même localisation. Ci-dessous, on renomme fichier carte1.txt en carton1.txt et le dossier Monrep en Monrep1:
nsiuser@nsidebian:~$mv carte1.txt carton1.txt nsiuser@nsidebian:~$mv Monrep Monrep1 |
Wildcard
Le wildcard est un caractère joker qui remplace l’équivalent d’un ou plusieurs caractères. Par exemple, on veut lister tous les fichiers textes d'un dossier, on peut saisir:
nsiuser@nsidebian:~$ls *.txt |
Pour lister tous les fichier qui commencent par carton, on peut saisir:
nsiuser@nsidebian:~$ls carton* |
Vous utilserez ces commandes dans la partie2
7. les droits des fichiers
- Commande: id
La commande id permet de savoir à quels groupes du système nous appartenons.
nsiuser@nsidebian:~$id uid=1000(nsiuser) gid=1000(nsiuser) groupes=1000(nsiuser),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev), 109(netdev),111(bluetooth),116(scanner),119(lpadmin) |
La commande ls -l (abréviationde list long) donne les détails et les droits d’accès d'un dossier ou fichier:
d rwx r – x r – – nsiuser nsiuser Monrep
Les 3 publics pour lesquels les droits d’accès sont définis ci-dessus:
Propriétaire du fichier, droits: rwx |
membres du groupe principal du propriétaire, droits: r – x |
autres utilisateurs du système, droits: r – – |
Question 6.1
Donnez vos droits actuels du fichier tester.py situé dans /home/nsi/Documents/Python_codes.
- Commande: chmod
On peut modifier les droits d’accès d’un fichier ou d’un répertoire avec la commande chmod (abréviation de CHange MODe) .
Au niveau droits justement, il faut au moins être le propriétaire du fichier.
On utilise le modèle:
chmod public opération droit
avec :
— public peut prendre comme valeur u pour le propriétaire (user), g pour le groupe, o pour les autres utilisateurs (other) ou n’importe quelle combinaison de ces trois valeurs ( ug, uo, go, ugo, etc..) .
La valeur a (all) est équivalente à la combinaison ugo.
— opération est le caractère ’+’ pour ajouter le droit, ’-’ pour le supprimer ou ’=’ pour affecter un droit ce qui remplace l'existant.
— droit peut prendre comme valeur r, w, x ou toute combinaison de ces trois valeurs.
Exemple:
chmod a+w liste_repertoire.sh => ajoute le droit ( w) écriture et suppression du fichier à tous les utilisateurs du pc
chmod go-x Python_codes => retire le droit de parcourir le dossier ( x) aux membres du groupe nsi et aux autres utilisateurs du pc
chmod go=r Python_codes => remplace les droits sur le dossier Python_codes par lire (r) aux membres du groupe nsi et aux autres utilisateurs du pc
chmod sur un dossier avec un chemin absolu ce qui en réalité est inutile ici parce qu'on est dans Documents qui contient le sous-dossier visé:
Question 6.2
On considère tester.py situé dans /home/nsi/Documents/Python_codes.
Ajoutez-vous le droit d'exécution (x) sur ce fichier.
Partie 1.2 Gestion des processus
- Lister les processus sous Linux
La liste des processus peut être obtenu avec la commande ps
ps a beaucoup d'options comme:
-a : tous les processus
-e : les processus de tout le monde
-f: toutes les infos sur les processus
etc..
Exemples
ps -e :
ps -p 1,2: affiche les processus de pid 1 et 2
ps -C systemd, sh : affiche les processus systemd et sh
Affichage de l'arborescence des processus par ordre alphabétique, avec leur pid (option -p), format ligne longue (option -l): pstree -lp
Affichage par ordre numérique (option -n), avec pid (option -p) et ligne longue (option -l): pstree -nlp
- Terminer un processus sous Linux
Terminer le processus de pid 1125, désigné par son pid: kill 1125
Terminer les processus désignés par son nom : pskill -e nom_du_processus
Exercice 7
Cet exercice vous montre l'influence de la priorité d'un processus
Ouvrir un terminal, vous vous situerez par défaut dans le répertoire utilisateur de nsi
En ligne de commande avec l'éditeur de texte "nano" créez les 3 fichiers suivants : (ctrl-X, O (oui), puis entrée pour enregistrer en confirmant le nom)
process1.sh |
process2.sh |
lanceur.sh |
#! /bin/bash while true do echo prog1 done |
#! /bin/bash while true do echo prog2 done |
#! /bin/bash ./process1.sh& ./process2.sh& wait |
Pour le copier-coller avec VirtualBox, faire ctrl+maj+v dans la console linux
2) Autorisez l'exécution de ces fichiers
chmod +x lanceur.sh && chmod +x proc* |
Vérifiez : avec ls -lah *.sh
joindre la capture sur votre compte rendu
3) Exécuter le script lanceur.sh
sh lanceur.sh
avec CTRL+S (stop) et CTRL+Q (continue) , gérez le défilement des affichages console,
que remarquez vous "en moyenne" pour les affichages obtenus.
Joindre une capture écran représentative sur votre compte rendu d'une dizaine de lignes d'affichages
4) Visualisation des processus
Ouvrir un deuxième terminal en redimensionnant avec un affichage assez large et tester la commande ps au
On visualise chaque processus, avec notamment le %CPU utilisé, le % de mémoire utilisée, la console TTY correspondante ou PTS, le propriétaire, l'heure de lancement, le temps d'exécution, etc...
Et ce qui va nous intéresser plus particulièrement ici le PID (Processus Identifier).
Note : vos numéros de PID seront évidemment différents dans votre console, et pour la suite vous adapterez ainsi vos commandes !
Joindre la capture écran avec vos PID sur votre compte rendu
5) Prioriser les processus : renice
Chaque processus actif sur le système s'exécute avec une priorité donnée (aussi appelée valeur amicale ou nice value en anglais). Cette valeur peut varier de -20 à +20. La priorité maximale pour un processus est -20. Si elle n'est pas définie, tous les processus s'exécute avec une priorité de 0 par défaut (la priorité de planification de « base »). Les processus ayant la priorité maximale utilisent plus de ressources système que les autres. Les processus ayant une priorité inférieure s'exécuteront lorsque le système sera libéré par les tâches de priorité plus élevée. Les utilisateurs autres que le super-utilisateur root ne pourront que diminuer la priorité de leurs processus dans la fourchette 0 à 20. Le super-utilisateur pourra quant à lui définir de manière arbitraire la priorité de n'importe quel processus. |
Nous allons utiliser le droit permis aux utilisateurs, à savoir
Les utilisateurs autres que le super-utilisateur root ne pourront que diminuer la priorité de leurs processus dans la fourchette 0 à 20.
Exemple pour diminuer la priorité à +15 : $ renice 15 1991
(On ne pourra plus revenir en arrière en "utilisateur")
En root on pourrait augmenter la priorité
Exemple : # renice -10 1991
A FAIRE
Ainsi en tant qu'utilisateur vous devrez réduire la priorité du processus process1 (et donc ainsi par conséquence "favoriser" le processus process2)
Sur votre compte rendu écrire la commande effectuée.
Joindre une capture écran représentative sur votre compte rendu d'une dizaine de lignes d'affichages
6) Stopper les processus : kill
En cas de souci pour recommencer ou pour stopper en fin d'activité
par leur numéro PID :
kill 1991
kill 1992
ou bien en regroupant par leurs noms de fichiers :
killall proc*
Le résumé des commandes:
Created with the Personal Edition of HelpNDoc: Free HTML Help documentation generator