Initiation à Unix/Linux Octobre 2007 Nicolas.Grima@univ brest.fr Bât F 3ième étage bureau F301bis (Ingénieur de Recherche au CNRS LPO)
A qui s'adresse ce cours Objectifs Personnes qui ne connaissent pas ou très peu l'environnement Unix/Linux. Personnes qui veulent revoir leurs connaissances de cet environnement. Mise à niveau pour pouvoir s'intégrer facilement dans une équipe de recherche dont souvent les moyens informatiques sont sous Unix/Linux (stage de fin d'année thèse etc).
Tour de table Connaissances générales en informatique: cours, formations, expériences. Systèmes d'exploitation: Unix, Linux, Windows, Mac OS. Langage de programmation: C/C++, Fortran, autres. Plate formes: PC, Mac, calculateurs, autres.
Le support de cours Document fait par le centre de ressources en informatique scientifique du CNRS IDRIS. http://www.idris.fr/data/cours/unix/user/choix_doc.html
Introduction En recherche/ingénierie les ordinateurs sont généralement sous Unix/Linux. Le nombre de PC sous Linux est croissant. Unix/Linux permet de travailler de façon identique et efficace sur de nombreuses plateformes. Unix : fiabilité, système ouvert, multi taches, multi utilisateurs, interactif et batch, nombreux outils
Introduction Ordinateur vocabulaire matériel. Processeur CPU (central Process Unit) Mémoire cache Mémoire vive (RAM) Espace de stockage Disques Durs Lecteurs CD/DVD Etc
Introduction Ordinateur vocabulaire logiciel. Administrateur(s) Utilisateur(s) Interface (graphique ou texte) Shell Programmes - Bibliothèques Noyau Système d'exploitation Ordinateur (matériel) Principale difficulté d'unix c'est son côté ligne(s) de commandes pour dialoguer avec l'ordinateur.
Connexions : locale et distante un identifiant et un mot de passe (login/password). Machine locale Machine distante Pour chaque compte on a : login, password, groupe, Home, langage de commande (shell). Interface "Graphique" (locale) Interface "Texte" (distante).
Démarrage Où suis je? Sur votre HOME=/home/qqc/login ou ~login. Un espace disque qui vous est propre (souvent sauvegarde). Pour savoir où vous êtes taper la commande pwd. Pour revenir dans votre HOME entrer cd.
Démarrage (suite) Deux grandes familles de Shell ksh (bash, zsh, sh,...) et ses fichiers cachés :.profile (à la connexion).kshrc (à chaque nouvelle fenêtre ou session) csh (tcsh,...) et ses fichiers cachés :.login (à la connexion).cshrc (à chaque nouvelle fenêtre ou session) Utiliser chsh ou ypchsh pour changer de Shell.
Répertoires Fichiers Arborescence L'espace de travail stockage (bâtiment) est formé de plusieurs disques durs (salles de rangement). Les disques durs de votre ordinateur sont partitionner (armoires) Chaque partition est découpée suivant une arborescence de répertoire (tiroirs, placards, dossiers, etc) Les différents types de fichiers (chaussettes, chemises, etc) sont stocké dans ces répertoires avec des droits d'accès.
Répertoires Fichiers Arborescence bin boot / Root dev login1 etc login2 home qqc lib login3.cshrc....login Login n opt répert. répert. var bin usr lib Commandes unix/linux include Bibliothèques /home/qqc/login/.cshrc fichier fichier
Les commandes et notions de base Unix/Linux
Ou trouver de l'information Utiliser la commande man (manual) cette commande permet de tout connaître d'une commande ou d'un produit. par exemple : man man man pwd man cd
Commandes de base ls ls : afficher le contenu d'un répertoire. Exemples d'utilisation : ls rtl : liste de façon détaillé les fichiers et les répertoires du plus ancien au plus récent. ls al : liste de façon détaillé les fichiers et répertoires courant et ceux cachés. ls *.f : liste tous les fichiers qui se terminent par.f. Possibilité de créer des alias et de les ajouter dans les fichiers.profile ou.login.
Commandes de base cd cd : changer de répertoire. Exemples d'utilisation : cd ou cd $HOME : ramène au HOME. cd.. : ramène dans le répertoire parent. cd rep : va dans le répertoire rep à partir du répertoire où vous êtes. cd /usr/bin : va dans le répertoire bin en écrivant tout l'arborescence. cd : une bonne astuce pour revenir dans le répertoire d'où vous veniez précédemment.
Commandes de base pwd bin boot / Root dev login1 etc login2 home qqc lib login3.cshrc....login Login n opt pwd : Afficher le nom du répertoire de travail en cours. répert. répert. var bin usr lib include
Un peu de pratique TP première partie
Commandes de base mkdir mkdir : créer des répertoires. Exemple d utilisation : mkdir rep : crée le répertoire rep.
Commandes de base cp cp : copier des fichiers. Exemples d'utilisation : cp fic1 fic2 : copier le fic1 dans le fic2. cp fic1 rep : copier le fic1 dans le répertoire rep avec le même nom. cp r rep1 rep2 : copier récursivement les répertoires.
Commandes de base mv mv : déplacer ou renommer des fichiers. Exemples d'utilisation : mv fic1 fic2 : renomme le fichier fic1 en fic2. mv fic1 rep : déplace le fic1 dans le répertoire rep sans changer le nom.
Commandes de base rm rm : Effacer des fichiers ou répertoires. Exemples d'utilisation : rm fic1 : efface le fichier fic1. rm fic* : efface tous les fichiers qui commence par fic. rm r rep : efface récursivement le contenu du répertoire rep et le répertoire rep.
Les droits Unix/Linux Contrôle de lecture (r), écriture (w) et exécution (x) d'un fichier ou d'un répertoire. Notions de login, login group et group other. other d r w x r w x r w x ls -al -rw-r--r-- 1 grima lpo/ubo 144 jun 24 10:58.aumixrc drwxr-xr-x 5 grima lpo/ubo 512 jun 10 15:48 AUTOMAKE drwx------ 2 grima lpo/ubo 512 jan 21 2005.autosave
Les droits Unix/Linux chmod chown chmod : modifier les autorisations d'accès à un fichier. chown : modifier le propriétaire et le groupe d'un fichier. exemples d'application : chmod 755 rwxr xr x chmod 700 rwx chmod 644 rw r r chmod R 700 : récursivité
Un peu de pratique TP second partie
A la recherche des fichiers (find) et de leur contenu (grep) find : rechercher des fichiers dans une hiérarchie de répertoires. Exemples d'application : find rep name "*blabla*" print : recherche récursivement tous les fichiers dont le nom comporte blabla à partir du répertoire rep. find rep name "*toto*" exec rm {} \; : recherche... et efface ces fichiers. man find : c'est une commande clé...
A la recherche des fichiers (find) et de leur contenu (grep) grep : afficher les lignes correspondant à un motif donné. Exemples d'application : grep i toto *.f90 : recherche la chaîne toto sans distinction entre minuscule et majuscule dans tous les fichiers se terminant par.f90 du répertoire courant. find rep name "*.f90" exec grep i toto {} \; : recherche récursivement... à partir du répertoire rep.
Méta caractères : ;,, <, >, >>, etc Les méta caractères servent à contrôler les enchaînements de commandes, les redirection de résultats, etc. ls l; grep i toto *.f90 : enchaîne deux commandes Unix sur la même ligne. ls l grep i f90 : la recherche de f90 va se faire sur la sortie de la commande ls l. ls l more : très souvent utilisé pour afficher progressivement les résultats lorsque les fichiers sont nombreux. ls l grep i f90 > fic1 : et le résultat sera stocké dans le fichier fic1.
La variable d'env. PATH et la commande type ou which PATH est une variable d'environnement qui indique des répertoires privilégiés où les exécutables seront recherchés. echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/x11r6/bin:/usr/ sbin:/sbin:/opt/linux/ferret/bin:/opt/linux/gmt 3.4.1/bin:. find... : pas besoin d'entrer /usr/bin/find...
La variable d'env. PATH et la commande type ou which Type (ksh) ou which (csh) : localise une commande ou un exécutable à partir des chemins renseignés dans la variable PATH. Exemples d'application : type ifort /opt/intel_fc_80/bin/ifort which pwd /bin/pwd
Partager des données Machine locale Machine distante ftp ou sftp : programme de transfert de fichiers. ftp mach.dom.fr ou sftp login@mach.dom.fr ftp> put fichier ou ftp> get fichier ftp> quit limite : on ne peut pas transférer un répertoire!
Partager des données tar tar : utilitaire de gestion d'archives. On utilise généralement cette commande pour mettre dans un fichier toute une arborescence de fichiers et de répertoires. archive : tar cvf archive.tar répertoire désarchive : tar xvf archive.tar vérifier : tar tvf archive.tar
Partager des données gzip Gzip et gunzip : compacter ou décompacter des fichiers. Permet de réduire considérablement la taille d'un fichier volumineux (ASCII). compacter : gzip archive.tar archive.tar.gz décompacter : gunzip archive.tar.gz archive.tar Un fichier tar.gz permet des transfert (ftp) plus rapide!
Un peu de pratique TP troisième partie
Allons un peu plus loin...
Éditeurs de Texte vi emacs nedit vi : présent partout, mode texte, combinaisons de lettres pour les commandes. Simple et rapide pour des petits programmes et changements. emacs : très présent, fenêtre graphique, combinaisons de lettres et boutons pour les commandes. Usine à gaz. Gros développements. nedit : moins présent, même avantages qu'emacs, mais moins usine à gaz.
Éditeurs de Texte vi emacs nedit Connaître un minimum vi. Prenez le même éditeur que votre responsable de stage ou le plus répandu dans le service.
Élaboration de scripts Script : un ensemble de commandes (Shell) placées dans un fichier que l'on peut exécuter.! Éviter de récrire une commande Unix qui existe déjà! sort : trier les lignes d'un fichier texte. uniq : Éliminer les lignes dupliquées dans un fichier trié. paste : regrouper les lignes de différents fichiers. cut : Supprimer une partie de chaque ligne d'un fichier. tr : Transposer ou éliminer des caractères (Page 41)
Élaboration de scripts suite Création d'un fichier avec son éditeur de texte préféré. Première ligne doit commencer par : #!/usr/bin/ksh ou #!/usr/bin/csh ou #!/usr/local/bin/perl, etc En plus des commandes : Boucles Tests conditionnels Les variables Le fichier doit avoir les droits Unix en exécution.
Élaboration de scripts ksh Boucles for #!/usr/bin/ksh for i in `ls *.f90` do echo "je traite le fichier :" $i done while #!/usr/bin/ksh i=1 while ((i<=5)) do echo $i ((i=i+1)) done
Élaboration de scripts ksh Tests conditionnels If (nombres) #!/usr/bin/ksh... if (( numero < 10 )) (( a!=2)) then echo "plut petit" else echo "plus grand" fi If (texte) #!/usr/bin/ksh read rep if [[ $rep = "oui"]] then rm f *.h fi
Élaboration de scripts ksh Création de ses propres variables : ma_variable=/home/group/login/exe.old echo ${ma_variable} echo ${ma_variable%.*}.new /home/group/login/exe.new Basename ${ma_variable} exe.old Calculs : ((i=i+1)) Echo "mon resultat est : $((354%54))"
Élaboration de scripts ksh Variables : (commande param1 param2...) $ : permet d'avoir le contenu d'une variable. $? : retour d'exécution de commande. 0 = tout est ok, sinon >0 pour une erreur. $# : nombre de paramètres $@ : liste des paramètres $0 : nom de la commande $n : paramètre de rang n $$ : numéro de processus courant
Élaboration de scripts encore + awk perl make et les fichiers Makefile (compilation)
Processeur Processus Tâches Processeur Processus Tâches (threads)
Gestion des processus top ps top : affiche les processus (mode intéractif). ps : affiches les processus (mode texte)
Gestion des processus kill Ctrl c Ctrl d kill : envoyer un signal à un processus. kill 9 pid : "tue" le processus qui a pour identifiant pid. Ctrl c : "tue" une commande sur laquelle on à la main. Ctrl d ou exit : termine une session (fenêtre par exemple). Ctrl z : bloque un processus bg : le met en arrière plan
Les inclassables à connaître df k : pour connaître l'occupation des "file systems". du k : pour connaître l'occupation d'une arborescence de répertoire (par exemple votre $HOME).
Un peu de pratique TP quatrième partie