Wijzig je /etc/syslog.conf, en plaats daarin de volgende regel:
# Dump alles naar tty8
*.* /dev/tty8
Een voorbehoud: DENK ERAAN TABS TE GEBRUIKEN! syslog houdt niet van spaties...
dj@destin.nfds.net
Voor de ene aan de andere newbie is hier een klein script die het zoeken naar en het bekijken van howto documenten vereenvoudigt. Mijn howto's staan in /usr/doc/faq/howto/ en zijn met gzip gecomprimeerd. De bestandsnamen zijn XXX-HOWTO.gz, met XXX als het onderwerp. Ik maakte het volgende script aan met de naam "howto" in de directory /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
Wanneer aangeroepen zonder argument, toont het een directory met de
beschikbare howto's. Wanneer vervolgens ingevoerd met het eerste deel
van de bestandsnaam (voor het koppelteken) als een argument, toont het
dan het gedecomprimeerde bestand (waarbij het origineel intact blijft).
Om bijvoorbeeld de Serial-HOWTO.gz te bekijken, typ je:
$ howto Serial
zocki@goldfish.cube.net
Dit is een klein script waarmee van tijd tot tijd wordt gecontroleerd of er voldoende vrije ruimte beschikbaar is op alles wat mount laat zien (disks, cdrom, diskette...)
Als de ruimte opraakt, wordt iedere X seconden op het scherm een melding weergegeven en 1 mailbericht per gevuld device afgevuurd.
#!/bin/sh
#
# $Id: Tips-HOWTO-NL.sgml,v 1.3 2003/11/22 14:36:34 bokkie Exp $
#
#
# Sinds ik tijdens het compileren mysterieuze foutmeldingen kreeg toen
# tmp bestanden mijn disks opvulden, schreef ik dit om een waarschuwing te
# krijgen voordat de disks vol zijn.
#
# Als hiermee werd voorkomen dat je servers explodeerde
# stuur dan een lovende email naar zocki@goldfish.cube.net.
# Als je site hierdoor afbrandt, dan sorry, maar ik heb je
# gewaarschuwd: geen klachten.
# Vergeef me alsjeblieft als je echt weet hoe met sed om te gaan :)
#
#
# Alle gekheid op een stokje: Plaats `check_hdspace &' in rc.local.
# Controleer iedere $SLEEPTIME sec. op vrije ruimte op devices.
# Je zou zelfs je diskettes of tape drives erop kunnen controleren. :)
# Als de vrije ruimte onder de $MINFREE (kb) komt, zal er een waarschuwing
# op het scherm weerkaatsen en voor elke device waarop een tekort aan
# ruimte is geconstateerd een mail worden gestuurd aan $MAIL_TO_ME.
# Als er weer meer vrije ruimte is dan de limiet, gaat het ook weer gepaard
# met een mailactie.
# TEDOEN: Verschillende $MINFREE voor elk device.
# Bevrijd /*tmp dirs veilig van oude rommel als er geen vrije ruimte meer is.
DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # device; hier plaats je disks
MINFREE=20480 # kb; hieronder een waarschuwing
SLEEPTIME=10 # sec; pauze tussen controles
MAIL_TO_ME='root@localhost' # dwaas; aan wie de waarschuwingsmail
# ------- geen wijzigingen nodig onder deze regel (hopelijk :) -------
MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024 # ja, we zijn strict :)
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 "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE." >&2
#echo "meer code/tekst hier plaatsen" >&2
echo -e "\a\a\a\a"
if [ -z "`echo $MAILED | grep -w $DEVICE`" ] ; then
echo "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE. (Trigger is ingesteld op $MINMB mb)" \
| mail -s "WAARSCHUWING: Slechts $ISMB vrij op $DEVICE!" $MAIL_TO_ME
MAILEDH="$MAILED $DEVICE"
MAILED=$MAILEDH
# plaats verdere acties, zoals opschonen van
# */tmp dirs hier...
fi
elif [ -n "`echo $MAILED | grep -w $DEVICE`" ] ; then
# Verwijder mailed markering als er weer voldoende
# diskruimte is. Zodat we klaar staan voor nieuwe
# mailactie.
MAILEDH="`echo $MAILED | sed s#$DEVICE##`"
MAILED=$MAILEDH
fi
done
sleep $SLEEPTIME
done
Ben je net als ik, dan heb je een lijst met 430 subscribers, plus 100+ berichten
per dag die via UUCP binnenkomen. Wat moet een hacker met zulke grote logs?
Installeer chklogs, dat is wat je kunt doen.
Chklogs is geschreven door Emilio Grimaldo, grimaldo@panama.iaehv.nl
,
en de huidige versie 1.8 is beschikbaar vanaf
ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz.
Het is tamelijk eenvoudig te installeren (je zult natuurlijk de info
in de doc subdirectory erop nazien). Zodra je het hebt geïnstalleerd,
voeg je als volgt een crontab record in:
# Voer dagelijks chklogs uit om 9:00PM.
00 21 * * * /usr/local/sbin/chklogs -m
ohammers@cu-online.com
Maak een bestand aan met de naam rmcores (de auteur noemt het handle-cores) met daarin het volgende:
#!/bin/sh
USAGE="$0 <directory> <message-file>"
if [ $# != 2 ] ; then
echo $USAGE
exit
fi
echo Aan het verwijderen...
find $1 -name core -atime 7 -print -type f -exec rm {} \;
echo e-mailen
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
echo $name
cat $2 | mail $name
done
En laat het middels een cron job zeer vaak uitvoeren.
A.Cox@swansea.ac.uk
Snelle manier om een gehele structuur met bestanden van de ene naar de andere disk te verplaatsen
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)
[ Wijziging van cd /source/directory; tar....enz.
ter voorkoming van een ramp waarmee de directory mogelijk wordt verwijderd.
Met dank aan Jim Dennis, jim@starshine.org, dat hij me dit liet weten.
-Maint. ]
mick@lowdown.com
Je ooit afgevraagd welke directory's het grootst zijn op je computer? Zo kom je daar achter.
du -S | sort -n
Eer komt John Fisk toe, oprichter van de Linux Gazette. Dit is een uitstekend e-zine en het is GRATIS!!! Wat valt er meer te wensen? Bekijk het op:
http://www.linuxgazette.com
BTW, Het schijnt dat (1) LG nu per maand uitkomt, en (2)
John Fisk het niet langer onderhoudt, de lui bij SSC doen dit.
stern@amath.washington.edu
Ik weet niet of veel mensen dit probleem hebben, maar er is een "faciliteit"
van GNU make versie 3.70 die ik niet prettig vind. Het gaat erom dat VPATH
zich raar gedraagt als je het een absolute padnaam opgeeft. Er is een
uiterst degelijke patch waarmee dit wordt gecorrigeerd, die je kunt krijgen
van Paul D. Smith <psmith@wellfleet.com>
. Hij post de documentatie
en patch ook na elke revisie van GNU make in de nieuwsgroep
"gnu.utils.bug" Over het algemeen pas ik deze patch toe en
hercompileer gmake op elk systeem waarop ik toegang heb.
dal@wimsey.com
V: Hoe stop ik e2fsck dat het mijn disk elke keer bij het booten controleert.
A: Wanneer je de kernel opnieuw bouwt, wordt het bestandssysteem als `dirty' gemarkeerd en dus zal je disk bij elke boot worden gecontroleerd. Je kunt dit corrigeren door het opstarten van:
rdev -R /zImage 1
Dit corrigeert de kernel zodat het er niet langer van overtuigd is dat het bestandssysteem `dirty' is.
Noot: Voeg als je lilo gebruikt read-only
toe aan je linux
setup in je lilo config bestand (gewoonlijk /etc/lilo.conf)
jon@gtex02.us.es
Als je vaak device busy fouten krijgt bij een shutdown die veroorzaken dat op het bestandssysteem bij een reboot een fsck moet worden toegepast, dan is hier een eenvoudige correctie:
Voeg aan /etc/rc.d/init.d/halt
of /etc/rc.d/rc.0
de regel
mount -o remount,ro /mount.dir
toe voor alle gemounte bestandssystemen, behalve voor /, voor de aanroep
naar umount -a. Dit betekent dat als het een shutdown om de een of andere reden
niet lukt alle processen te killen en de disks te unmounten, ze bij een reboot
toch clean zullen zijn. Het bespaart mij bij een reboot een heleboel tijd.
simon@foobar.co.uk
ls -l | sort +4n
Of voor degenen voor wie de ruimte er werkelijk op aankomt duurt dit wel even, maar het werkt geweldig:
cd /
ls -lR | sort +4n
mdickey@thorplus.lib.purdue.edu
#!/bin/sh
# /usr/local/bin/print
# een eenvoudige opgemaakte afdruk, om het iemand mogelijk te maken
# 3 gaten in de uitvoer te ponsen en het samen te binden
cat $1 | pr -t -o 5 -w 85 | lpr
rockwell@nova.umd.edu
Ik noem dit script 'forall'. Gebruik het als volgt:
forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
Hier is forall:
#!/bin/sh
if [ 1 = `expr 2 \> $#` ]
then
echo Gebruik: $0 dir cmd [optargs]
exit 1
fi
dir=$1
shift
find $dir -type f -print | xargs "$@"
tolnas@nestor.engr.utk.edu
Hier is een simpel tweeregelig script waarmee directory's worden afgedaald om emacs auto-save (#) en backup (~) bestanden, .o bestanden en TeX .log bestanden te verwijderen. Het comprimeert tevens .tex bestanden en README bestanden. Ik noem het op mijn systeem 'squeeze'.
#!/bin/sh
#SQUEEZE verwijdert onnodige bestanden en comprimeert .tex en README bestanden
#Door Barry tolnas, tolnas@sun1.engr.utk.edu
#
echo squeezing $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 {} \;
simon@foobar.co.uk
ps -aux | sort +4n
-OF-
ps -aux | sort +5n
Tips-HOWTO Maintainer
Ik programmeer in mijn vrije tijd nogal wat in C en ik heb er de tijd voor genomen vi op te tuigen zodanig dat het C vriendelijk is. Hier is mijn .exrc:
set autoindent
set shiftwidth=4
set backspace=2
set ruler
Wat doet het? autoindent zorgt dat vi automatisch elke regel volgend op de eerste inspringt, shiftwidth stelt de afstand van ^T in op 4 spaties, backspace stelt de backspace modus in, en ruler zorgt dat het regelnummer wordt weergegeven. Denk eraan, om naar een specifiek regelnummer te gaan, stel 20, gebruik je:
vi +20 myfile.c
De meeste hackers hebben ctags reeds op hun computers, maar gebruiken het niet. Het kan erg handig zijn voor het wijzigen van specifieke functies. Stel dat je een functie hebt in één van de vele bronbestanden in een directory voor een programma dat je aan het schrijven bent, en je wilt deze functie vanwege updates wijzigen. We zullen deze functie foo() noemen. Je weet niet waar het zich in het bronbestand bevindt. Hier komt ctags om de hoek kijken. Wanneer het wordt uitgevoerd, produceert ctags een bestand met de naam tags in de huidige dir, wat uit een opsomming bestaat met alle functies, in welke bestanden deze zich bevinden en waar in het bestand. Het bestand tags ziet er ongeveer zo uit:
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)$/
Om bijvoorbeeld AddEndResize() met vim te wijzigen, geef je op:
vim -t AddEndResize
Hierdoor verschijnt het van toepassing zijnde bestand in de editor, met de
cursor aan het begin van de functie.
paul@geeky1.ebtech.net
Dit is een tamelijk algemeen probleem. Ik weet niet of RedHat deze bug al in hun distributie heeft gecorrigeerd, maar je kunt het zelf repareren. Als je in het bestand /etc/hosts kijkt, zul je zien dat het er ongeveer zo uitziet:
127.0.0.1 localhost jebox
Wanneer sendmail start, zoekt het je hostnaam op (in dit voorbeeld, jebox). Het bemerkt dan dat het IP van jebox 127.0.0.1 is. Sendmail heeft hier problemen mee, dus voert het de zoekopdracht nogmaals uit. Het gaat hier een tijdje mee verder totdat het uiteindelijk opgeeft en stopt. Het corrigeren van het probleem is zeer eenvoudig. Wijzig het bestand /etc/hosts zodat het er ongeveer zo uit komt te zien:
127.0.0.1 localhost
10.56.142.1 jebox
paul@geeky1.ebtech.net
De distributie van RedHat wordt geleverd met color-ls. Waarom ze het echter standaard niet voor kleurengebruik configureren, is me een raadsel. Zo kun je het corrigeren.
Typ als eerste: eval `DIRCOLORS`
Vervolgens, alias ls='ls --color=auto'
En plaats de 'alias.....' in /etc/bashrc
vps@unicorn.niimm.spb.su
Wat als je aan het compileren bent en je hebt een library gemist die moet worden gelinkt? Alle verslagen van gcc bestaan uit functienamen... Hier is een simpele opdracht dat zal vinden waarnaar je op zoek bent:
for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
tgetnum is hier de naam van de functie waar je naar op zoek bent.
Je hebt het programma waarschijnlijk in een binary met de naam test gecompileerd, nietwaar? Linux heeft een programma met de naam test, die test of een bepaalde conditie waar is, het produceert nooit enige uitvoer op het scherm. Probeer in plaats van gewoon test, het intikken van: ./test