************************** * Prise en main de Linux * ************************** Après avoir compris comment un système Linux était organisé, il faut maîtriser deux choses essentiels, la commande "man", nécessaire à votre survie et l'utilisation du terminal. Ainsi, on peut se débrouiller sans tout connaître. ************************************ * Commandes pour afficher une aide * ************************************ man : affiche les pages du manuel de la commande apropos : donne une brève description de la commande info : n'est pas installer sur PureDyne ********************** * Utilisation de man * ********************** Ca ne prend pas trop longtemps, il faut au moins lire une fois la description de la commande "man" : $ man man On peut voir que man est organisé en plusieurs rubriques. $ man -k signal : recherche du mot dans les pages man $ man -f signal : pages de manuel avec signal. Le chiffre entre parenthèse correspond à une des rubriques. Une fois dans man, quelques commandes sont utiles : "h" : help, affiche les commandes de man "q" : quitter "return" : voir la page suivante "espace" : circuler dans la page "SHIFT"+"/" : trouver une chaine de caractère (un motif). Après avoir entrer le texte à rechercher, appuyer sur entrée. "n" : pour naviguer vers le motif trouvé suivante "p" : pour naviguer vers le motif trouvé précédente "t" : début *************************** * Utilisation du terminal * *************************** touche "TAB" : complétion des mots. Très utile ! echo $TERM : quel est le terminal utilisé echo $SHELL : quel est le programme shell utilisé. C est la touche "Ctl" ^ est la touche "Ctl" aussi M est la touche Méta, la touche "Alt" C-l : nettoyer le terminal C-a : pour aller au début de la ligne C-e : pour aller à la fin M-f : se déplacer de mot en mot M-b : meme chose mais en arrière C-f : lettre par lettre C-b : meme chose mais en arrière C-u : effacer toute la ligne M-u : met en capital le mot suivant C-k : effacer tout ce qui est derrière le curseur Flèches ------- gauche et droite pour bouger le curseur dans la ligne de commande. haut et bas pour sélectionner les commandes précédentes Historique des commandes ------------------------ history : Affiche les dernières commandes que vous avez lancer et leur numéros. Vous pouvez alors utiliser copier et coller. !! : rappeler la dernière commande. Par exemple, sudo !! : lancer la dernière une commande avec les droits du superutilisateur sudo. !103 : rappeler une commande par son numéro !cat : rappeler la dernière commande avec le début d'une chaîne de caractères ^more^less : substitution sur la dernière commande more !* : lancer une autre commande avec les mêmes arguments Copier coller ------------- - Sélection avec la souris pour copier, appuyer sur la molette pour coller. - Ou bien Ctl-Insert et Shift-Insert - Ou bien Ctl-Shift-C et Ctl-Shift-V (ne marche pas dans PureDyne) ************************************** * Commandes de base sur les fichiers * ************************************** pwd (print working directory) : on est dans quel répertoire ? cd (change directory) : se déplacer dans le répertoire cd : tout seul, nous fait aller dans notre répertoire utilisateur. cd .. : aller dans le répertoire parent. cd ~ : la même chose. le caractère tilde "~", est un alias pour désigner le répertoire utilisateur. "cd /home/jerome/Test" est la même chose que "cd ~/Test" ls ls -a : affiche tout "." (dossier courant), ".." (dossier parent), .bashrc, etc... ls -F : ajoute / aux dossiers ls -l : format long, trier par nom ls -d : directory ls -R Rep : récursivité ls -r : ordre inverse ls -c : trier selon date de modification ls -s : affiche la taille de chaque fichier, en blocs trie selon le MODE plutôt que le nom : aucun -U, extension -X taille -S date -t version -v ls -S : trier selon taille ls -h : human pour afficher la taille ls -Shl ls -FSsh | grep -Ev '*/' : affichage uniquement des fichiers classés par taille ls -FSsh | grep -Ev '*/' | grep -Ev '^4,0K' ls -FSsh | grep -Ev '^4,0K' cp source destination cp -rf ~/Test/*.jpg /media/cleusb/images/ : copier tous les fichiers se terminant par .jpg file * | grep -Ev 'directory' file -b * file -N * touch : modifier l'horodatage d'un fichier touch sur un fichier existant = rien, sinon il le crée touch -t 2001010000 f4 : fichier avec la date 1er janvier 2020 à 00h00min chmod : modifier les droits a (all), u (user), g (group), o (other) + (ajouter des droits) ou bien "-" (en enlever) r,w,x,t chmod -R a+rwx ./Test : donne des droits de lecture (r), écriture (w) et d'exécution (x) à tout le monde (a) sur l'ensemble du répertoire ./Test, ainsi qu'à tous ses sous-répertoires (-R pour récursivité). chown : changer les droits du propriétaire rm : supprimer un fichier rm test.txt rm -rf : supprimer un répertoire (-r pour la récursivité et -f pour forcer la suppression même si le dossier n'est pas vide) rm -rf ~/Bureau/Test/* : supprime tous les fichiers du répertoire ./Test mv : renommer un fichier ou un répertoire ln -s : créations de liens symboliques ln -s f8 f4 : déclarer f4 comme lien symbolique sur f8 ln -s source destination wc : compter les mots, caractères, lignes dans un fichier wc -c : bytes wc -w : word wc -l : ligne cat cat -n essai : affiche aussi les numéros des lignes head essai : 10 premières lignes tail essai : 10 dernières lignes head -n 25 essai : 25 lignes head -v essai essai1 essai2 : tous les fichiers, v = verbose tail -f tmp.txt --follow[={nom|descripteur}] afficher les dernières données ajoutées au fur et à mesure que le fichier s’accroît diff -c essai1 essai2 : différences entre deux fichiers cat README | pager : pour afficher un fichier trop long. more ou less ou pager commandes : ' ', 'b', 'f', '/motif', 'n', 'v', '^l', '=', '!', ':n', ':p' dirname Rep/R1/f9.text => Rep/R1/ basename ./Shell/tmp.txt => tmp.txt basename ./Shell/tmp.txt .txt => tmp du Shell* du -s Shell* du -sh -s: rend la somme des tailles de tous les fichiers dans le répertoire donné. df -h Affiche les informations d’espace disque pour tous les systèmes de fichiers disponibles sur le système. find : trouver un nom de fichier find /usr/share -name "*bash*" find . -exec grep -l "ligne" {} \; : quels sont les fichiers qui ont "ligne" dedans find /usr/include -print -exec grep 'scanf' {} \; quels sont les fichiers de /usr/include qui contiennent le mot scanf (~) % find /usr/lib/pd -name "*ascii*" : trouver tous les fichiers (pour Pure Data ici), qui ont "ascii" dans leur noms. /usr/lib/pd/extra/pidip/pdp_ascii-help.pd /usr/lib/pd/extra/gridflow/doc/flow_classes/ascii_to_f-help.pd /usr/lib/pd/extra/gridflow/doc/flow_classes/ascii-help.pd /usr/lib/pd/extra/gridflow/abstractions/ascii_to_f.pd /usr/lib/pd/extra/gridflow/abstractions/ascii.pd /usr/lib/pd/extra/unauthorized/blm/ascii_people.blm /usr/lib/pd/extra/iemlib/prepend_ascii-help.pd grep --help. Trouver un motif dans un fichier. Affiche les lignes contenues dans des fichiers qui répondent au pattern. grep -w : que le mot en début ou fin grep -v : inverse la sélection grep -i : insensible à la casse grep -n : affiche le numéro de ligne grep -c : affiche juste le nombre de lignes de la sélection grep -l : que les noms de fichiers grep -e : on protège le fichier commençant par '-' par exemple grep -E : expressions régulières étendues grep -o : affiche que l'expression filtrée locate : recherche à partir d'une base de donnée locate lst | grep sty sort -k3 -n -u notes : on trie le champ 3 qui correspond aux notes en ordre décroissant numérique. On élimine les doublons sort -k1,1 sort -t '.' -k3 : séparateur dd : convertir et copier un fichier dd if=/dev/zero of=zeros bs=10M count=1 : créer un fichier zeros de 10Mo contenant que des 0 (/dev/zero) unzip pix_mano-src.zip : décompresser un .zip gzip tar xvf archive.tgz : Extraire tous les fichiers d’une archive tar zcvf archive.tgz archive : Compressez ************* * CARACTERES SPECIAUX * ************* Chaque processus a : - une entrée standard (numéro 0) - une sortie stanard (numéro 1) - une sortie d'erreur (numéro 2) > : redirection de la sortie standard < : redirection de l'entrée standard >> | : pipe history > ~/Bureau/history.txt echo "bonjour" > test.txt : vide et ajoute "bonjour" dans le fichier "test.txt" echo "c'est moi" >> test.txt : ajoute "c'est moi" à la fin du fichier. ls /nosuchplace 2> /tmp/errors : permet de ne pas afficher la sortie d'erreur "2>" dans le terminal mais dans un fichier. *************** * Utilisateur * *************** sudo su who whoami groups id chmod chown adduser addgroup ************** * Programmes * ************** which pdextended : connaître le chemin du programme which ls Compression/Décompression ------------------------- tar zxvf qc-usb-X.XX.tar.gz Texte ----- mousepad fichier.txt gedit fichier.txt nano .asoundrc : éditeur de texte dans le terminal. Les commandes sont commentés lorsqu'on le lance. Image ----- risoletto xxx/P1040636.JPG eog P1.jpg PDF --- evince paperduino.pdf ************************* * Gestion des processus * ************************* “Tout dans Unix est fichier Tout dans Unix qui n'est pas un fichier est un processus” - Instance d'un programme en cours d'exécution - Plusieurs instances d'un même programme peuvent s'exécuter en même temps - Données associées aux processus: ouvrir un fichier, mémoire allouée, pile, id processus, parent, priorité, état... man ps ps --help ps uxw ps uxww : coupe à la ligne quand la ligne dépasse l'écran. 2 lignes = 2 "w". w = wide ps ax : a : tous les processus de tous les utilisateurs / x : sans terminal de contrôle TACHES ------ Linux = multi tâches top : afficher les tâches top -s 1.0 :affichage toutes les secondes ou top -d (delay) h : help u : user z : color x : highlight sort field n : nombre de processus < ou > : changer de champ pour le tri R : normal ou reverse sort k : kill with signal : 9 ps ux | grep jr PID: (Process ID) Identifiant du processus VSZ: (Virtual SiZe)Taille virtuelle du processus (code + données + pile) RSS: (ReSident Size) Nombre de Ko occupés en mémoire TTY: (TeleTYpe) Terminal STAT: Statut: R (Runnable: exécutable), S (Sleep: endormi), W (paging: en cours de pagination), Z (Zombie)... JOB-CONTROL ----------- Plusieurs processus à faire tourner dans un même terminal. Ensemble des services offerts pour lancer plusieurs processus, suspendre ou arrêter l'activité de certains, les passer en avant ou arrière plan. Il ne peut y avoir qu'un processus en avant, auquel est connecté l'entrée du terminal. lancer à partir du shell vim et vim& jobs jobs -l man gcc C-z => en arrière plan = suspendre bg 2 : mettre en arrière plan fg 1 : mettre en avant plan jobs kill %numerojobs xkill : en mode graphique SIGNAUX ------- communication entre processus liste des signaux : man 7 signal kill -l -9 = SIGKILL kill -s SIGTSTP 10725 kill -20 10725 C-z = signal SIGTSTP au processus courant ps aux | grep pd : afficher tous les processus qui ont "pd" dans leur nom kill -9 1814 : envoi du signal 9 (KILL) au processus dont l'identifiant (PID) est 1814 killall pd xkill : tuer un processus avec la souris *************************** * Installer des logiciels * *************************** ************** *** Méthodes * ************** De préférences, utiliser le système de paquets automatique. Si le logiciel ne peut être téléchargé et installé via ce système, alors on peut télécharger un dossier compressé ou un paquet .deb. Pour les fichiers compressés, les décompresser et lire le fichier README. En général, il faut exécuter ces trois commandes : ./configure make make install Pour les paquets .deb téléchargés manuellement, écrire cette commande devrait suffire : dpkg -i monpaquet.deb ************* *** Paquets * ************* Soit utiliser "aptitude" en ligne de commande, soit utiliser le programme graphique "Synaptic". clic droit sur Bureau > Applications > Système > Gestionnaire de paquets Synaptic Avant tout, faire une mise à jour avec "update" et "upgrade": > aptitude update > aptitude upgrade Le système de paquets fonctionne grâce à des liens sur Internet, des ordinateurs qui ont tous les paquets de notre distribution Linux. Ce sont des sources de dépôts ou des "repisitory" en anglais. Le fichier /etc/apt/sources.list recense tous ces liens spéciaux. Une façon de l'éditer graphiquement est possible avec synaptic. Des fois il est utile de rajouter une source de dépôt via ce procédé, car on ne peut trouver le logiciel que l'on veut. ************** *** Chercher * ************** > aptitude search Premier caractère p : the most common states are p, meaning that no trace of the package exists on the system, c : meaning that the package was deleted but its configuration files remain on the system, i : meaning that the package is installed, and v : meaning that the package is virtual. Second caractère The second character indicates the stored action (if any; otherwise a blank space is displayed) to be performed on the package, with the most common actions being i, meaning that the package will be installed, d, meaning that the package will be deleted, and p, meaning that the package and its configuration files will be removed. If the third character is A, the package was automatically installed. *************** *** Installer * *************** sudo aptitude install audacity seq24 qjackctl *************************************************** * SCRIPT ENLEVER LES ACCENTS DES NOMS DE FICHIERS * *************************************************** Fichier "accents.sh" #!/bin/bash export TEMP=`mktemp` find . > $TEMP while read i; do mv "$i" "$(echo $i | sed 'y/àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ/aaceeeeiioouuAACEEEEIIOOUU/')"; done < $TEMP rm $TEMP $ sh ./accents.sh : exécuter le script ********************************************** * Informations système en ligne de commandes * ********************************************** * apropos - Brèves définitions via un mot clé * cat /proc/cpuinfo - Informations sur le(s) processeur(s). * cat /proc/version - Informations sur la version du noyau Linux. * df - Connaître l'occupation des disque. * dmesg - Afficher les messages du noyau. * free - Afficher l'utilisation mémoire. * lsmod - Lister les modules du noyau chargés. * lspci - Lister les bus PCI. * mount - Afficher les périphériques montés. * printenv - Afficher les variables d'environnement. * ps - Connaître les processus actifs. * top - Afficher l'activité du système en continu. * uname - Connaître le type du système. * uptime - Depuis quand votre machine tourne ? * vmstat - Avoir des stats sur la mémoire virtuelle. * who & w - Connaître les utilisateurs logués. apropos - Brèves définitions via un mot clé Cette commande affiche une brève définition des commandes en rapport avec un mot clef. Cherchons les commandes linux: $ apropos linux cat /proc/cpuinfo - Informations sur le(s) processeur(s) Pour connaître les informations sur son ou ses processeur(s). Le vendeur, la taille du cache, la fréquence en GHz ou MHz, les drapeux (flags) utilisés lors de la compilation d'un noyau personnalisé, par exemple: $ cat /proc/cpuinfo cat /proc/version - Informations sur la version du noyau Linux Pour connaître la version de son noyau Linux, son nom, la version du compilateur utilisé: $ cat /proc/version df - Connaître l'occupation des disque La commande df permet de connaître l'utilisation de l'espace disponible sur partitions montées du système. Lancée avec l'option -h ou --human-readable, la commande affiche les informations avec une lecture plus compréhensible: $ df ou: $ df -h dmesg - Afficher les messages du noyau Afficher les messages des commande du noyau Linux. Tout les message depuis le dernier démarrage ou redémarrage sont visible, en fonction de la taille du tampon: $ dmesg Pour effacer le tampon il faut être root: # dmesg -c free - Afficher l'utilisation mémoire Afficher l'utilisation en kilo-octect de la mémoire vive (RAM) ainsi que de la mémoire d'échange swap: $ free Afficher l'utilisation en mega-octect: $ free -m Afficher l'utilisation en mega-octect toutes les 10 secondes: $ free -m -s 10 Pour stopper la commande il suffit de faire Ctrl c. lsmod - Lister les modules du noyau chargés Affiche la liste des modules du noyau actuellement chargé. La commande lsmod est le résultat du répértoire /proc/modules: $ lsmod lspci - Lister les bus PCI Permet de connaître des informations sur les bus PCI du système et les périphériques PCI qui y sont rattachés: $ lspci mount - Afficher les périphériques montés La commande mount permet d'afficher la liste des périphériques montés en ce référant au fichier /etc/mtab. Cette commande fait aussi partie des commandes d'administration, elle est utilisée pour monter des media tel que des disques dur ou clés usb. Par exemple la commande # mount -a montera tous les systèmes de fichiers définis dans /etc/fstab. $ mount printenv - Afficher les variables d'environnement La commande printenv permet d'afficher les variables d'environnement de l'utilisateur: $ printenv ps - Connaître les processus actifs La commande ps permet de connaître les processus actifs à un moment donné et d'afficher le PID identifiant un processus. Chaque processus est identifié dans le système par un nombre unique. Cette commande indique à quel port de terminal est associé le processus, l'état dans lequel se trouve le processus, et indique depuis combien de temps le processus utilise les ressources du microprocesseur. Pour avoir quelques informations: $ ps Pour afficher tous les processus: $ ps -A plus d'infos avec: $ ps aux IL y a beaucoup de possibilités avec ps, pour les connaîtres: $ man ps pstree - Processus en arborescence La commande pstree permet d'afficher les processus sous forme d'arborescence afin de voir leurs inter-dépendances: $ pstree top - Afficher l'activité du système en continu Afficher des informations en continu sur l'activité du système. Cette commade permet de suivre les ressources que les processus utilisent (quantité de RAM, pourcentage de CPU, la durée de ce processus depuis son demarrage): $ top Pour quitter, appuyer sur la touche q: uname - Connaître le type du système Cette commande permet de savoir le type du système. En utilisant l'option -a on obtient plus d'informations, dont la version du noyau, le nom de machine (hostname), plus l'heure et la date: $ uname ou: $ uname -a uptime - Depuis quand votre machine tourne ? Afficher le temps depuis lequel le système n'a pas redémarré: $ uptime vmstat - Avoir des stats sur la mémoire virtuelle Afficher les statistiques sur la mémoire virtuelle: $ vmstat Pour afficher les tables de la mémoire virtuelle: $ vmstat -s Pour afficher les tables du disque: $ vmstat -D who & w - Connaître les utilisateurs logués Les commande who et w perment de connaître quels utilisateurs sont logués sur le système et ce qu'ils font: $ who ou: $ w