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.
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
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
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 :)
core
. 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.
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 ]
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
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.
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 !
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).
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 !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
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
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 "$@"
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 {} \;
ps -aux | sort +4n
-OU-
ps -aux | sort +5n
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
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.
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
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
.
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.
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
.