Next Previous Contents

2. Korta tips

2.1 Praktiskt syslog-trick Paul Anderson, ansvarig för Tips-HOWTOn

Ändra i din /etc/syslog.conf och lägg in följande rad:

# Skicka allt till tty8
*.*                                     /dev/tty8
En sak att tänka på: KOM IHÅG ATT ANVÄNDA TABBAR! syslog gillar inte mellanslag...

2.2 Skalprogram för att läsa de där komprimerade HOWTOna Didier Juges, dj@destin.nfds.net

Från en nybörjare till en annan kommer här ett kort skalprogram som gör det enklare att läsa HOWTO-dokument. Mina HOWTOn finns i /usr/doc/faq/howto/ och är gzippade. Filnamnen är XXX-HOWTO.gz, där XXX är ämnet. Jag skapade följande skalprogram, vilket heter "howto", i katalogen /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

När det anropas utan argument så visar det en lista över de tillgängliga HOWTOna. När det sedan anropas med första delen av ett filnamn (innan bindestrecket) som argument så zippar det upp (och behåller originalet intakt) och visar dokumentet.

För att t.ex. läsa Serial-HOWTO.gz, skriv:

$ howto Serial

2.3 Finns det tillräckligt med ledigt minne? Hans Zoebelein, zocki@goldfish.cube.net

Här kommer ett kort skalprogram, vilket då och då kollar om det finns tillräckligt med ledigt utrymme tillgängligt på vad som helst som dyker upp i mount (hårddiskar, cdrom, disketter osv.).

Om utrymmet tar slut så visas ett meddelande var Xte sekunde på skärmen och ett e-brev skickas för varje full enhet.


#!/bin/sh

#
# $Id: check_hdspace,v 1.18 1996/12/11 22:33:29 root Exp root $
#

# 
# När jag gick mystiska felmeddelanden under en kompilering och
# tmp-filer fyllde upp mina diskar, skrev jag detta för att få en
# varning innan diskarna blir fulla.
#
# Om det här räddar dina servrar från att explodera, skicka ett
# e-brev till zocki@goldfish.cube.net och prisa mig.
# Om din brinner upp på grund av det så är jag ledsen, men jag 
# har varnat dig: inga kompensationer.
# Om du vet hur man hanterar sed så kan du förlåta mig :)

#
# Stoppa in det och glöm det: Stoppa 'check_hdspace &' i rc.local.
# Kollar efter ledigt utrymme på enheter varje $SLEEPTIME sekunder.
# Du kan till och med kolla disketter och bandenheter. :)
# Om det finns mindre än $MINFREE (kb) utrymme, så echo-as en varning
# och ett e-brev skickas för varje aktuell enhet till $MAIL_TO_ME.
# Om det återigen finns mer fritt utrymme än vad som är satt som gräns
# så skickas ett nytt e-brev.
#

# ATT GÖRA: Olika $MINFREE för olika enheter.
# Rensa ut gammalt skräp ur /*tmp-kataloger om utrymmet tar slut.

DEVICES='/dev/sda2 /dev/sda8 /dev/sda9'         # enhet; lägg in diskar här
MINFREE=20480                                   # kb; varning under detta
SLEEPTIME=10                                    # sek; sov mellan kollarna
MAIL_TO_ME='root@localhost'                     # dåre; vem som får mail


# ------- inga ändringar behövs under denna rad (förhoppningsvis :) -------

MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024         # jepp, vi är strikta :)

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  "VARNING: $DEVICE endast $ISMB mb ledigt." >&2
                        #echo "mera prylar här" >&2
                        echo -e "\a\a\a\a"
                        
                        if [ -z  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                echo "VARNING: $DEVICE endast $ISMB mb ledigt.      (Gränsen satt till $MINMB mb)" \
                                | mail -s "VARNING: $DEVICE endast $ISMB mb ledigt!" $MAIL_TO_ME
                                MAILEDH="$MAILED $DEVICE"
                                MAILED=$MAILEDH
                                # lägg in annat, som städning av */tmp-
                                # kataloger, här
                        fi
                        elif [ -n  "`echo $MAILED | grep -w $DEVICE`" ] ; then
                                # Bort med mailed-markeraren om det finns
                                # tillräckligt med utrymme igen, så att vi
                                # kan skicka nya e-brev.
                                MAILEDH="`echo $MAILED  | sed s#$DEVICE##`"
                                MAILED=$MAILEDH
                        fi
                        
                done
                sleep $SLEEPTIME

done

2.4 Verktyg för att rensa upp i dina loggfiler Paul Anderson, ansvarig för Tips-HOWTOn

Om du är so mjag så har du en lista med 250 prenumeranter, plus mer än 100 meddelanden per dag som kommer med UUCP. Tja, vad ska en hacker göra med sina enorma loggfiler? Installera chklogs. Chklogs är skrivet av Emilio Grimaldo, grimaldo@panama.iaehv.ln, och den senaste versionen (1.8) är tillgänglig via ftp från frp.iaehv.ln:/pub/users/grimaldo/chklogs-1.8.tar.gz. Det förklarar ganska bra självt hur du ska installera det (du ska naturligtvis även ta en titt på informationen i doc-katalogen). När du har isntallerat det ska du lägga till följande i crontab:

# Kör chklogs klockan 9 varje dag.
00 21 * * *       /usr/local/sbin/chklogs -m
När du ändå håller på, glöm inte att tala om för programmeraren vilket trevligt program det är :).

2.5 Praktiskt skalprogram för att städa upp core-filer Otto Hammersmith, ohammers@cu-online.com

Skapa en fil som heter rmcores (författaren kallar det handle-cores) med följande innehåll:


#!/bin/sh
USAGE="$0 <directory> <message-file>"

if [ $# != 2 ] ; then
        echo $USAGE
        exit
fi

 echo Tar bort...
find $1 -name core -atime 7 -print -exec rm {} \;

echo skickar e-brev
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
        echo $name
        cat $2 | mail $name
done

Sedan gör du så att ett cron-jobb kör det då och då.

2.6 Flytta kataloger mellan filsystem. Alan Cox, A.Cox@swansea.ac.uk

Ett snabbt sätt att flytta ett helt filträd från en disk till en annan är

(cd /käll/katalog && tar cf - . ) | (cd /dest/katalog && tar xvfp -)
[ Byt från cd /käll/katalog; tar...osv. för att förhindra möjligheten att katalogen förstörs om en olycka inträffar. Tack till Jim Dennis, jadestar@rahul.net, för att han gjorde mig uppmärksam på detta. -Ansvarige. ]

2.7 Ta reda på vilka kataloger som är störst. Mick Ghazey, mghazey@miso.lowdown.com

Har du någonsin funderat på vilka kataloger som är de största på din dator? Så här tar du reda på det:

du -S | sort -n

2.8 Linux Gazette

Kudos till John Fisk som grundade Linux Gazette. Det är en suverän e-tidning och den är GRATIS!!! Vad mer kan du önska dig? Ta en titt på:

http://www.ssc.com/lg
Förresten så visar det sig att (1) LG utges nu varje månad och (2) John Fisk har inte längre hand om det, utan människorna på SSC.

2.9 Hänvisning till en patch till GNU Make 3.70 för att ändra VPATH-beteendet. Ted Stern, stern@amath.washington.edu

Jag vet inte om många har detta problem, men det finns en egenskap hos GNU Make version 3.70 som jag inte tycker om. Det är att VPATH beter sig udnerligt om du anger en absolut sökväg. Det finns en extremt stabil patch för att fixa detta, vilken du kan få från Paul D. Smith <psmith@wellfleet.com>. Han publicerar dokumentationen och patchen i nyhetsgruppen gnu.utils.bug efter varje uppdatering av GNU Make. Själv lägger jag till den här patchen och kompilerar om gmake på varje system jag har tillgång.

2.10 Hur får jag mitt system att inte köra fsck efter varje bootning? Dale Lutz, dal@wimsey.com

F: Hur får jag e2fsck att inte kolla min hårddisk varenda gång jag bootar om?

S: När du kompilerar om kärnan så markeras filsystemet som "smutsigt" (dirty) och din hårddisk kommer då kollas efter varje ombootning. För att fixa detta kör du:

rdev -R /zImage 1

Detta fixar kärnan, så att den inte längre är övertygad om att filsystemet är smutsigt.

Obs: Om du använder lilo, lägg till read-only till Linux-avdelningen i din konfigureringsfil för lilo (vanligtvis /etc/lilo.conf).

2.11 Hur man undviker fsck orsakade av "device busy" då man bootar om. Jon Tombs, jon@gtex02.us.es

Om du ofta får "device busy"-fel som gör att filsystemet måste gå igenom en fsck, då du kör shutdown, så kommer här en enkel lösning:

Lägg till raden

mount -o remount,ro /mount.dir
till /etc/rc.d/init.d/halt eller /etc/rc.d/rc.0.

Gör detta för varje monterat filsystem utom /, innan anropet till umount -a. Detta betyder att om shutdown av någon anledning misslyckas med att döda alla processer och avmontera alla diskar så kommer de fortfarande att vara rena då du bootar om. Detta spar en massa tid för mig då jag bootar om.

2.12 Hur du hittar de största filerna på din hårddisk. Simon Amor, simon@foobar.co.uk

ls -l | sort +4n

Om du har väldigt dåligt med utrymme så funkar även det följande, men kan ta en hel del tid:

cd /
ls -lR | sort +4n

2.13 Hur du skriver ut sidor med marginal för hålslag. Mike Dickey, mdickey@thorplus.lib.purdue.edu


        #!/bin/sh
        # /usr/local/bin/print
        # en enkel formatterad utskrift, för att att låta någon
        # ta hål på utskriften och sätta den i en pärm

        cat $1 | pr -t -o 5 -w 85 | lpr

2.14 Ett sätt att söka igenom filträd efter ett visst reguljärt mönster. Raul Deluth Miller, rockwell@nova.umd.edu

Jag kallar detta skalprogram "forall". Använd det så här:

forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
Här kommer forall:

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

2.15 Ett skalprogram för att städa upp efter program som skapar autosave- och backup-filer. Barry Tolnas, tolnas@nestor.engr.utk.edu

Här kommer ett enkelt skalprogram på två rader som rekursivt går ned genom kataloghierarkin och tar bort emacs autosave-filer (#) och backup-filer ( ), .o-filer och .log-filer som TeX skapar. Det komprimerar även .tex- och README-filer. Jag kallar det att "pressa ihop" mitt system.


#!/bin/sh
#SQUEEZE tar bort onödigt filer och komprimerar .tex- och README-filer
#Av Barry tolnas, tolnas@sun1.engr.utk.edu
#
echo pressar ihop $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 Hur du tar reda på vilken process som äter mest minne. Simon Amor, simon@foobar.co.uk

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

2.17 Ställa in vi för C-programmering Paul Anderson, Ansvarig för Tips-HOWTOn

Jag programmerar en massa C på min fritid och har tagit mig tid att ställa in vi så att det passar bra för C. Här är min .exrc:


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

Hur fungerar det? autoindent gör att vi automatiskt indenterar varje rad som följer en indenterad rad, shiftwidth ställer in tabblängden till 4 mellanslag, backspace slår på backspaceläget och ruler gör att det visar radnummer. Kom ihåg att du kan gå till en specifik rad, säg 20, genom att skriva:


vi +20 myfile.c

2.18 Varför hänger sig sendmail i fem minuter då man startar RedHat? Paul Anderson, paul@geeky1.ebtech.net

Det här är ett ganska vanligt problem, nästan så att det är en FAQ (ofta ställd fråga. övers.anm.). Jag vet inte om RedHat har fixat det här problemet i sin distribution, men annars kan du själv reparera det. Om du kollar i din /etc/hosts-fil så kommer du hitta något i stil med:

127.0.0.1               localhost       yourbox

När sendmail startas så kollar det din maskins namn (hostname) (i detta exempel är det yourbox). Det ser då att IP-numret för din yourbox är 127.0.0.1, vilket sendmail inte tycker om och gör kollen igen. Det fortsätter så med detta ett tag, tills det ger upp och avslutas. Att lösa detta är extremt enkelt, lägg bara in något i stil med

127.0.0.1               localhost
10.56.142.1             yourbox
i din /etc/hosts-fil.

2.19 Hur ställer jag in RedHat så att det använder färg-ls? Paul Anderson, paul@geeky1.ebtech.net

RedHats distribution kommer med färg-ls och varför de inte ställer in det för att använda det som standard är bortom min fattningsförmåga. Här kommer en lösning.

Skriv först eval `DIRCOLORS`

Skriv sedan alias ls='ls --color=yes'

Lägg in 'alias....' i din /etc/bashrc

2.20 Hur tar jag reda på vilket bibliotek i /usr/lib som innehåller en viss funktion? Pawel Veselow, vps@unicorn.niimm.spb.su

Vad händer om du kompilerar och du har missat något bibliotek som måste länkas in? Allt gcc rapporterar är funktionsnamn... Här kommer ett enkelt kommando som gör att du kan hitta det du letar efter:

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

tgetnum är namnet på den funktion du letar efter.


Next Previous Contents