Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

consoleCommandes et Shell avancés sous Linux

Utilisation "avancée" de commandes Shell, suivi de guides complémentaires détaillés pour progresser en mode console sous Linux.

Détail sur l'utilisation de commandes SHELL

Détails sur certaines commandes courantes et de leurs options utiles.

Connaître / surveiller l'état du système GNU/Linux

Commande 'free' : combien de RAM utilise mon système ?

$ free -m
            total       used       free     shared    buffers     cached
Mem:           501        192        309         0          8        149
-/+ buffers/cache:         34        467
Swap:          980          0        980

Bon, combien de mémoire vive ce système utilise-t'il ?
501 ? Non, c'est la mémoire totale installée et utilisable.
192 ? Non plus.
Alors, combien ?
Voici ce que dit free :

- RAM totale = 512 Mo
- RAM accédée = 192 Mo
- RAM bufferisée et mise en cache (très vite accessible par toute appli) = 8 + 149 = 155 Mo
- RAM utilisée par les applis (non accessible par d'autres) = 34 Mo
- Swap utilisé = 0 Mo

Un autre exemple sur un PC desktop MDV 2008 avec KDE et qlqs applis grosses et petites ouvertes :

$ free -m
            total       used       free     shared    buffers     cached
Mem:          1003        993          9          0         14        656
-/+ buffers/cache:        323        680
Swap:         2055          0       2054

- RAM totale = 1003
- RAM accédée = 993
- RAM bufferisée et mise en cache (très vite accessible par toute appli) = 14 + 656 = 660 Mo
- RAM utilisée par les applis (non accessible par d'autres) = 323 Mo
- Swap utilisé = 0 Mo

Rappel : la RAM est là pour être utilisée, sinon vendez-là !o) De fait, la mémoire vive non utilisée est de la mémoire vive gâchée. Au contraire du Swap qu'on a, pour simplifier, intérêt à limiter au maximum)

Une source :
  - Troubleshooting Memory Usage http://rimuhosting.com/howto/memory.jsp

Connaitre la taille réelle des fichiers / taille en blocks ou en octects

Normalement c'est simple. En mode graphique on ouvre le gestionnaire de fichiers (ex : konqueror, nautilus...), en mode console on lance ls -lh sur un fichier ou un rép : ces programmes affichent la taille du ou des fichiers.
Oui, mais ça n'est pas toujours le cas, ces programmes affichant la taille en blocks :

taille_fichiers_konqueror
Problème : SabayonLinux-x86-3.4e.iso n'est pas encore téléchargé, et n'occupe que 0 octets sur le disque...

Exemple 1 : 'find -size'

$ find *Sabayon* -size +600M -print
SabayonLinux-x86-3.4e.iso
SabayonLinux-x86_64-3.4e.iso
SabayonLinux-x86-3.4.miniEdition.iso
Sabayon-x86_64 1.1 PE/Sabayon-x86_64-1.1-ProfessionalEdition.iso

La commande 'find -size +[taille]' a la même limitation

Exemple 2 : 'ls'

$ ls -Skl Sabayon*iso
-rw-r--r-- 1 user group 4584552 2008-01-23 09:34 SabayonLinux-x86_64-3.4e.iso
-rw-r--r-- 1 user group 4357286 2008-01-23 09:34 SabayonLinux-x86-3.4e.iso
-rw------- 1 user group 714748 2007-10-24 11:28 SabayonLinux-x86-3.4.miniEdition.iso
Sabayon-x86_64 1.1 PE:
total 2270908
-rw-r--r-- 1 user group 2268684 2007-12-05 02:35 Sabayon-x86_64-1.1-ProfessionalEdition.iso

Explication : ls -l ou ls -S donnent la taille d'un fichier en blocs sur le disque. Or les programmes p2p (ici rtorrent) allouent/réservent la taille finale en blocks du ou des fichiers téléchargés dès le début du téléchargement. Exemple : un fichier de 4 Go peut se voir allouer sa taille finale en blocks, avant qu'on ai téléchargé 1 seul Ko.

Il faut utiliser l'argument -s pour afficher donne la taille réelle (en octets) :

$ ls -s Sabayon*iso
0 SabayonLinux-x86-3.4e.iso 715452 SabayonLinux-x86-3.4.miniEdition.iso 0 SabayonLinux-x86_64-3.4e.iso
Sabayon-x86_64 1.1 PE:
total 2270908
2270904 Sabayon-x86_64-1.1-ProfessionalEdition.iso

Utilisez les arguments -slrk pour afficher les informations complètes (-l pour le détail, -r récursif et -k en Ko).
La taille réelle est le premier chiffre à gauche, et la taille en blocks :

715452 -rw------- 1 user group 714748 2007-10-24 11:28 SabayonLinux-x86-3.4.miniEdition.iso
4 -rw-r--r-- 1 user group 60 2007-08-10 12:50 SabayonLinux-x86-3.4e.iso.md5

Sabayon-x86_64 1.1 PE:
total 2270908
4 -rw-r--r-- 1 user group 77 2007-12-05 02:35 Sabayon-x86_64-1.1-ProfessionalEdition.iso.md5
2270904 -rw-r--r-- 1 user group 2268684 2007-12-05 02:35 Sabayon-x86_64-1.1-ProfessionalEdition.iso

Exemple 3 : 'file'

La commande file affiche de quelle sorte de fichier il s'agit :

$ file Sabayon*iso
SabayonLinux-x86-3.4e.iso: data
SabayonLinux-x86-3.4.miniEdition.iso: ISO 9660 CD-ROM filesystem data UDF filesystem data (unknown version, id 'NSR01') 'Sabayon Linux x86 ' (bootable)
SabayonLinux-x86_64-3.4e.iso: data

Exemple 4 : 'stat'

stat affiche toutes les informations, dont la taille en blocks et en octets :

$ stat Sabayon*iso
File: `SabayonLinux-x86-3.4e.iso'
Size: 4461860864 Blocks: 0 IO Block: 4096 fichier régulier
File: `SabayonLinux-x86-3.4.miniEdition.iso'
Size: 731901952 Blocks: 1430904 IO Block: 4096 fichier régulier
File: `SabayonLinux-x86_64-3.4e.iso'
Size: 4694581248 Blocks: 0 IO Block: 4096 fichier régulier

Exemple de commande pour lister tous les fichiers d'un répertoire de taille réelle = 0 :
$ ls -slk * |grep " 0 -r"

Sources :

Guides sur les commandes SHELL

Aller plus loin avec le Shell.

  • An A-Z Index of the Linux BASH command line, sur lequel on trouvera également un intéressant "Linux bash syntax" (bouton "Syntax").
    http://www.ss64.com/bash/index.html.
  • Toutes les commandes sous GNU/Linux : 687 commandes détaillées (anglais)
    http://www.oreillynet.com/linux/cmd/.
  • Articles "Scripts Shell", "Une introduction aux expressions régulières", "Une introduction à Grep", "Une introduction à Awk", "Une introduction à Sed" et "Plus loin avec vim" de Yann Le Thieis sur le wiki de tuxcoffee.org.
  • BASH Programming - Introduction HOW-TO (TLDP) by Mike G mikkey : Very simple Scripts, redirections, pipes, variables, conditionnels, loopbacks, fonctions, ... :)
  • Un tutoriel GNU/Linux archi-complet sur toutes les bases. Datant de 2001, il reste très valable.
    Concernant les commandes et le Bash :
      4. Basic Commands
      5. Regular Expressions
      6. Editing Text Files
      7. Shell Scripting
      8. Streams and sed -- The Stream Editor
      9. Processes, Environment Variables
      20.7 Useful Scripts and Commands
    Rute User's Tutorial and Exposition.

Guides sur les scripts SHELL

Trop cool pour Internet Explorer