Trucs et Astuces
des petits trucs...

 

La plupart des trucs et astuces de cette page viennent d'autres sites ou de revues... je ne suis malheureusement pas encore assez expérimenté pour m'en dépatouiller seul avec ce "..." shell. Voici néanmoins ces quelques trucs, qui répondent à des problèmes qui se posent souvent. N'hésitez pas à me laisser un message si vous vous avez un "truc" ou des petits problèmes dont la réponse ne figurent pas ici.

  1. Rediriger les messages du systèmes vers un terminal virtuel.
  2. Monter au démarrage des partitions non linux.
  3. Activer la touche NUM-LOCK sous la console et sous X.
  4. Activer la roulette des souris sous X.
  5. Changer le mode de démarrage par défaut.
  6. Alléger son kernel en utilisant les modules.
  7. Permettre le gravage sur des graveurs IDE.
  8. Comment faire quand on arrive plus à booter ?
  9. Comment je sais si mon système est basé sur libc5, Glibc 2.0...
  10. Comment piloter le serveur POP de mon provider pour virer les trop gros mails, etc.
  11. Rechercher un fichier sur internet en une seule ligne de commande
  12. Travailler sur un ensemble de fichiers (effacer récursivement, rechercher, renommer...)

Tous les trucs et astuces proviennent de http://lealinux.free.fr/

Rediriger les messages du système vers un terminal virtuel

En effet, le système envoie tout le temps des messages d'avertissement, d'information, d'alerte etc. Par défaut ils vont dans un fichier. C'est bien, mais quand on a un problème, se taper les 25000 lignes du fichier pour trouver le message d'erreur datant de 10 secondes c'est un peu pénible... Pour arranger cela on va aussi envoyer ces messages à l'écran, pas question de l'envoyer aussi sur un écran qui nous sert à travailler : c'est pénible de recevoir des messages toutes les secondes à l'écran, mais comme Linux (Unix) est très bien fait avec ses terminaux virtuels, on va envoyer ça sur le termional virtuel n°8, tty8 (accessible par Ctrl-Alt-F8 ), pour cela :
Éditer le fichier /etc/syslog.conf
Vous regarder dedans. Toutes les lignes qui finissent par /var/log/message, vous les copiez, en changeant justement le /var/log/message par /dev/tty8. Une fois ce travail accompli, on va relancer le système de message pour que nos changements soient pris en compte :
tapez : ps -aux | grep syslogd
Une fois le numéro de process de syslogd repéré (le PID), on le relance :
tapez : kill -1 PID
Basculez alors sur tty8 (Ctrl-Alt-F8) et vous allez voir votre premier message système redirigé :
13.23 PM: Syslogd restarted
ou quelque chose du genre. Maintenant vous pouvez voir tous les messages systèmes en temps réel sur le tty8 en tapant Ctrl-Alt-F8.


Monter au démarrage des partitions non linux

Certaines distribs vous proposent de monter automatiquement vos partitions DOS, OS/2, etc. automatiquement. Mais toutes ne le font pas, et beaucoup d'utilisateurs se demandent comment le configurer.
Il vous faut éditer le fichier /etc/fstab, et ajouter dedans des lignes dont la syntaxe est la suivante (une ligne par partition) :
périphérique    point de montage   FS    auto   0   0   default
Par exemple sur mon disque IDE maître sur le 1er port IDE, j'ai ma partition Windows 98. Je crée alors en premier mon point de montage que je décide (arbitrairement) d'appeler /dos_c, puis j'édite /etc/fstab et j'ajoute comme ligne :
/dev/hda1      /dos_c             vfat   auto   0   0   default
Il ne faut pas oublier de créer le point de montage, un simple répertoire vide, par mkdir /dos_c.

Pour info, voici quelques FS (File System) standard:
 

vfat win95,98 fat32
msdos dos,win3.1x,95,95 fat16
iso9660 fs des cdrom (avec extension joliet a partir du noyau 2.0.X je sais plus exactement)
ntfs  fs de Windows NT (lecture et écriture en béta sur les derniers kernels)
nfs fs réseau Unix pour monter des répertoire distant via nfs
et bien d'autre comme l'Amiga, le Mac, OS/2.... voir les HOWTO pour ca.


Activer la touche NUM-LOCK sous la console et sous X

Par défaut sous Linux la touche NUM-LOCK est éteinte (même si vous l'activée dans votre BIOS, elle ne sera pas active sous Linux).
Voici comment faire pour l'activer automatiquement :

Pour le mode console:

En root bien sûr, éditer le fichier /etc/rc.d/rc.local (il peut se situer ailleurs suivant votre distribution) et ajoutez-y les lignes suivantes (en fin de fichier par exemple) :
For tty in /dev/tty[1-9]*;
  do 
    setleds -D +num < $tty > /dev/null
  done

Pour le mode X

Editez le fichier /usr/X11R6/lib/X11/xkb/types/basic et modifiez les lignes comme ceci (rouge = modif):
type "KEYPAD" {
  modifers = Shift+Numlock;
  map[None] = Level1;    -> passer en Level2
  map[Shift] = Level2;   -> passer en Level1
  map[NumLock]= Level2;
  map[Shift+Numlock]=Level1;
  Level_name[Level1]="base";
  Level_name[level2] = "Number";
}
Remarque : cette méthode active bien le pavé numérique, mais le voyant peut rester éteint, et il n'est alors plus possible de désactiver le pavé numérique.

Suivant les distribs, les fichiers risquent de se trouver ailleurs. Pour trouver un fichier, rien de plus simple, faites un :

find -name nom_du_fichier répertoire | grep nom_du_fichier
Vous pouvez utiliser des joker dans le nom du fichier, dans ce cas, mettez le entre guillemets, par exemple, pour trouver tous les fichiers rc.* dans /etc :
find -name "rc.*" /etc
Évitez quand même la recherche à partir du répertoire racine (/) , ca risque de prendre du temps et même de chercher dans les partitions montées telle que les partitions DOS/Windows ou les CD-ROMs. La commande find est très puissante, je vous conseille de faire man find pour en savoir plus.


Activer la roulette des souris sous X

Pour activer la roulette sous X, il faut d'abord se procurer le programme imwheel. Celui ci se trouve sur le site de freshmeat ou bien sur votre distribution (pensez à vérifier avant, au cas où). Une fois le programme installé, il va falloir éditer le fichier XF86Config dans le répertoire /etc/X11 si mes souvenirs sont bons. Dans ce fichier (dont vous aurez au préalable fait une copie de secours, en cas de problème) vous cherchez la section "Pointer".

Ajoutez les lignes suivantes juste après la ligne Protocol en respectant bien la casse (majuscules/minuscules) :

 ZAxisMapping   4  5 
 Buttons        3
Il faut aussi changer le protocole de communication de votre souris. C'est la partie Protocol. Si votre souris est PS2, il faut changer PS2 en IMPS2. Si votre souris est série (sur port COM), il faut changer votre protocole pour que ce dernier soit celui de la souris IntelliMouse de type série (faire man XF86Config pour voir la liste des protocoles) (désolé ma mémoire me trahit).

Je déconseille vivement de faire ces manipulations à l'aide de XF86Setup, car ce dernier fait perdre le contrôle de la souris tant que vous n'avez pas rebooté.

Une fois toutes ces modifications effectuées, sauvegardez, puis relancez votre serveur X. Maintenant , pour verifier que tout a correctement été modifié, executez imwheel dans une fenêtre Terminal. Ouvrez une fenêtre avec un ascenseur (le repertoire /usr/bin dans une fenètre de gestion de fichiers est un bon exemple), utilisez votre molette. Si l'ascenseur bouge c'est gagné !!!! Vous pouvez maintenant mettre un lien vers imwheel dans le répertoire "Démarrage" que vous avez sur votre Bureau sous KDE pour que imwheel démarre automatiquement à chaque ouverture de session.

Ou bien intégrez imwheel en dernière ligne dans le fichier startx (cherchez ce fichier par : "find -name startx /usr | grep startx") ou dans /etc/X11/xinitrc.

Voilà. Cette procédure fonctionne avec une souris Logitech 3 boutons à roulette modèle M-C48 (avec le petit logo Logitech sur le dessus). Bons menus déroulants !!! :-)


Changer le mode de démarrage par défaut

 Dans certaines distributions, le mode de démarrage par défaut est X (mode graphique), ou bien c'est en mode console ou encore on vous le demande lors de l'install.
Le principe est très simple pour changer ce mode par défaut. Pour cela éditer le fichier /etc/inittab et repérer la ligne (vers le début) :
 id:3:initdefault:
Il suffit de changer le chiffre entre id et initdefault par :
3 Mode texte
5 Mode graphique (X Window)


Alléger son kernel en utilisant les modules

Cette manipulation demande à ce que vous connaissez bien votre matériel (carte réseau, son, disque dur, carte SCSI, etc.), le but de cette man?uvre étant de passer les principaux drivers en modules pour alléger votre noyau (le kernel) et aussi le rendre plus rapide. Malheureusement vous ne pouvez pas TOUT passer en module, autrement vous ne pourrez même pas booter votre Linux...

Tout d'abord nous allons "optimiser" la compilation du kernel et des modules. Cela vas dépendre de la mémoire que vous avez sur votre machine. Regardons ce petit tableau :

16 Mo 3
24 Mo 4
32 Mo 5
40 Mo 6
48 Mo 7
56 Mo 8
64 Mo 9
80 Mo 11
96 Mo 13
112 Mo 15
118 Mo 17
 Nous allons permettre la compilation en parallèle de plusieurs modules à la fois. N'augmentez pas le chiffre de plus de ce qui est dans ce tableau, sinon vous ralentirez la compilation au lieu de l'optimiser. Pour ce faire, aller dans le répertoire /usr/src/linux, éditez le fichier Makefile, cherchez la ligne " MAKE=make"et faite ce changement :
MAKE=make -j N
avec N le nombre du tableau qui correspond à votre config mémoire. Si vous avez plus de 118Mo, le calcul est simple, vous trouvez N= (mémoire/8) +1.

Attention, cette manip est pour une compilation sous la console (pas sous X !) et va vous bouffer 100% des ressources pour la compilation (ce qui n'est pas grave si vous ne désirez rien faire d'autre en même temps) ! De même si votre système swappe comme un fou, stoppez la compilation par Ctrl-C et baissez le nombre N ! De même si votre processeur est overclocké ça risque de planter !

Bon maintenant passons à ce qui peut être compilé en modules. Déjà tout ce qui permet d'accéder au /(racine) ne doit pas être compilé en module sous peine de ne plus pouvoir booter le système, c'est à dire que si votre racine est sur un disque IDE, il ne faut pas mettre le support IDE en module, et de même si il est sur un disque SCSI, le SCSI ne dois pas être passer en module. Pour la même raison, le système de fichiers "ext2fs" ne doit pas être non plus compilé en module. Si votre partition racine est montée par le réseau et NFS (cas des stations diskless par exemple), ne mettez pas le support de la carte réseau et le support NFS en modules.
En effet, les modules sont chargés APRES le noyau, et si les modules IDE sont sur un disque IDE, il faut d'abord les charger avant de pouvoir accéder au disque, mais pour les charger, il faut avoir accès au disque et donc les avoir chargés avant... vous voyez le cercle vicieux ?

Tout le reste peut être compilé en modules, c'est à dire carte son, carte réseau (sauf si la racine est en NFS, voir ci-desus), port parallèle, ppp support, slip support, CD-ROM, etc. Si vous avez du matériel PnP et que vous voulez utiliser le support PnP, passez également tous les drivers pour ces cartes en modules et configurez votre PNP (voir rubrique PnP).

Je vous conseille aussi pour plus de facilité d'inclure le chargement auto des modules par le kernel (kerneld Y), le support des modules bien sûr.

Pour plus de détails sur la compilation du noyau, voyez la rubrique compilation du noyau.

Après la compilation et l'installation, éditez le fichier /etc/conf.modules et passez les options et alias de vos modules (voir aussi dans la rubrique PnP, cela y est expliqué).
 


Permettre le gravage sur des graveurs IDE

Pour les graveurs SCSI pas de problème, le gravage passe toujours le graveur étant tout de suite reconnu. Par contre pour ce qui est des graveurs IDE, cela n'est pas automatique : il faut émuler son graveur IDE en graveur SCSI.
Si vous avez de la chance, l'émulation IDE/SCSI est déjà compilée dans votre noyau, et il suffit de l'activer. Si le fichier /lib/modules/votre_version_de_noyau/scsi/ide-scsi.o existe, passez directement à la configuration de /etc/conf.modules ci-dessous.
Sinon, il faut compiler le noyau, et le configurer comme suit (voir aussi la rubrique noyau pour un tutoriel sur la compilation) :
Enhanced IDE/MFM/RLL...         Y
IDE/ATAPI CDROM                 M
SCSI hostadaptor emulation      M
Loopback device                 M
SCSI support                    Y ou M
SCSI CD-ROM support             Y ou M
Enable vendor-specific          Y
SCSI generic support            Y ou M
   (choisir un driver SCSI, n'importe lequel)
ISO 9660 CDROM filesystem       Y
Microsoft Joliet cdrom...       M
Puis inclure dans votre /etc/conf.modules ces lignes :
alias scd0 sr_mod 
alias scsi_hostadapter ide-scsi
options ide-cd ignore=hdb
Remarque 1 : remplacez hdb ci-dessus par la bonne valeur pour vous (c'est à dire hdb si votre graveur est sur le premier contrôleur IDE en esclave, hdc s'il est sur le second en maître, hdd s'il est sur le second en esclave, etc.) !
Remarque 2 : si vous avez également une carte SCSI, remplacez scsi_hostadapter par scsi_hostadapter0 et placez la ligne AVANT la ligne concernant votre carte SCSI.

Normalement, tout devrait bien passer ensuite.
Il suffit de passer au noyau au démarrage : "hdc=ide-scsi". Pour LILO, cela se fait en ajoutant la ligne  'append = "hdc=ide-scsi"' (ou 'append= "hdc=ide-scsi hdd=ide-scsi"' si vous avez plusieurs lecteurs/graveurs) dans la section "linux" du fichier /etc/lilo.conf (si vous avez déjà une ligne append, il faut l'ajouter à cette ligne, comme par exemple dans 'append = "mem=256M hdc=ide-scsi"'.)
Pour LOADLIN, il suffit de modifier votre ligne de commande :
C:\>LOADLIN C:\LINUX\VMLINUZ root=/dev/hdb1 ro hdc=ide-scsi

Attention : cdrecord et cdrdao supportent les graveurs IDE, mais n'essayez pas de graver avec cdwrite : il ne supporte que le SCSI.


Comment faire quand on arrive plus à booter ?

Beaucoup de monde un jour risque d'être confronté à ce probléme. Plusieurs méthode existent suivant le problème exact.

Le système bloque pendant l'init du kernel, mais passe bien l'invite LILO

Dans la plupart des cas, on peut résoudre le probléme en tapant à l'invite lilo: "linux 1", ou "linux single" (si linux est le mot que vous tapez pour lancer Linux ! voir votre install de LILO) ce qui permet d'arriver à un shell de commande et de modifier vos fichiers de démarrage, bref de régler le problème.
Si vous utilisez LOADLIN, ajoutez "1" au bout de votre ligne de commande. Par exemple :
C:\>LOADLIN C:\LINUX\VMLINUZ root=/dev/hdb1 ro 1

Le noyau démarre, le système s'initialise bien, mais à la fin, l'écran devient noir et clignote

Vous vous trouvez sans doute devant un problème dû à X Window. Le dépannage est décrit dans la rubrique correspondante.

Disquette RESCUE

La solution ultime est la disquette "RESCUE", lorsque même LILO ne démarre plus. A ce moment là, cette disquette de sauvegarde permet de charger une mini distribution Linux en mémoire (nommée TOMSRTBT), qui comprend tous les outils de maitenance (vi, mount, lilo, fdisk, emacs, etc.). Il suffit alors de monter la partition qui contient votre Linux en panne (mount -t ext2 /dev/hda2 /mnt par exemple) et de travailler sur les fichiers en cause ou de réinstaller LILO... suivant le problème exact.

Suivre le lien suivant pour récupérer le .zip qui va vous permettre de faire une rescue disk à partir de DOS :
   rescue disk (dezipper et lancer install.bat SOUS DOS, pas dans une fenêtre Win !)
Ou sous un autre Linux :
   rescue disk linux


Comment je sais si mon système est basé sur libc5, Glibc 2.0...

Pour savoir sur quelle libc (la librairie des fonctions standard) votre Linux est basé, allez dans /lib et faites un "ls libc*", si vous voyez libc5, c'est la libc5, libc6 c'est la glibc et libc-2.xx c'est la Glibc 2.xx.

Les distributions suivantes utilisent la glibc2.1 : RedHat 6, Mandrake 6.0, Slackware 7...


Comment supprimer des mails sans les rappatrier ?

(Piloter le serveur POP à la main)

Lorsque quelqu'un vous a envoyé un énorme mail, et que vous ne souhaitez pas passer des heures afin de le récupérer, il existe un moyen d'y aller "à la main" afin de le virer (en attendant que quelqu'un nous fasse une petite appli sympa qui fait ça en mode graphique ?) :

Il suffit de se connecter à internet puis avec telnet sur le port 110 de la machine depuis laquelle vous rappatriez vos mails (en général, pop.votre_fournisseur.fr).
Par exemple, en ligne de commandes : telnet pop.free.fr 110

Vous allez vous retrouver sur une sorte de prompt, et il vous faudra taper dans l'ordre les commandes suivantes afin de vous authentifier :
USER mon_compte [Entrée]
PASS mon_mot_de_passe [Entrée]
(Attention ! on regarde par dessus ton épaule :)

Enfin, le serveur comprend des commandes afin de gérer les messages :
 
commande commentaire
LIST [Entrée] Affiche la liste des messages, permet de consulter la taille de chaque message.
RETR numéro_de_message [Entrée] Affiche tout le message correspondant.
TOP numéro_de_message nbre_de_lignes_à_afficher [Entrée] Affiche les n premières lignes du message.
DELE numéro_de_message [Entrée] Supprime le message correspondant.
QUIT [Entrée] Bye bye...

Le serveur répond avec des messages "+OK" lorsqu'il a compris et exécuré votre commande.

Donc vous voyez ce qu'il vous reste à faire : un ptit "LIST" pour repérer l'intrus, puis un "DELE numéro" pour le virer, avec éventuellement un "TOP numéro 20" pour voir ses 20 premières lignes (des fois que ça soit important ! :)


Rechercher un fichier sur internet en une seule ligne de commande

Par exemple, disons que nous avons besoin de trouver le fichier md5sum.exe pour DOS. Nous allons voir comment faire pour créer un alias qui nous permettra de taper une seule ligne de commande pour ce faire. Nous utiliserons de manière transparente le serveur ftpsearch (http://ftpsearch.lycos.com/).

Vous avez besoin d'installer le package lynx. (Lynx est un browser Web en mode texte).

Nous allons créer une nouvelle commande ftpsearch : créez un fichier /usr/local/bin/ftpsearch, contenant :
#!/bin/sh
lynx "http://ftpsearch.lycos.com/cgi-bin/search?form=lycosnet&query=$1"
puis tapez (afin de rendre ce script exécutable) :
chmod a+x ftpsearch

Ensuite, la commande :
[jice@taz jice]$ ftpsearch md5sum.exe
donne
 ...
 1 /mirrors/linux/OfficialCD/1.3.1/utilities/md5sum.exe
 33.0K - 1997 Jul 11 00:32
 FTP Site: ftp.it.net.au

 2 /mirrors/linux/debian-cd/OfficialCD/1.3.1/utilities/md5sum.exe
 33.0K - 1997 Jul 11 00:32
 FTP Site: ftp.it.net.au

 3 /pub/DOS_Extras/md5sum.exe
 21.3K - 1997 Jan 18 00:00
 FTP Site: ftp.forth.org

 4 /pub/DOS_Extras/md5sum.exe
 21.3K - 1997 Jan 18 00:00
 FTP Site: ftp.taygeta.com
 ...
Il ne vous reste plus qu'à choisir le serveur !


Travailler sur un ensemble de fichiers

Remarque : les commandes qui suivent sont à taper sur une seule ligne de commande.

Comment rechercher dans /home/jice (par exemple) tous les fichiers plus récents qu'une date donnée ?
Créez un fichier temporaire (on l'effacera par la suite) à la bonne date par :
touch -t 199912251615 fichier.tmp
(cela crée le fichier fichier.tmp, avec comme date de dernière modif le 25/12/1999 à 16h15).
Ensuite, tapez :
find /home/jice -newer fichier.tmp -print
pour en afficher la liste (voir man find pour les autres options de find).

Comment travailler (copier, renommer, etc.) sur des fichiers de façon globale ?
C'est en même temps moins simple que sous DOS (où un simple "ren *.htm *.php3" suffit, mais beaucoup plus puissant car cela permet de faire des choses totalement innaccessibles avec DOS).
La syntaxe générale est assez simple à se souvenir, car la structure de la commande est toujours la même :
on utilise soit une boucle for (pour un travail cantonné au même répertoire) soit la commande find (pour un travail récursif sur les sous-répertoires), puis on exécute la commande voulue sur chaque fichier.
Par exemple, pour renommer tous les fichiers .htm en .php3 :
for i in *.htm; do mv $i `echo $i | sed "/\.htm/s//\.php3/"`; done
ou
find . -name "*.htm" -exec mv {} `echo {} | sed "/\.htm/s//\.php3/"` \;
Equivalent DOS :
ren *.htm *.php3

Explications :

  • for : la boucle for va positionner successivement la valeur de la variable $i au nom de tous les fichiers *.htm, puis pour chaque valeur de $i, exécuter la commande mv (move, pour déplacer et/ou renommer) du fichier $i (la variable de la boucle for) vers la transformation de $i. Ici, on remplace .htm par .php3 avec la commande sed.
  • find : on exécute la même commande ; find exécute pour chaque fichier la ligne de commande présente après -exec (qui doit se terminer par \;) et remplace toute occurence de {} dans cette ligne de commande le nom du fichier trouvé.
De même, pour renommer tous les fichiers commençant par "toto" en fichiers commençant par "titi" :
for i in toto*; do mv $i `echo $i | sed "/^toto/s//titi/"`; done
(ren toto*.* titi*.* en DOS)

Pour changer le "toto" présent dans le nom des fichiers en "titi", où qu'il se trouve (début, fin, ou milieu) :
for i in *toto*; do mv $i `echo $i | sed "/toto/s//titi/"`; done
(pas d'équivalent en DOS)

Pour copier tous les fichiers finissant par .htm ou .html vers le même nom auquel on ajoute .bak :
for i in *.htm*; do cp $i $i.bak; done
la même chose, mais récursivement sur tous les répertoires :
find . -name "*.htm*" -exec cp {} {}.bak \;
(pas d'équivalent en DOS)

Bref, la structure qui modifie le nom du fichier est globalement toujours la même : "commande $i `echo $i | commande_qui_transforme_$i`" (pour modifier la valeur de $i, voir les pages de man de sed, tr...), ou "commande $i append$iprepend" (pour ajouter avant et/ou après $i). Voir également ci-dessous :

Comment renommer automatiquement des fichiers de manière à remplacer les espaces par des underscores, et supprimer les accents en conservant les majuscules ?
Tapez sur une seule ligne de commande :
for i in * ; do mv $i `echo $i | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ " "aceeeeiioouuACEEEEIIOOUU_"` ; done
Un bon exercice peut être de trouver comment faire la même chose mais sur les fichiers du répertoire et de ses sous-répertoires (utilisez find !)

Comment effacer tous les fichier *.tmp dans un répertoire et ses sous-répertoires ?
Nous allons utiliser find :
find . -name "*.tmp" -exec rm -f {} \;
(les accolades {} sont remplacées par le nom du fichier en cours).

 


[ Home Page ] - [ Introduction ] - [ Sommaire ] - [ Pourquoi Linux ] - [ Qu'est ce que Linux ? ] - [ Qui, Quoi, Ou ? ]
[
Les indispensables ] - [ Guide des commandes ] - [ Mes lectures ! ] - [ Documentations ]
[
Linux sur le WEB... ] - [ Spéciales Bookmarks... ] - [ Trucs & Astuces ] - [ Glossaire ]