Page suivantePage pr�c�denteTable des mati�res

2. Astuces simples

2.1 Un truc pratique pour syslog. Paul Anderson, r�dacteur du Linux Astuces HOWTO.

Editez le ficher /etc/syslog.conf et ajoutez-y la ligne suivante :

# Tout envoyer sur tty8
*.*                                      /dev/tty8

Attention : PENSEZ � UTILISER DES TABULATIONS ! Syslog n'aime pas les espaces.

2.2 Un script pour afficher les HOWTO compact�s. Didier Juges, dj@destin.nfds.net.

De d�butant � d�butant, voici un petit script qui facilite la lectures des howto. Mes howto sont dans /usr/doc/faq/howto/ et sont compress�s avec gzip. Les fichiers s'appellent XXX-HOWTO.gz, o� XXX est le titre. J'ai appel� le script suivant howto et je l'ai plac� dans /usr/local/sbin/ :


#!/bin/sh
if [ "$1" = "" ]; then
 ls /usr/doc/faq/howto | less
else
 gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi

Appel� sans argument, il affiche la liste des howto disponibles. Quand on lui passe en argument la premi�re partie du nom du fichier (avant le trait d'union), il d�compacte le document (en laissant l'original intact) et l'affiche � l'�cran.

Par exemple, pour afficher le document Serial-HOWTO.gz, tapez :

$ howto serial

2.3 Reste-t-il assez de place libre ? Hans Zoebelein,zocki@goldfish.cube.net.

Voici un script qui v�rifie � intervalles r�guliers qu'il reste de la place sur tout ce qui est mont� (disques durs, CDROM, disquettes...)

En cas de p�nurie d'espace libre, un message est affich� � l'�cran toutes les X secondes et un courrier �lectronique est envoy� pour chaque p�riph�rique qui d�borde.


#!/bin/sh
#
# $Id: Tips-HOWTO.sgml,v 1.1.1.1 2003/01/03 02:38:54 traduc Exp $
#
#
# Depuis que j'ai �t� confront� � des
# messages d'erreur myst�rieux pendant les compilations
# quand les fichiers temporaires remplissaient mes disques, j'ai
# �crit �a pour �tre averti avant que les disques
# ne soient pleins.
#
# Si �a a empech� vos serveurs d'exploser, envoyez
# les courriers de remerciement � zocki@goldfish.cube.net.
# Si votre site flambe � cause de �a, d�sol�
# mais je vous avais pr�venu: c'est votre probl�me
# Si vous savez vraiment vous servir de sed, excusez moi :)
#
#
# Lancez-le et vous pouvez l'oublier: mettez "check_hdspace &"
# dans rc.local. Il v�rifie l'espace libre toutes les
# $SLEEPTIME secondes. Vous pouvez m�me surveiller vos
# disquettes et vos bandes.  :)
# Si l'espace libre est inf�rieur � $MINFREE (Ko),
# le script va afficher un message d'avertissement et envoyer un
# courrier � $MAIL_TO_ME pour chaque p�riph�rique
# concern�. D�s qu'il y a � nouveau plus de place
# libre que la limite, le syst�me d'envoi de courrier est
# r�amorc�.
#
# RESTE � FAIRE:
# Des $MINFREE diff�rents pour chaque p�riph�rique
# Nettoyer les r�pertoires /*tmp des vieilleries en cas de
#           p�nurie d'espace.
DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # vos disques
MINFREE=20480                           # la limite
SLEEPTIME=10                            # secondes entre deux v�rifications
MAIL_TO_ME='root@localhost'             # la personne � avertir
# ------- rien � changer en dessous (j'esp�re :) -------
MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024         # oui, on fait �a bien :)
while [ 1 ]; do
 DF="`/bin/df`"
 for DEVICE in $DEVICES ; do
 ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##`
 if [ $ISFREE -le $MINFREE ] ; then
 let ISMB=$ISFREE/1024
 echo  "WARNING: $DEVICE only $ISMB mb free.">&2
 #echo "more stuff here">&2
 echo -e "\a\a\a\a"
 if [ -z  "`echo $MAILED | grep -w $DEVICE`" ] ; then
 echo "WARNING: $DEVICE only $ISMB mb free.      (Trigger is set to $MINMB mb)" \
 | mail -s "WARNING: $DEVICE only $ISMB mb free!" $MAIL_TO_ME
 MAILEDH="$MAILED $DEVICE"
 MAILED=$MAILEDH
 # rajoutez ce qu'il reste � faire
 # par exemple nettoyer les */tmp
 fi
 elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
 # Enlever le marqueur de courrier si
 # l'espace disponible remonte
 # au-dessus de la limite. Pour pouvoir
 # envoyer un nouveau message en cas de
 # besoin.
 MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
 MAILED=$MAILEDH
 fi
 done
 sleep $SLEEPTIME
done

2.4 Un utilitaire pour nettoyer vos fichiers journaux (logs). Paul Anderson, r�dacteur du Linux Astuces HOWTO.

Si vous �tes comme moi, vous avez une liste de diffusion avec 430 inscrits et plus de 100 messages qui arrivent tous les jours par UUCP. Qu'est-ce qu'un bidouilleur peut bien faire avec ces �normes fichiers journaux ? Il peut installer chklogs. chklogs a �t� �crit par Emilio Grimaldo, grimaldo@panama.iaehv.nl, et la version 1.8 actuelle est disponible sur ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz. C'est tr�s simple � installer (il faut bien s�r lire le contenu du r�pertoire doc). Une fois le paquetage install�, rajoutez une entr�e � votre crontab :

# Lance chklogs tous les jours � 21h
00 21 * * *          /usr/local/sbin/chklogs -m

Pendant que vous y �tes, n'oubliez pas de dire � l'auteur � quel point vous appr�ciez son logiciel :)

2.5 Un script pratique pour nettoyer les fichierscore. Otto Hammersmith.

Cr�ez un fichier rmcores (l'auteur l'appelle handle-cores) contenant ceci :


#!/bin/sh
USAGE="$0 <directory> <message-file>"
if [ $# != 2 ] ; then
 echo $USAGE
 exit
fi
 echo Deleting...
find $1 -name core -atime 7 -print -type f -exec rm {} \;
echo e-mailing
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
 echo $name
 cat $2 | mail $name
done

Et utilisez cron pour le lancer � intervalles r�guliers.

2.6 D�placement de r�pertoires inter partitions Linux (filesystems). Alan Cox, A.Cox@swansea.ac.uk.

(cd /r�pertoire_source && tar cf - . ) | (cd /r�pertoire_cible && tar xvf -)

[ Et pas cd /r�pertoire_source; tar...etc., qui laisse la possibilit� de bousiller un r�pertoire en cas de probl�me. Merci � Jim Dennis, jim@starshine.org, qui me l'a signal�. -le r�dacteur ]

2.7 Trouver les plus gros r�pertoires. Mick Ghazey.

Vous vous �tes d�j� demand� quels �taient les plus gros r�pertoires sur votre machine ? Voici une fa�on de les trouver.

du -S | sort -n

2.8 La Linux Gazette.

Bravo et merci � John Fisk, le cr�ateur de la Linux Gazette. C'est un excellent magazine en ligne, qui plus est GRATUIT ! Que demander de plus ? Vous pouvez le trouver � l'adresse :

http://www.linuxgazette.com

Au fait, il s'av�re que (1) la LG est maintenant mensuelle et (2) elle n'est plus maintenue par John Fisk, mais par l'�quipe de SSC.

2.9 Indication permettant de r�soudre le probl�me pos� par le VPATH du GNU make version 3.7. Ted Stern, stern@amath.washington.edu.

J'ignore si ce probl�me concerne de nombreux utilisateurs mais l'une des caract�ristiques de la version 3.7 du GNU make ne m'enthousiasme pas. Il s'agit du comportement d'un VPATH sur r�pertoire absolu. Un robuste patch corrige cela, vous pourrez l'obtenir aupr�s de Paul D. Smith <psmith@wellfleet.com>

Veuillez r�diger votre courrier en anglais ! NDT
. Ce dernier poste dans le groupe gnu.utils.bug un article contenant ce patch et sa documentation apr�s parution de chaque nouvelle version du GNU make. En ce qui me concerne... il est install� sur tous les syst�mes auxquels j'ai acc�s !

2.10 Comment interdire � ma machine de lancer fsck apr�s chaque d�marrage ? Dale Lutz, dal@wimsey.com.

R�ponse : Apr�s recompilation du noyau le syst�me de fichiers est consid�r� comme non v�rifi� ("marked as dirty"), ce qui implique que fsck sera mis en action lors de chaque d�marrage. Pour �viter cela lancer :

rdev -R /zImage 1
Cela modifie le noyau qui, d�s lors, consid�re que le syst�me de fichiers est sain.

Note : Ajoutez, si vous employez LILO, read-only � la section de l'image de boot de votre fichier de configuration LILO (souvent nomm� /etc/lilo/config ou /etc/lilo.conf).

2.11 Comment �viter les lancements de fsck, au boot, d�s au "device busy" ? Jon Tombs, jon@gtex02.us.es.

Si votre syst�me conna�t de fr�quentes erreurs de type "device busy" au d�marrage qui laissent le syst�me de fichiers dans un �tat exigeant un fsck, veuillez suivre les recommandations suivantes :

Ajoutez, au fichier /etc/rc.d/init.d/halt ou /etc/rc.d/rc.0, la ligne

mount -o remount,ro /mount.dir
pour tous vos syst�mes de fichiers mont�s, sauf la racine, avant l'invocation de umount -a. Cela signifie que si, pour une quelconque raison, "shutdown" ne parvient pas � tuer tous les processus puis d�monter les partitions ces derni�res seront malgr� tout consid�r�es comme saines lors du red�marrage. Cette astuce a consid�rablement �court� le temps de d�marrage de mon syst�me !

2.12 Comment trouver les plus gros fichiers sur votre disque dur. Simon Amor, simon@foobar.co.uk.

ls -l | sort +4n

Pour ceux d'entre vous qui sont vraiment � l'�troit, �a prend du temps, mais �a marche bien :

cd /
ls -lR | sort +4n

2.13 Comment imprimer sur des pages avec marges ? Mike Dickey, mdickey@thorplus.lib.purdue.edu.


 #!/bin/sh
 # /usr/local/bin/print
 # Une simple sortie format�e pour permettre de
 # perforer les feuilles afin de les mettre dans un classeur
 cat $1 | pr -t -o 5 -w 85 | lpr

2.14 M�thode permettant de rechercher des expressions rationnelles dans des fichiers. Raul Deluth Miller, rockwell@nova.umd.edu.

Je d�signe, par "expressions rationnelles", les regexp de "grep" et consorts.

J'ai appel� ce script "forall" et l'utilise ainsi :

forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
Voici le script forall:

#!/bin/sh
if [ 1 = `expr 2 \> $#` ]
then
 echo Syntaxe: $0 repertoire commande [arguments]
 exit 1
fi
dir=$1
shift
find $dir -type f -print | xargs "$@"

2.15 Un script pour faire le m�nage derri�re les programmes qui cr�ent des fichiers de sauvegarde.

Voici un petit script de deux lignes qui parcourt une arborescence et qui y efface les fichiers de sauvegarde (# et ~) d'emacs, les fichiers .o, et les fichiers .log de TeX. Il compacte �galement les fichiers .tex et README. Sur mon syst�me, je l'ai appel� "squeeze".


#!/bin/sh
#SQUEEZE efface les fichiers superflus et compacte les fichiers .tex
#et README.
#Par Barry tolnas, tolnas@sun1.engr.utk.edu
#
echo nettoyage de $PWD
find  $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec
rm -f {} \;
find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;

2.16 Comment trouver le processus qui occupe le plus de m�moire. Simon Amor.

ps -aux | sort +4n
-OU-
ps -aux | sort +5n

2.17 Configuration de vi pour la programmation en C. Paul Anderson, r�dacteur du Linux Astuces HOWTO.

Je passe beaucoup de temps � programmer en C, et j'ai pris le temps de configurer vi pour me faciliter la t�che. Voici le contenu de mon fichier .exrc :


set autoindent
set shiftwidth=4
set backspace=2
set ruler

Qu'est-ce que �a fait ? autoindent force vi � indenter automatiquement toutes les lignes qui suivent la premi�re ligne indent�e, shiftwidth impose une taille de 4 espaces pour ^T, backspace configure la touche d'espacement arri�re, et ruler force l'affichage des num�ros de lignes. Notez que pour placer le curseur sur une ligne donn�e, par exemple la ligne 20, vous pouvez utiliser :

vi +20 monfichier.c

2.18 Utilisation de ctags pour faciliter la programmation

Beaucoup de bidouilleurs ont d�j� ctags sur leur machine, mais ne s'en servent pas. Cela peut �tre tr�s pratique pour �diter des fonctions sp�cifiques. Supposez que vous avez une fonction dans l'un des nombreux fichiers sources contenus dans un r�pertoire pour un programme que vous �tes en train d'�crire, et que vous voulez �diter cette fonction pour faire une mise � jour. Appelons cette fonction foo(). Vous ne savez pas non plus o� elle se trouve dans le fichier source. C'est l� que ctags peut �tre tr�s pratique. Quand vous le lancez, ctags cr�e un fichier nomm� tags dans le r�pertoire courant, qui contient la liste de toutes les fonctions, le fichier source dans lequel elles se trouvent et leur emplacement dans ce fichier source. Le fichier tags ressemble � �a :


ActiveIconManager       iconmgr.c       /^void ActiveIconManager(active)$/
AddDefaultBindings      add_window.c    /^AddDefaultBindings ()$/
AddEndResize    resize.c        /^AddEndResize(tmp_win)$/
AddFuncButton   menus.c /^Bool AddFuncButton (num, cont, mods, func, menu, item)$/
AddFuncKey      menus.c /^Bool AddFuncKey (name, cont, mods, func, menu, win_name, action)$/
AddIconManager  iconmgr.c       /^WList *AddIconManager(tmp_win)$/
AddIconRegion   icons.c /^AddIconRegion(geom, grav1, grav2, stepx, stepy)$/
AddStartResize  resize.c        /^AddStartResize(tmp_win, x, y, w, h)$/
AddToClientsList        workmgr.c       /^void AddToClientsList (workspace, client)$/
AddToList       list.c  /^AddToList(list_head, name, ptr)$/

Pour �diter, par exemple, AddEndResize() avec vim, tapez :

vim -t AddEndResize

Cela va ouvrir le bon fichier dans l'�diteur et placer le curseur au d�but de la fonction.

2.19 Pourquoi sendmail se bloque-t-il pendant 5 minutes au d�marrage d'une Red Hat ? Paul Anderson.

C'est un probl�me assez courant, presque au point d'en faire une FAQ. Je ne sais pas si Red Hat corrige l'erreur dans sa distributions, mais vous pouvez r�parer �a vous-m�me. Si vous regardez dans votre fichier /etc/hosts, vous allez trouver quelque chose qui ressemble � �a :

127.0.0.1        localhost        votremachine

Quand sendmail d�marre, il fait une recherche sur le nom de votre machive (votremachine dans l'exemple). Ensuite, il trouve que l'adresse IP de la machine est 127.0.0.1; sendmail n'aime pas �a et recommence la recherche. Il continue comme �a pendant un moment avant d'abandonner. Corriger ce probl�me est tr�s facile : �ditez votre fichier /etc/hosts et mettez-y quelque chose comme �a :

127.0.0.1        localhost
10.56.142.1      votremachine

2.20 Comment configurer une Red Hat pour avoir ls en couleurs?Paul Anderson, paul@geeky1.ebtech.net.

La distribution Red Hat est fournie avec color-ls (ls en couleurs), mais je n'arrive pas � comprendre pourquoi ils ne le configurent pas pour utiliser les couleurs par d�faut. Voici une fa�on d'arranger �a.

Commencez par taper eval `DIRCOLORS`

Puis alias ls='ls --color=auto'

Enfin, mettez la ligne "alias ....." dans votre /etc/bashrc.

2.21 Comment trouver quelle biblioth�que de /usr/lib contient une fonction donn�e ? Pawel Veselow.

Vous �tes en train de compiler un programme et vous avez oubli� de lier une biblioth�que n�cessaire? Et gcc qui ne donne que les noms des fonctions manquantes... Voici une commande pour trouver ce que vous cherchez :

for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done

Remplacez tgetnum par le nom de la fonction que vous cherchez.

2.22 J'ai compil� un petit programme en C, mais quand je le lance, je ne vois aucun r�sultat !

Vous avez compil� le programme et cr�� un programme appel� test, non? Linux a d�j� un programme test, qui teste si une certaine condition est vraie et qui n'affiche aucun r�sultat � l'�cran. Pour lancer votre programme test, tapez ./test.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:24