Uredite datoteko /etc/syslog.conf
in vstavite naslednjo vrstico:
Opozorilo: NE POZABITE UPORABITI TIPKE TAB! Syslog ne mara presledkov.# Izpiši vse na tty8 *.* /dev/tty8
Začetnik začetniku. Tu je kratek skript, ki vam bo olajšal iskanje
in ogledovanje spisov howto. Moji HOWTO so v imeniku /usr/doc/faq/howto/
in so stisnjeni s programom gzip
. Imena datotek so
XXX-HOWTO.gz
, pri čemer XXX
predstavlja temo.
V imeniku /usr/local/sbin
sem ustvaril naslednji
skript in ga poimenoval "howto
":
Kadar skript kličete brez argumenta, ta izpiše imenik s HOWTO, ki so na voljo, kadar pa vnesete prvi del imena datoteke (pred vezajem) kot argument, samodejno raztegne in izpiše spis (izvirnik pri tem ostane nespremenjen).#!/bin/sh if [ "$1" = "" ]; then ls /usr/doc/faq/howto | less else gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less fi
Če si želite ogledati spis Serial-HOWTO, vnesite:
$ howto Serial
V tem razdelku boste našli kratek skript, ki bo tu in tam
preveril, ali je še dovolj prostora na napravah, ki jih lahko
izpišete z ukazom mount
(diski, CD-ROM, disketa,)
Če zmanjkuje prostora, se na zaslonu vsakih X sekund izpiše sporočilo, o vsaki zapolnjeni napravi pa boste dobili tudi elektronsko sporočilo.
#!/bin/sh # # Id: check_hdspace,v 1.18 1996/12/11 22:33:29 root Exp root # # # Ko so mi datoteke tmp zapolnile diske, sem začel prejemati skrivnostna # sporočila o napakah. Zato sem spisal tale skript, ki me opozori, preden # se diski zapolnijo. # # Če te vrstice obvarujejo vaš strežnik, preden se zruši, # pošljite elektronsko sporočilo z zahvalami zocki@goldfish.cube.net. # Obžalujem, če vam tale skript povzroča težave, ampak # saj sem vas posvaril: brez pritožb, prosim. # Če res obvladate delo s sed, mi, prosim, oprostite :) # # # Poženi in pozabi: V rc.local vstavite 'check_hdspace &'. # Preveri količino nezasedenega prostora na napravah vsakih $SLEEPTIME sekund. # Preverite lahko tudi diskete in tračne enote. :) # Če je nezasedenega prostora manj kakor $MINFREE (kb), bo sprožila opozorilo # in poslala eno elektronsko sporočilo za vsako triggering napravo # na $MAIL_TO_ME. # Če je prostora več, kot je spodnja meja, podana z omejitvijo, pri # kateri se sprožijo opozorila, se tudi opravilo elektronskega # pošiljanja znova opremi. # # NALOGA: Različen $MINFREE za vsako napravo. # Če zmanjka prostora na disku, iz imenikov /*tmp varno odstrani # staro šaro. DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # naprava; tu navedite diske # sproži opozorilo SLEEPTIME=10 # sec; mirovanje med preverjanjem MAIL_TO_ME='root@localhost' # fool; kdo prejme opozorilo # ------ pod to vrstico ni treba vnašati sprememb (vsaj upam :) ------- MINMB=0 ISFREE=0 MAILED="" let MINMB=$MINFREE/1024 # ja, mi smo dosledni :) 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 "OPOZORILO: $DEVICE samo $ISMB mb prosto." >&2 #echo "sem pridejo dodatne stvari" >&2 echo -e "\a\a\a\a" if [ -z "`echo $MAILED | grep -w $DEVICE`" ] ; then echo "OPOZORILO: Na $DEVICE samo $ISMB mb prosto. (Sprožilec je nastavljen na $MINMB mb)" \ | mail -s "OPOZORILO: Na $DEVICE le $ISMB mb prosto!" $MAIL_TO_ME MAILEDH="$MAILED $DEVICE" MAILED=$MAILEDH # sem vstavite še druga opravila, npr. čiščenje # imenikov */tmp... fi elif [ -n "`echo $MAILED | grep -w $DEVICE`" ] ; then # Če je dovolj prostora, skript odstrani # oznako, da je bila elektronska pošta poslana. # Pripravljeni smo za novo opravilo pošiljanja # elektronske pošte. MAILEDH="`echo $MAILED | sed s#$DEVICE##`" MAILED=$MAILEDH fi done sleep $SLEEPTIME done
Če ste taki kakor jaz, imate seznam 430 naročnikov plus 100+
sporočil na dan prek UUCP. Torej, kaj naj heker naredi s temi
gromozanskimi dnevniki? Namesti naj chklogs
. Avtor programa
chklogs
je Emilio Grimaldo, grimaldo@panama.iaehv.nl
,
trenutno različico 1.8, ki sama po sebi daje dovolj informacij o poteku
namestitve (seveda bi bilo dobro preveriti tudi informacije v imeniku
doc
), pa najdete na
ftp://ftp.iaehv.nl/pub/users/grimaldo/chklogs-1.8.tar.gz.
Ko boste program namestili, dodajte vnos crontab
v naslednji obliki:
Ko ste že pri tem, ne pozabite omeniti avtorju, kako uporaben program je to :)# Vsak dan ob 21:00 zaženi chklogs. 00 21 * * * /usr/local/sbin/chklogs -m
Ustvarite datoteko z imenom rmcores
(avtor jo imenuje
handle-cores
) in naslednjo vsebino:
Naj jo opravilo#!/bin/sh USAGE="$0 <directory> <message-file>" if [ $# != 2 ] ; then echo $USAGE exit fi echo Brišem... 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
cron
zažene vsake toliko časa.
Hitri premik celotne drevesne strukture datotek z enega diska na drugega
(Da bi se izognili izgubi imenikov, če bi se zgodila nesreča, se premaknite iz(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)
cd /source/directory; tar
itd. Hvala Jimu Dennisu,
jim@starshine.org
, ki me je opozoril na to. -Vzdrževalec)
Ali vas je že kdaj zanimalo, kateri imeniki so v vašem računalniku največji? To lahko ugotovite na naslednji način:
du -S | sort -n
Zasluge ima John Fisk, avtor glasila za Linux. To je odličen e-zine plus in še brezplačen! Kaj bi si še lahko želeli? Oglejte si http://www.linuxgazette.com.
MMG, izkaže se, da (1) glasilo za Linux (LG) zdaj izhaja enkrat na mesec in (2) John Fisk ni več njegov urednik. Zdaj skrbi zanj ekipa pri SSC.
Ne vem, ali ima veliko ljudi podobne težave, vendar ima GNU make
različice 3.70 "lastnost", ki mi ni všeč. Namreč to, da se VPATH
čudno vede,
če podaste absolutno pot do datoteke. Na voljo je zelo dober popravek, ki
te težave odpravi. Dobite ga od Paula D. Smitha
<psmith@wellfleet.com
>. Po vsaki popravljeni izdaji
programa GNU make
ustrezne popravke in dokumentacijo tudi objavi v novičarski skupini
"gnu.utils.lug
". Ta popravek uporabim in spet prevedem
gmake
v vsakem sistemu, do katerega imam dostop.
V: Kako naj preprečim programu e2fsckm
, da bi ob vsakem zagonu
preverjal diske?
O: Ko znova zgradite jedro, je datotečni sistem označen kot "umazan", torej bo vaš disk pregledan vsakič, ko boste zagnali računalnik. To preprečite, če zaženete:
S tem popravite jedro tako, da datotečnega sistema ne bo več obravnaval kot umazanega.rdev -R /zImage 1
Opozorilo: Če uporabljate lilo, naj bo nastavitev za Linux v
nastavitveni datoteki za lilo (navadno je to /etc/lilo.conf
)
namenjena "samo za branje" (read-only).
Če pri zaustavitvi sistema pogosto dobite sporočilo o zasedenosti naprav, kar povzroči, da se ob vnovičnem zagonu izvede preverjanje datotečnega sistema, se lahko temu izognete takole:
V datoteko /etc/rc.d/init.d/halt
ali /etc/rc.d/rc.0
pred izvedbo ukaza umount -a
dodajte vrstico
za vsak priključen datotečni sistem, razen zamount -o remount,ro /mount.dir
/
. To pomeni, da če se
pri zaustavitvi zaradi določenih razlogov ne prekinejo vsi procesi in
se ne izvede odklop diskov, bodo ti ob vnovičnem zagonu vseeno čisti. S
tem med zagonom pridobim veliko časa.
Tisti, ki ste zares na tesnem s prostorom, lahko uporabite tudi naslednji način. Resda bo trajalo nekaj časa, a odlično deluje:ls -l | sort +4n
cd / ls -lR | sort +4n
#!/bin/sh # /usr/local/bin/print # preprosta urejena oblika izpisa na list, da ga boste lahko # preluknjali in vstavili v mapo. cat $1 | pr -t -o 5 -w 85 | lpr
Ta skript imenujem 'forall
' (za vse). Uporabite ga na naslednji
način:
Pa še vsebina skriptaforall /usr/include grep -i ioctl forall /usr/man grep ioctl
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 "$@"
Tu je preprost dvovrstični skript, ki preišče ureditev imenika in
odstrani emacs
ove samodejno shranjene (#
) datoteke,
varnostne kopije
datotek (-
), datoteke .o
in datoteke .log
,
ki jih naredi TeX. Prav tako ga lahko uporabite za stiskanje datotek
.tex
in README
. V svojem
sistemu sem ga imenoval 'squeeze
' (stiskač).
#!/bin/sh #SQUEEZE odstrani nepotrebne datoteke in stisne datoteke .tex in README #Avtor 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 {} \;
-ALI-ps -aux | sort +4n
ps -aux | sort +5n
V prostem času veliko programiram v programskem jeziku C, zato sem
pripravil program vi
, tako da je primeren za programiranje v tem
jeziku. Tu je moj .exrc
:
Čemu rabijo te nastavitve?set autoindent set shiftwidth=4 set backspace=2 set ruler
Autoindent
povzroči, da vi
avtomatsko
poravna vsako vrstico glede na poravnavo prve vrstice, shiftwidth
nastavi razdaljo ^T
na štiri presledke, backspace
nastavi
način backspace,
ruler
pa povzroči, da vi
izpisuje število vrstic.
Če se želite pomakniti
v določeno vrstico, npr. dvajseto, uporabite:
vi +20 myfile.c
Večina hekerjev ima ctags
že nameščen v svoj računalnik, vendar
ga ne uporabljajo. Zelo uporaben je lahko pri urejanju določenih
funkcij. Predpostavimo, da imate v eni izmed številnih izvirnih datotek v
imeniku programa, ki ga pišete, neko funkcijo, ki bi jo radi
posodobili. To funkcijo bomo poimenovali foo()
. Prav tako ne veste,
kje v izvirni datoteki je ta funkcija. V tem primeru vam lahko pomaga
ctags
. Ko ga zaženete, program v trenutnem imeniku ustvari datoteko z
imenom tags
, ki obsega seznam vseh funkcij, podatke, v katerih
datotekah so te funkcije in kje so v datotekah said. Datoteka tags
je videti nekako tako:
Da bi uredili npr. funkcijoActiveIconManager 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)$/
AddEndResize()
v programu vim
,
zaženite:
S tem boste ustrezno datoteko odprli v urejevalniku, kazalec pa bo na začetku funkcije.vim -t AddEndResize
To je precej pogosta težava, skoraj že FAQ. Ne vem, ali jo je RedHat
odpravil v svoji distribuciji, lahko pa jo odpravite sami.
Poglejte v datoteko /etc/hosts
in ugotovili boste, da je videti
nekako tako:
Ko se127.0.0.1 localhost vasaskatla
sendmail
zažene, poišče ime gostitelja (v tem primeru vasaskatla).
Potem ugotovi, da je IP za vasaskatla 127.0.0.1. Sendmail
tega ne
mara, zato začne novo iskanje. To nadaljuje tako dolgo, dokler končno
ne obupa in konča. To težavo je mogoče zelo enostavno odpraviti. Uredite
datoteko /etc/hosts
in jo preoblikujte nekako tako:
127.0.0.1 localhost 10.56.142.1 vasaskatla
Distribucija RedHat ima barvni ls
, ne vem pa, zakaj ne omogočijo uporabe
barv kot privzete nastavitve. Težavo rešite tako:
Najprej vnesite eval 'DIRCOLORS'
.
Nato alias ls='ls --color=auto'
.
In vstavite 'alias.....'
v datoteko /etc/bashrc
.
Kaj storiti, če prevajate neki program in pozabite vključiti potrebno knjižnico? Vsa poročila gcc so funkcijska imena.Tu je preprost ukaz, ki bo našel, kar iščete:
Kjer jefor i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
tgetnum
ime funkcije, ki jo iščete.
Verjetno ste program prevedli v binarno datoteko z imenom test
, mar
ne? Linux ima program z imenom test
, ki preveri, ali je določen
pogoj izpolnjen, in rezultata nikoli ne izpiše na zaslon. Namesto vnosa
test
uporabite ./test
.