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