Dominique Meeùs
Dernière modification le  
retour au sommaire Linux

Aide-mémoire de quelques commandes

Pour appliquer une commande, il faut parfois se déplacer, par la commande cd, dans le bon dossier. Celui-ci peut être au bout d’un chemin long et difficile à taper. Il peut même être au bout d’un chemin inconnu : quand le système reconnait automatiquement une clef de mémoire USB ou un appareil de photo, on n’a pas toujours le point de montage exact présent à l’esprit. Le nom de l’extension nautilus-open-terminal de Nautilus dit assez bien ce que ça veut dire : une commande par clic droit qui ouvre un terminal au niveau du dossier choisi dans Nautilus. Moins de cd pour travailler en ligne de commande. Ça vaut vraiment la peine de l’installer.

On peut écrire plusieurs commandes à la suite en les séparant par « ; », « & », « && » ou « || ».

Matériel, dispositifs (devices, lsdev, hwinfo)

La commande lsdev liste pour tous les dispositifs reconnus leur canal DMA, leur interruption et leur port I/O. (Elle est installée par le paquet procinfo.)

Des commandes cat sur des fichiers du système de fichiers /proc donnent aussi beaucoup de renseignements, par exemple cat /proc/meminfo pour la mémoire, cat /proc/cpuinfo sur le processeur. (Je m’aperçois que mon processeur avec SpeedStep change régulièrement de féquence.)

La commande hwinfo est fournie par le paquet du même nom. Les informations renvoyées sont très détaillées. Le résultat à l’écran de la commande hwinfo seule est trop abondant pour être lisible, il vaut mieux demander un rapport écrit par hwinfo --log monrapport.log. La commande hwinfo --short donne une bonne vue d’ensemble du matériel sans être trop bavarde. On peut demander un rapport sur un matériel déterminé comme hwinfo --cpu, aussi en version courte hwinfo --cpu --short. C’est possible pour all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu, disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn, joystick, keyboard, memory, modem, monitor, mouse, netcard, network, partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp, sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip

Dispositifs PCI (lspci)

La commande lspci liste les dispositifs sur le bus PCI.

Dispositifs USB (lsusb)

La commande lsusb liste les dispositifs USB reconnus.

Adaptateurs réseau (ifconfig)

La commande ifconfig liste les adaptateurs réseau reconnus.

Contrôle matériel (acpi) et autres sensors

La commande acpi -t me donnait la température du processeur (autour de 40 °C) dans ma configuration Athlon/MSI.

Avec ma nouvelle configuration Celeron dual core sur carte Asus ça ne marche plus. J’ai dû installer le paquet lm-sensors, utiliser la commande sensor-detect pour savoir quel était le driver approprié à mon matériel et l’activer par modprobe coretemp. La commande sensors me donne alors la température de chacun des deux corps.

(Lors d’une intervention dans la caisse, j’ai trouvé et le ventilateur du processeur Athlon et le bloc à ailettes très sales, gorgés de poussière que l’aspirateur n’arrivait pas à atteindre, et je les ai démontés pour les nettoyer mieux. J’ai nettoyé les restes desséchés du mastic thermique d’origine et j’ai remis un peu de gel thermique frais avant de remonter le bloc à ailettes. Je tenais ensuite à vérifier que tout ça s’était bien mis.)

Graphique

Copie d’écran (Alt-PrintScreen)

Sous Gnome, Alt-PrintScreen ne se contente pas de copier l’image de la fenêtre active, on obtient une boîte de dialogue proposant de l’enregistrer sous quelque format d’image (png par défaut). PrintScreen copie tout l’écran.

Polices

Le mieux est de n’installer de polices qu’en paquets de la distribution. Cependant, si on doit installer des polices d’autres origines, après avoir copié des fichiers de police dans le dossier /user/share/fonts (ou dans un sous-dossier que l’on peut créer et nommer librement), exécuter comme superutilisateur la commande fc-cache -f -v.

Processus

Examiner les processus actifs (ps)

La commande ps donne des informations sur les processus. En particulier,
ps aux ou ps -ef

donne tous les processus, avec le nom d’utilisateur, tandis que

ps ux

donne tous les processus appartenant à l’utilisateur en cours et que

ps u

ne donne que les processus de l’utilisateur qui tournent dans un terminal en mode texte. On peut chercher le numéro d’un processus connu. Par exemple

ps -C "man bash" ou ps -C man,bash

ne donne que les processus dont la commande commence par man (mot entier, par exemple man ps) ou bash. (Si on sépare les noms par un blanc, il faut nécessairement des guillemets pour que le communtateur -C sache ou la liste se termine. Avec des virgules sans blancs, on a une chaîne continue donc pas besoin de guillemets.) On peut faire aussi

ps aux | grep ortm

pour chercher tout ce qui contient la chaîne "ortm", comme portmap.

La commande top classe les processus dans l’ordre de leur charge imposée au processeur. En pressant M majuscule, c’est dans l’ordre de la mémoire utilisée.

Terminer (kill)

La commande

kill 24523

met fin avec autorité au processus de numéro 24523. Il y a des versions de kill qui permettent d’adresser un processus par sa commande et pas seulement par son numéro, comme kill skype. Ce serait bien pratique mais ce n’est pas le cas dans mon système actuel.

Attention, il y a une commande kill interne à bash. Si on veut la vraie commande kill (celle qui sera documentée par man kill), il faut faire

/bin/kill.

Si un processus tombe en panne, on peut avoir des indications dans /var/crash, qu’il est indiqué de joindre si on signale un bug.

Modules (uname, insmod, depmod, modprobe, lsmod)

uname donne différentes informations système. uname -r décrit le noyau actif. Cela permet en particulier de trouver dans quel chemin /lib/modules/… doivent se trouver les modules.

insmod /lib/modules/chemin/dm9601.ko charge le dm9601.ko par exemple.

depmod examine les dépendances des modules présents dans ce /lib/modules/… et les y incrit dans modules.dep. Si on compile un nouveau module, utiliser depmod -A qui ne cherche que les modules plus récents que le fichier modules.dep et les y inscrit.

modprobe -l liste tous les modules. D’après mon expérience, ce ne sont pas tous les modules présents dans la branche /lib/modules/… mais seulement ceux connus de modules.dep. De même modprobe dm9601 ne chargera pas le driver dm9601.ko s’il est seulement présent sur le disque (même dans le bon chemin !) mais pas connu. Il faut donc utiliser d’abord depmod -A.

lsmod liste les modules en mémoire. On obtient aussi une vue sur les modules actifs par cat /proc/modules.

Disques et fichiers

Contrôler la santé d’un disque (smartctl)

Les disques modernes ont un dispositif SMART qui permet de les interroger sur leur santé. La commande smartctl -a /dev/hda du paquet smartmontools permet de contrôler l’état du disque hda (par exemple). Au besoin, il faut d’abord activer le dispositif SMART du disque avec smartctl -s on /dev/hda. La commande s’adresse à un disque physique, pas à un système de fichiers. On pourrait ainsi prévoir la mort du disque et le remplacer avant de perdre toutes ses données ! (Mon disque va bien, merci.) Il y a aussi un démon pour surveiller le disque de manière régulière. Plus d’information sur smartmontools.sourceforge.net ou www.linuxjournal.com/article/6983.

Renseignements sur disques et partitions (df, hdparm, vol_id)

La commande df -h (disk filesystem) donne l’espace occupé et l’espace restant libre sur le disque et du -h (disk usage) l’espace occupé par chacun des fichiers.

La commande hdparm fournit des renseignements généraux sur le disque, mais peut aussi modifier ses réglages. Ne pas utiliser sans lire la documentation. Voir aussi vol_id qui donne le type de système de fichiers, l’UUID et cetera.

Les disques apparaissent dans /dev et sont répertoriés sous diverses formes (UUID, label…) dans /dev/disk.

Créer un système de fichiers (mkfs)

Par exemple mkfs -t ext3 /dev/hda5 (En fait, mkfs va exécuter un programme mkfs.ext3 spécialisé ext3 par la commande mkfs.ext3 /dev/hda5.) Pour mettre une étiquette, mkfs -t ext3 -L LABEL /dev/hda5 ou, par après, e2label /dev/hda5 LABEL (pour ext2 et ext3).

On peut aussi ajouter un label par tune2fs qui permet bien d’autres choses encore.

La commande df donne la place disponible.

Créer un système de fichier image de CD ou de DVD (genisoimage)

Le contenu prévu pour le CD ou le DVD étant réuni dans un sous-répertoire temporaire ad hoc, disons monCDtemp, la commande
genisoimage -r -o monCD.iso monCDtemp écrit le contenu de ce sous-répertoire dans un fichier image de CD ou DVD nommé monCD.iso. Si vous êtes déjà dans le répertoire monCDtemp (et pas dans son parent), la commande devient
genisoimage -r -o monCD.iso . (où le point, peu visible, ne l’oubliez pas, désigne monCDtemp).

Voir aussi les autres commutateurs de genisoimage par la commande man genisoimage pour voir ce qui est disponible dans la version installée. Pour un DVD, on peut désirer le système de fichiers UDF.

On peut monter une image de CD comme un système de fichiers par mount -t iso9660 -o loop monCD.iso /mnt/monCD pour l’examiner. (Comme toujours pour mount, il faut que le répertoire cible existe.)

D’autres distributions proposent la commande mkisofs.

Copier un CD ou un DVD

Introduire le disque source et le monter, disons en /media/cdrom0 (si ce n’est pas automatique). La commande genisoimage -r -o copie.iso /media/cdrom0 écrit le contenu du disque source dans un fichier image de CD ou DVD nommé copie.iso. Il suffit de graver ensuite ce fichier copie.iso sur un disque vierge.

Graver un CD (wodim)

Il y a des interfaces graphiques pour aider à graver. Avec un Ubuntu récent, il suffit de cliquer du bouton droit sur un fichier iso pour voir la commande Graver. Mais si ça ne marche pas, on peut aussi graver une image de CD sur un disque physique avec wodim -v speed=4 dev=/dev/hdd monCD.iso. Il y a différentes manières de désigner le bon dev=/dev/... Voir les autres commutateurs de cdrecord. On peut réaliser l’image et graver en une seule opération en liant les deux commandes comme suit

genisoimage -r monCDtemp | wodim -v speed=4 dev=/dev/hdd -data -

D’autres distributions proposent la commande cdrecord.

Lister (ls, dir, vdir)

On peut utiliser ls, dir ou vdir.

L’option --color=auto de ls affiche des couleurs différentes selon les types de fichiers (répertoires...)

La commande ls -l donne plus de détails, dont les permissions.

La commande df -h (disk filesystem) donne l’espace occupé et l’espace restant libre sur le disque et du -h (disk usage) l’espace occupé par chacun des fichiers.

Rechercher

La commande find a plein d’options pour rechercher des fichiers. Un exemple simple est

find /chemin -name fich*

La commande locate fich* cherche dans une base de données (pas un chemin). Cette base de données doit être à jour (commande updatedb). Certaines distributions remplacent locate par slocate.

La commande grep cherche dans les fichiers les lignes contenant un texte donné. Par exemple, avec

grep "/Aug/2007:" temp-000000.log > 200708access.log

je sélectionne dans un très long journal de mon site les lignes concernant août 2007 et j’en tire le journal d’août. On peut chercher dans tous les fichiers d’un répertoire et de ses sous-répertoires :

grep -r "lgsllm" /home/mic/Site/

Déplacer avec mv

Des fichiers, des répertoires… encore à étudier.

Renommer avec rename et mv

On peut avec mv « déplacer » un fichier vers un fichier d’un nom différent pour le renommer.

La commande rename utilise des expressions régulières. Par exemple,

rename "s/\.JPG$/\.jpg/" *.JPG

remplace par l’extension .jpg l’extension .JPG de tous les fichiers *.JPG

Copier (cp)

On copie avec cp. L’option -u ou --update empêche la copie qui écraserait des cibles de date égale ou plus récente (ne copie donc que des fichiers source nouveaux, ou strictement plus récents que leur cible).

La commande dd permet de contrôler des conversions en cours de copie. Par exemple, la commande

dd if=boot.img of=/dev/fd0 bs=1024 conv=sync ;

copie le fichier image de disquette boot.img sur une disquette.

Mettre à jour (rsync)

Pour les mises à jour, les archivages, la commande rsync est plus pratique et plus sûre que cp -u. Elle est concue pour sadresser à des serveurs distants mais elle est utile même en usage local. Utiliser par exemple -rutv --exclude=".*" --exclude="*~" /home/user/ /home/archives (r pour les répertoires, u pour vérifier plus récent, t pour copier avec date et heure, v pour verbeux, pas les dossiers ou fichiers cachés commençant par un point, pas les backups commençant par un tilde). Respecter la / finale. Ceci va copier le contenu de /home/user dans /home/archives. Avec --delete, on peut entretenir un miroir où lon efface ce qui doit lêtre, chose la plus ennuyeuse quand on doit le faire manuellement.

Attention que le système de fichiers vfat ne marque pas le temps avec la même précision que Linux. Si on veut mettre à jour une clef USB, on risque que tout soit recopié chaque fois parce que paraissant nouveau d’une fraction de seconde. Pour éviter cela, prendre une marge de sécurité de, mettons, deux secondes avec la mention --modify-window=2.

Entre deux machines, il faut que les deux exécutent rsync. Ce n’est donc pas un bon moyen de maintenir un site à jour par FTP, à moins que l’hébergeur exécute rsync.

Lien symbolique

On crée un lien symbolique avec cp -s ou --symbolic-link.

Naviguer dans les répertoires cd, nautilus)

On change de répertoire avec cd.

À un certain moment, Gnome a fait passer son navigateur de fichiers Nautilus en « mode spatial » par défaut (dans le style de l’interface graphique d’Apple pour le Mac). On le démarre en mode navigateur (avec une colonne de gauche où l’on peut afficher, entre autres, l’arborescence) par la commande

nautilus --browser

Copier d’un serveur distant (wget)

La commande

wget -r -L -l 3 http://www.telsite.org/truc/machin/

va copier ce dossier en suivant les liens (récursivement -r) qui ont la même adresse de base (-L) jusqu’à trois niveaux de profondeur (-l 3, par défaut c’est 5, on ne risque pas un téléchargement illimité si on oublie de fixer la profondeur).

Avec le commutateur --spider, wget ne copie rien mais indique ce qui serait copié. Cela peut servir à contrôler les liens d’un site ou d’une page. Par exemple avec la commande :

wget --spider -nv -o wgetbookmarks.log --force-html -i bookmarks.html

wget écrit des messages d’erreur pas trop bavards (-nv) dans le fichier de sortie wgetbookmarks.log sur les tentatives de copier (fictivement --spider) les pages dont l’url est lu dans le fichier d’entrée bookmarks.html, lequel n’est pas lu comme un simple fichier texte mais comme html (--force-html). En fait le résultat est très mauvais et l’opération très longue. Des outils spécialisés comme le paquet linkchecker peuvent se montrer plus rapides. Il y a aussi des sites comme le W3C Link Checker ou le Free Broken Link Checker qui vérifient les liens d’un site donné.

Propriétaire (chown)

On change de propriétaire par la commande chown. Exemple :

chown owner:group fichier, chown -R owner:group répertoire

(-R pour les sous-répertoires).

Permissions (chmod)

On attribue les permissions par la commande chmod.

Mon problème est que, dans diverses manipulations d’une installation à l’autre, d’une partition à l’autre et d’un propriétaire à l’autre, de nombreux documents ont reçu la permission d’exécution. (Si on double-clique un document soi-disant exécutable, on doit choisir si on veut le lancer ou l’afficher. C’est chiant.) Je veux retirer cette permission globalement. Example à ne pas suivre :

chmod -R u=rw,g=r,o= *

En effet, cette commande s’appplique aussi aux sous-répertoires et à leurs fichiers (-R). Elle leur donne uniquement (=) lire et écrire pour user, lire pour group et rien pour others. (Avec + on ajouterait des permissions aux permissions existantes, avec - on retirerait des permissions.) C’est mauvais parce que la permission x est retirée aux sous-répertoires qui en deviennent inaccessibles. (Du coup, les fichiers qu’ils contiennent ne sont même pas traités.) Mieux (attention, avec X majuscule) :

chmod -R u=rwX,g=rX,o= *

Cela répare les dégâts causés par la commande précédente : cela rétablit l’accès aux répertoires, mais rend aussi exécutables tous les fichiers qui l’étaient déjà pour qui que ce soit. Cette commande ne convient donc pas pour retirer la permission d’exécution aux documents. Pour assurer un traitement différent aux répertoires et aux fichiers, il semble que l’on doive passer par find en jouant sur le type d ou f. On doit écrire quelque chose comme :

find /home/archives -type d -exec chmod u=rwx,g=rx,o= {} \;

find /home/archives -type f -exec chmod u=rw,g=r,o= {} \;

Dans cette expression, find cherche tous les répertoires (-type d) — respectivement les fichiers ordinaires (-type f) — et exécute (-exec) la suite de l’expression terminée par \;. Dans cette suite, chmod attribue les permissions (indiquées) à {} qui repésente le nom du fichier trouvé par find. Non seulement, c’est une jolie expression, mais ça marche et ça donne le résultat que je voulais.

Utilisateurs et groupes

Le fichier /etc/passwd donne les utilisateurs et leur groupe principal. Le fichier /etc/groups donne les groupes avec leurs membres. La commande adduser crée un utilisateur. La commande passwd suvie d’un nom de login propose de modifier son mot de passe.

Paquets (packages)

Installer (apt-get, dpkg)

Pour choisir ses paquets, les installer et faire régulièrement des mises à jour intelligentes, le mieux est d’utiliser Synaptic sous Gnome. Si on connait le paquet que l’on veut installer, apt-get install nomdupaquet est très simple. À défaut de Synaptic, aptitude est réputé préférable à dselect. Pour des paquets qui ne sont pas dans les miroirs habituels, on peut les télécharger dans un répertoire local comme /usr/debs, ou simplement sur le Bureau ou Desktop si on n’a pas l’intention de les conserver, et faire dpkg -i nomdufichier.deb. (Plus...)

Pour mettre à jour, le système doit savoir ce qu’il y a de nouveau dans les dépôts : apt-get update. La mise à jour proprement dite est obtenue par apt-get upgrade. Avec apt-get dist-upgrade on aura en outre en cas de conflit un arbitrage favorisant les paquets plus importants.

La commande dpkg --get-selections donne la (longue) liste des paquets installés. On peut la filtrer avec grep, par exemple dpkg --get-selections | grep dbus.

La commande dpkg -l package donne l’état du paquet package et dpkg -L package donne son contenu en fichiers et leur emplacement. Cette information est contenue dans le fichier /var/lib/dpkg/info/package.list dont la date est la date d’installation. Le jounal /var/log/dpkg.log donne le détail de l’histoire des dernières installations. Pour remonter plus loin, voir /var/log/dpkg.log.1 et cetera.

Étudier apt-get clean, apt-get autoremove et le paquet deborphan pour le nettoyage du système après des désinstallations de paquets.

Reconfigurer (dpkg-reconfigure)

Comme son nom l’indique, dpkg-reconfigure reconfigure des packages debian. Exemples utiles : xserver-xfree86, ou xserver-xorg, locales.

Retour en haut de la page