Français

Astuces sous gnu/Linux

Il arrive quelques fois que l'on souhaite faire des choses originales, ce document est ici pour montrer quelques usages que certains caractériseraient de compliqué. On pourrait aussi me qualifier de celui qui cherche la petite bête. Dans tous les cas ces astuces permettent de voir différentes utilisations que les systèmes unix nous fournissent.

Pourquoi des astuces sous gnu/Linux

gnu/Linux et les autres unix, sont des systèmes cherchant à offrir aux utilisateurs un grand nombre de fonctionnalités. En particulier :

Il est évident qu'il n'est pas possible de les couvrir toutes. Elles sont bien trop vastes. Cependant un nombre limité de celles-ci permettent souvent de couvrir une part raisonnable des fonctionnalités du système. Par leurs combinaisons ces astuces permettent de couvrir approximativement les différents besoins.

Astuces de manipulation de fichiers

Rediriger le flux

En plus de l'écriture dans des fichiers, les programmes disposent de deux sorties :

lorsque l'on redirige les flux on le fait soit : On peut parfois souhaiter rediriger le second vers le premier.

# hdparm 2> /tmp/out
# hdparm 2>&1 | less
Dans le premier exemple cas on redirige la sortie erreur dans un fichier. La sortie standard n'ira pas dans ce fichier. Dans le second exemple on mélange les deux sorties, on utilise la commande less pour visualiser les sorties de la commande.

Mesurer la vitesse de sortie d'un programme

Il est possible de mesurer à l'aide de la commande dd la vitesse d'un flux de sortie d'un programme, il suffit pour cela de rediriger ce flux vers la commande dd. On redirige la sortie de celui-ci vers /dev/null. Ceci se fait de la façon suivante :

./program | dd of=/dev/null

Vérifier un flux

<-- par l'utilisation de la commande tar ( on notera au passage que le format de compression tar stock des informations de dates de modification, d'utilisateur et de permission de fichier ). --> Lorsque l'on transfère des données au dessus du réseau à l'aide de la commande netcat ( ou en local ) et que l'on souhaite vérifier les données transmises aussi bien du poste émetteur que du poste récepteur de cette information, on peut utiliser la procédure suivante : mkfifo fifo

md5sum fifo &

tee tar -c l | tee fifo > l.tar

On obtient ainsi lors de l'écriture de l'archive sur le disque la somme numérique du fichier. De la même façon on pourrait sauvegarder le fichier sur un autre disque dur et parallèlement à cela l'envoyer sur le réseau vers une autre machine.

tr une commande bien pratique

La commande tr permet deux types d'usages :

La console

Bloquer la console

La console peut être bloquée à l'aide de la commande vlock.

Pouvoir disposer de plusieurs consoles débranchables et rebranchables en une seule

La commande screen permet de faire cela. Il existe d'autre part aussi la commande nohup qui redirige la sortie du programme vers le fichier nohup.out.

Les processus

Les programmes sont la clé tournante du systèmes. On peut interagir de différentes façons avec eux, on peut notamment les arrêter ou les bloquer, à l'aide des signaux SIGTERM, SIGSTOP, SIGCONT qui permettent d'arrêter, de bloquer et de debloquer un processus. On peut aussi envoyer un signal qui est de toute façon fatal : le signal 9. Les numéros des signaux précédents sont respectivement : 15 18 et 19. On peut les envoyer à l'aide de la commande kill -signal pid, où pid est le numéro du processus.

Il peut être intéressant d'envoyer un signal à un processus en utilisant son nom. On peut pour cela utiliser

Réserver une ressource


Ceci peut se faire dans les scripts à l'aide de la commande lock. On en trouve une description dans la page du manuel de bash, il est d'autre part possible d'ouvrir à l'aide du shell des flux d'entrées supplémentaires.

Le shell

Renommer des fichiers rapidement

On souhaite parfois juste changer l'extension d'un fichier, cela peut se faire de la façon suivante :

mv fichier.{txt,sav}

En réalité {txt,sav} permet de dupliquer l'entrée fichier et d'obtenir ainsi fichier.txt et fichier.sav comme argument de la commande mv.