Handige utilities

>> Index <<

Waarschuwing!

De beste manier om Linux te leren kennen is om de commando's gewoon uit te proberen. Doe dit echter nooit als root, maar als gebruiker! Maak eventueel als root een dummy user aan. In uw /home/dummy directory kunt u veilig experimenteren.



De besproken utilities zijn thematisch gerangschikt. U kunt ze afzonderlijk gebruiken, maar bedenk dat de kracht van de UNIX utilities in hun samenwerking ligt. En die mogelijkheden bepaalt u.

Onderwerp


Informatie verkrijgen


Zoeken en vinden


Printen


Bestandsbeheer


Systeem


Informatie verkrijgen

>> Top <<



man

De klassieke UNIX utilities hebben bijna altijd in een bepaalde stijl geformatteerde handleiding. De stijl van de handleidingen (manuals) is kort en bondig. Ze werden meestal door de programmeurs zelf gemaakt.

De manual pages worden door velen als obsoleet beschouwd. Het was ooit de bedoeling dat ze door het hypertext info systeem zouden worden vervangen, maar het zit er dik in dat op ht://Dig gebaseerde zoeksystemen deze rol gaan overnemen. Maar vooralsnog blijven ze bestaan, al was het alleen maar omdat er een zee van utilities bestaan om ze te doorzoeken en in beeld te brengen. Bovendien werken deze in tekstmodus geschreven programma's goed in terminal vensters. Aan een Windows HLP bestand hebt u zonder conversieprogramma niets.

Man less geeft de beschrijving van de opdracht "less".

man less

Man heeft veel opties: sommigen kregen een alias.

less

Het schermbeeld van man wordt vertoond door het pagineringsprogramma less. Less kan meer dan het onder OS/2 en DOS bekende more. Less laat zoeken en scrollen toe. Het scrollen gaat met de pijltjestoetsen. Het doorzoeken met n(ext).

Bekijk man less maar eens.

Met de spatiebalk bladert u een pagina verder. De b staat voor back, en de q staat voor quit.

Type h voor hulp over less' sneltoetsen.

h or H Help: display a summary of these commands. If you forget all the other commands, remember this one.

Belangrijke functies zijn "/patroon" of "?patroon" en "n(ext)" om verder te zoeken.

/ geeft een prompt links onderin. Hierachter typt u uw zoekterm (bijv. /help). Met Enter start het zoeken en met n(ext) sprint u naar de volgende treffers. Achteruit zoeken gaat met ?trefwoord (of Shift-/).

/trefwoord en ?trefwoord markeren meteen de gevonden trefwoorden in inverse video. Zo ziet u meteen waar u moet zijn. Het kunnen meerdere trefwoorden zijn, want less laat het doorzoeken van meerdere bestanden met reguliere expressies toe. Geen wonder dat UNIX guru's er verzot op zijn.

whatis

man -f

De uitvoer van whatis is kort en krachtig. Whatis geeft alleen de beschrijving van een manual page. Whatis maakt gebruik van een database die door root is te genereren (makewhatis).

sjoerd@laptop:~ > whatis man
man (1) - an interface to the on-line reference manuals
man (7) - macros to format man pages
sjoerd@laptop:~ > whatis apropos
apropos (1) - search the manual page names and descriptions
sjoerd@laptop:~ > whatis whatis
whatis (1) - display manual page descriptions

apropos

man -k

Apropos doorzoekt de manual pages op trefwoorden. Het levert vaak lange lijsten op, maar apropos (man -k) is bijzonder handig als u zich wilt oriënteren.

sjoerd@visser:~ > apropos man
gsftopk (1) - render a ghostscript font in TeX pk format ' # small and boldface (not all -man's provide it) SB\$1 \$2 ..
man (1) - an interface to the on-line reference manuals
man (7) - macros to format man pages
pod2man (1) - translate embedded Perl pod directives into man pages
rman (1) - reverse compile man pages from formatted form to a number of source formats
skel (9) - skeleton man page for section 9 entries
zshall (1) - the Z shell meta-man page
man (1) - an interface to the on-line reference manuals
man (7) - macros to format man pages
pod2man (1) - translate embedded Perl pod directives into man pages
rman (1) - reverse compile man pages from formatted form to a number of source formats
skel (9) - skeleton man page for section 9 entries
zshall (1) - the Z shell meta-man page

U kunt op veel terminal emulators met Shift-Page-up of Shift-pijl door de tekst scrollen. Of apropos gebruiken in combinatie met less:

sjoerd@laptop:~ > apropos zoekterm | less


info

Het info hypertekst hulpsysteem toont documentatie van een heleboel programma's. De volgende opdrachten werken op de prompt (onder X is xinfo de applicatie, maar ook KFM en andere webbrowsers kunnen de info-bestanden tonen).

info bash (zeer uit gebreid)

info info geeft het volgende scherm. Met de cursor op de sterretjes "klikken" (Enter) en verlaten met Ctr-C):

File: info, Node: Top, Next: Getting Started, Prev: (dir), Up: (dir)

Info: An Introduction
*********************
Info is a program for reading documentation, which you are using now.

To learn how to use Info, type the command `h'. It brings you to a programmed instruction sequence. If at any time you are ready to stop using Info, type `q'.

To learn advanced Info commands, type `n' twice. This brings you to `Info for Experts', skipping over the `Getting Started' chapter.

* Menu:

* Getting Started:: Getting started using an Info reader.
* Advanced Info:: Advanced commands within Info.
* Create an Info File:: How to make your own Info file.

--help

Veel uitvoerbare bestanden tonen hun gebruikers opties als ze opgeroepen worden met de optie --help. Zo ook Netscape. Denk om de dubbele koppeltekens (--).

sjoerd@visser:~ > netscape --help
Netscape 4.7/Fortify 15-Sep-99; (c) 1995-1998 Netscape Communications Corp.
usage: netscape [ options ... ]
where options include:

-help to show this message.
-version to show the version number and build date.
-display <dpy> to specify the X server to use.
-geometry =WxH+X+Y to position and size the window.
-visual <id-or-number> to use a specific server visual.
-install to install a private colormap.
-no-install to use the default colormap.
etc, etc


>> Top <<

Zoeken en vinden

>> Top <<

echo $variabele$

Echo $variabele$ (of echo $variabele) geeft de inhoud van een variabele weer.

sjoerd@visser:~ > echo $PATH$
/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games/bin:/usr/games:/opt/gnome/bin:/opt/kde/bin:.:/opt/bin$
sjoerd@visser:~ > set | less

of

sjoerd@visser:~ > env | less

laat u door alle omgevingsvariabelen bladeren. NB Het > doorvoerteken in de prompt is hier wat verwarrend. Maar er staat : env | less.

Een ouderproces (bijv. de shell) zal zijn variabelen aan zijn kindprocessen (de vanuit de shell gestarte programma's) doorgeven. Vaak zijn ze al door root ingesteld. Wilt u uw persoonlijke instellingen wijzigen, dan kunt u ze exporteren.

Als u niet met vi overweg kunt, is dit een handige ingang voor ~/.bashrc :

export EDITOR=/usr/bin/mcedit


find

Find doorzoekt de opgegeven mappen op een bestanden met specifieke kenmerken:

find [path...] [expression]

Belangrijk zijn de zoekopties voor bestandsnamen (-name [naam]) en bestandstypen (type=[b,d,d,f,p,l]):

Zonder [path...] doorzoekt find de huidige directory (en subdirectories).

find -name adres.dbf
find /home -name "*.gif"

Find is een krachtig hulpmiddel door de ondersteuning voor reguliere expressies.

find / -type d | du --one-file-system | sort -n -g -r | head -100 >~/top100.txt

Deze zoekopdracht geeft de top 100 van niet-gemounte directories (-type d). Met --one-file-system wordt voorkomen dat find ook /mnt gaat doorzoeken. De output wordt via een pijp op grootte gesorteerd (sort -n -g -r) en de bovenste 100 items (head 100) worden via een omleiding (>) naar het bestand top100.txt in uw home directory (~) opgeslagen.

find / -user sjoerd

zoekt alle bestanden van de gebruiker sjoerd op alle gemounte schijven. De optie --one-file-system beperkt dit tot uw huidige partitie.

Voor snel zoeken onder de KDE GUI is kfind (Ctrl-F) onder KFM aan te bevelen.

grep

Grep (global regular expression print) doorzoekt een of meer bestanden op een trefwoord of zoekstring. Grep geeft alleen de regels weer waarin de string aangetroffen werd.

grep 'string' bestand

Dit is de meest eenvoudige vorm. Als de zoekstring uit een enkel trefwoord bestaat mogen de enkelvoudige aanhalingsteken weggelaten worden.

sjoerd@visser:~ > grep "zoekwoord" /home/sjoerd/*

Grep is vooral handig om lange lijsten op trefwoordjes te doorzoeken.

Waneer was er een foutmelding met char-major-15?

root@visser:/home/sjoerd > cat /var/log/messages | grep char-major-15

Welke geïnstalleerde rpm's bevatten de string lib? De gefilterde output van rpm query all zou u weer in een nieuw bestand kunnen plaatsen( > bestand erachter).

sjoerd@visser:~ > rpm -qa |grep lib

Zonder grep moet u lang zoeken.

grep varianten

zgrep doorzoekt gezipte bestanden (.gz)

rgrep doorzoekt recursief (dus ook in subdirectories).

ngrep doorzoekt het netwerk

apropos grep laat zien dat er heel wat grep varianten bestaan.

sjoerd@visser:~ > apropos grep
egrep (1) - print lines matching a pattern
fgrep (1) - print lines matching a pattern
grep (1) - print lines matching a pattern
ngrep (8) - network grep
rgrep (1) - a recursive, highlighting grep program
zgrep (1) - search possibly compressed files for a regular expression
zipgrep (1) - search files in a ZIP archive for lines matching a pattern
egrep (1) - print lines matching a pattern
fgrep (1) - print lines matching a pattern
gitrgrep (1) - GNU Interactive Tools - recursive grep
grep (1) - print lines matching a pattern
grephistory (1) - display file names from Usenet history file
ngrep (8) - network grep
nisgrep (1) - regex searching in NIS+ tables
nngrep (1) - grep for news group names (nn)
pgrep (1) - a grep with Perl-compatible regular expressions.
rgrep (1) - a recursive, highlighting grep program
sgrep (1) - search a file for a structured pattern
zgrep (1) - search possibly compressed files for a regular expression
zipgrep (1) - search files in a ZIP archive for lines matching a pattern

locate

Locate is handig om bibliotheken te vinden:

root@visser:/home/sjoerd > locate libX11
/usr/i486-linux-libc5/lib/libX11.so
/usr/i486-linux-libc5/lib/libX11.so.6

Met de opdracht updatedb wordt een database aangemaakt.

whereis

Whereis doorzoekt de whereis database op een bestand. Duplicaten zijn hiermee op te sporen. Bedenk dat het pad van een user beperkter is dan het pad van de root. Toch kunt u met whereis programma's opsporen die root toegang vereisen:

sjoerd@visser:~ > ipchains --help
bash: ipchains: command not found
sjoerd@visser:~ > whereis ipchains
ipchains: /sbin/ipchains /usr/man/man8/ipchains.8.gz

De reden is dat root de whereis database heeft samengesteld.

which

Which doorzoekt uw pad ($PATH$) op een uitvoerbaar bestand. De output is de exacte locatie van het bestand . Hiermee kunt u nagaan welke versie u gebruikt.

sjoerd@visser:/ > which nedit
/usr/X11R6/bin/nedit


Printen

>> Top <<

Printen onder Linux gebeurt onder auspicien van de printer daemon lpd. Lpd plaatst de opdrachten in een wachtrij (spooler, queue) in /var/spool/...

lpr

Het Line Printer utility plaats bestanden in de printer wachtrij. Man lpr laat ook opties zien voor andere bestandsformaten.

lpr bestand1 bestand2

Print de genoemde tekstbestanden.

lpq

De printer wachtrij (queue) bezien. Hierbij wordt ook het job nummer van de printtaak zichtbaar. KDE gebruikers zullen het grafische frontend klpq waarderen.

Lprm printtaak

Verwijdert (rm=remove) een specifieke printtaak (job zoals weergeven door lpq).

lpc

Bestuurt de printer daemon (lpd) en de spooler.

sjoerd@visser:~ > lpc status
ascii:
queuing is enabled
printing is enabled
no entries
no daemon present
lp:
queuing is enabled
printing is enabled
no entries
no daemon present
raw:
queuing is enabled
printing is enabled
no entries
no daemon present

Om de line printer daemon en de wachtrij te manipuleren is het super-user account noodzakelijk. Er verschijnt een interactief menu. U kunt altijd met help of met help opdracht meer informatie krijgen.

sjoerd@visser:~ > su
Password:
root@visser:/home/sjoerd > lpc
lpc> help
Commands may be abbreviated. Commands are:

abort enable disable help restart status topq ?
clean exit down quit start stop up

lpc> help clean
clean remove cruft files from a queue
lpc> clean all
ascii:
lp:
raw:


tunelp

tunelp - set various parameters for the lp device

root@visser:~ > tunelp
Usage: tunelp <device> [ -i <IRQ> | -t <TIME> | -c <CHARS> | -w <WAIT> |
-a [on|off] | -o [on|off] | -C [on|off] | -q [on|off] | -s |
-T [on|off] ]

Voor de KDE bestaan er handige grafische frontends voor de hierboven genoemde tools (bijv. klpq).


Bestandsbeheer

>> Top <<

mc

De Midnight Commander (mc) is mijn meest favoriete bestandsbeheerder. Deze Norton Commander kloon heeft een eigen tekstverwerker (mcedit). Met F9 roept u in mc en mcedit een menu op. Als u alle opties van de mc kent en beheerst mag u zich gevorderd Linux gebruiker noemen.

GNU File utilities


du

Disk usage geeft de directory groottes aan.

du --one-filesystem / 2>/dev/null

De top 100 geeft:

find -type d | du -b --one-file-system | sort -n -g -r | head -100 >~/top100.txt

Het gaat hier alleen om de bestanden in de rootmap zelf (one-file-system). Bestanden in partities die op de / map gemount zijn worden niet meegenomen.

Du houdt geen rekening met slack. Met veel kleine bestanden kan de partitie dus veel eerder vol zitten dan u verwacht.

df

Diskfree geeft de vrije ruimte op de beschikbare (gemounte) partities aan.

sjoerd@laptop:~ > df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda7 1882344 1552056 330288 83% /
/dev/hda5 43885 3827 37792 10% /boot
shmfs 95448 0 95448 0% /dev/shm
//ecs/data 2080384 1910240 170144 92% /mnt/data
//zolder/samba 4851328 4518016 333312 94% /mnt/samba

Het Linux bestandssysteem maakt geen onderscheid tussen gemounte samba netwerkdrives en lokale partities.

NB. shmfs is het Shared Memory File System van versie 2.4 kernels; een POSIX.4 protocol om geheugen te delen.

dd

Een "Norton Ghost" voor Linux. Hiermee kunt u exacte mirrors van partities maken.

Het volgende commando kopieert hda1 block voor block naar naar /pad/bestand:

dd if=/dev/hda1 of=/<pad>/<bestand> bs=512

En:

dd if=/<pad>/<bestand> of=/dev/hda1 bs=512

zet de image vanaf een bootflop terug.

Voor zover ik kon nagaan lijkt dit alleen op typische linux bestandssystemen te lukken.

Een aardig alternatief voor ghost is Partition Image voor Linux.

tar

De tar tape archiver is meer dan een archiveringstool: tar kan ook complete directorystructuren ("bron") met permissies exact kopieren naar een nieuwe bestemming :

tar cf - bron | (cd bestemming; tar xvf -)

Maar klassiek is het een Tape ARchiveringstool. Een programma dat de inhoud van de vaste schijven naar een magnetisch band verstuurd (/dev/rmt0). Tar is hierbij nauw verbonden met GNU zip (gzip), dat de inhoud "on the fly" comprimeert of (bij de restore) decomprimeert.

Magnetische banden zijn seriele opslagmedia met een enorme capaciteit. Maar ze hebben ook een nadeel. Ze zijn niet snel en ze zijn niet willekeurig te beschrijven. Tar zorgt er voor dat alles byte voor byte (serieel) naar de tape geschreven wordt. En dat kan zelfs via een telefoonlijn. Maar even de inhoud van een 10 GB tar archief op de band bekijken zit er niet in. Zelfs niet als u het archief op een lokale vaste schijf zette.


Dit zijn de instellingen van een gecomprimeerde backup van een Linux partitie naar de partitie sda5 op de een USB schijf. Voer hem bij voorkeur uit op een moment dat dat er geen bestanden door andere gebruikers geopend zijn. Ideaal doet u dit vanuit een reddingspartitie, maar single user mode (init 1) kan ook uitkomst brengen.

mount /mnt/sda5
tar -zcvpf /mnt/sda5/archief/volledig-`date '+%d-%B-%Y'`.tgz /bin /boot /dev /etc /home /lib /opt /root /sbin /sys /usr /var --directory /mnt/ --exclude /mnt/sda5/archief --exclude=*.iso --exclude=*.mpg >> /root/root_backup.txt
exit

De volgende opties spelen een rol (GNU tar manual):

-c Creëer een nieuw archief. De naam van het archief wordt met "date" dynamisch aangemaakt:

/mnt/sda5/archief/volledig-`date '+%d-%B-%Y'`.tgz
-z filter het archief door gZip om het te comprimeren (niet aanbevolen voor al gecomprimeerde bestanden).

-v schrijf wat je doet naar het scherm (Verbose).

-p behoudt de bestandsPermissies (dit spreekt onder Linux vanzelf, maar kan soms weggelaten worden)

-f gebruik een archiefbestand (de default is het eerste removable media tape device: /dev/rmt0)

Andere niet gebruikte opties zijn:

-l Blijf in het Lokale bestandssysteem: gemounte drives worden dan als lokaal gezien.

--exclude=*.tgz De meeste tgz bestanden zijn later wel weer terug te vinden.

--exclude=proc Deze optie zou weg kunnen worden gelaten omdat de meeste instellingen in de map /proc bij het booten al dynamisch worden aangemaakt.

--exclude=temp Deze optie zou weg kunnen worden gelaten omdat de meeste instellingen in de map /temp dynamisch worden aangemaakt. Maar aan de andere kant stellen programma's hier soms instellingen in.


Het grootste probleem met tar is dat het ook dynamische mappen als dev, media, mnt, proc en tmp meeneemt. In het ergste geval worden zelfs de inhoud van een aangekoppelde DVD of het nog niet voltooide backup-bestand in de backup meegenomen. Hiervoor dienen exclusielijsten, maar persoonlijk geef ik liever op wat ik wel wi backuppen dan wat ik niet mee wil nemen. vandaat dat ik gewoon een lijst aanmaak van de te backuppen mapen.

Een ander probleem als u een backup van het systeem aanmaakt is dat u dit doet op een multi-usersysteem. Dus terwijl u de /var/spool/mail backupt kan er nog post aan binnen komen. En als het bestand zowel door tar als door het mail systeem en een virusscanner benaderd wordt kan er dataverlies optreden.

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7517 root 17 0 1704 640 268 R 62.8 0.1 16:40.85 gzip
7765 root 18 0 50424 44m 1108 R 17.2 8.8 2:03.71 nvcc
7507 root 16 0 2292 1084 820 D 10.6 0.2 0:54.77 tar
4308 root 15 0 0 0 0 S 2.0 0.0 0:31.67 usb-storage

Om die reden beschikt Linux ook over de single user mode. Deze is door root op te starten met de opdracht "init 1". Nu is er maar een gebruiker en dat is root. U zou daar het volgende backup script mee kunnen uitvoeren. Ideaal doet u dat 's nachts als verder niemand de computer gebruikt.

Backup via een shell script.

Een prachtig shellscript om backups naar een tweede vaste schijf mee uit te voeren is:

#!/bin/sh
cd /mnt/backup/temp # In deze map heb ik veel ruimte!
for i in /bin /boot /etc /home /lib /opt /root /sbin /sys /usr /var
do
tar cvzf /mnt/backup/archief/$i.`date +%Y%m%d`.tar.gz $i &
done
wait
echo "De Backups zijn klaar!"

Er wordt nu per map een archief met datum aangemaakt. Bijv. : boot.20051202.tar.gz. De backups verlopen parallel, wat dus wel meer fragmentatie oplevert. Normaal werkt tar de bestanden serieel af (tar=tape archiver ). Voor gebruik van het script in cron script laat u de laatste twee regels eruit. De opdracht "tar cvzf /mnt/backup/archief/$i.`date +%Y%m%d`.tar.gz $i" geeft de datum als 2 december 2005 weer. De korte Amerikaans schrijfwijze heeft als voordeel dat een alfabetische weergave meteen ook op datum sorteert.

In het begin wordt /mnt/backup/temp tot actieve directory gemaakt. Dit voorkomt dat de / map verstopt raakt met de tijdelijke bestanden. Het systeem zal dan vastlopen. Mocht /mnt/backup/temp te weinig ruimte hebben, dan geldt dat ook voor /mnt/backup/archief.

cpio

Copy In-Out is vooral handig voor backups.

touch

Met touch [bestandsnaam] krijgt het bestand de actuele datum als datum van laatste wijziging. Dit aanraken is handig als u bestand mee wilt nemen in een backup van recent gewijzigde bestanden (incrementele backup). Als het bestand niet bestaat maakt touch een leeg bestand aan (bijv. een PID bestand). En voor WINE soms ook een essentiële Windows DLL...


Systeem

>> Top <<

cat

De manual zegt over cat: concatenate files and print on the standard output. Met cat kun je bestanden met elkaar verbinden. De eenvoudigste vorm cat bestand geeft de bestandsinhoud op het scherm (de standard output is het scherm) weer. Doe dit niet met binaire bestanden. Deze moeten naar een nieuw bestand worden geleid.

Wat heeft cat met het systeem van doen?

In de map /proc/ is met "cat bestandsnaam" veel systeeminformatie op te vragen. De nummers van de mappen slaaan op de lopende processen. /proc/1/ geeft dus informatie over init.

cat -A /proc/*

geeft de inhoud van de bestanden in /proc/ op het scherm weer.

ps

Het ps (report process status) commando heeft veel meer opties dan u wellicht kent. Zo kan ps m het geheugengebruik en ps x de processortijd van processen schatten. Zie: man ps. Ps a geeft alle processen (ook van andere gebruikers), ps a x is nog uitgebreider. Ps l geeft een long format.

Als ps een onoverzichtelijke output geeft kunt u met ps | grep trefwoord gerichter zoeken. Hier wordt gezocht naar de Proces-ID van Netscape.

sjoerd@visser:~ > ps |grep nets
916 tty1 00:00:04 netscape
925 tty1 00:00:00 netscape


kill

Met het kill commando kunt u vastgelopen processen beeindigen. De syntax is kill [Process ID]. Met ps kan de Process ID opgezocht worden. Hier wordt gepoogd een vastgelopen Netscape te killen, wat niet lukt. Een kill -9 [PID] killt Netscape wel.

sjoerd@visser:~ > ps |grep nets
916 tty1 00:00:04 netscape
925 tty1 00:00:00 netscape
sjoerd@visser:~ > kill 916
sjoerd@visser:~ > ps |grep nets
916 tty1 00:00:04 netscape
925 tty1 00:00:00 netscape
sjoerd@visser:~ > kill -9 916
sjoerd@visser:~ > ps -l |grep nets

Vanzelfsprekend mag een gebruiker alleen zijn eigen processen killen. Alleen root is in staat andermans en/of systeemprocessen beëindigen.

In het kader van het killen van processen wil ik wijzen op de van NT afgekeken KDE Taskmanager (ktop), een soort frontend ktop. Rechtsklikken op een proces laat de opties zien, waaronder meerdere opties om het proces te beëindigen.

Onder KDE kunt u dit met het doodshoofdje van Ctr-Alt-Esc (SIGKILL) bereiken. De controle wordt uitgevoerd met ps (via de pijl omhoog toets haalt u eerder gegeven commando's terug).

top

Top geeft een dynamisch overzicht van de lopende processen in less.

75 processes: 74 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 1.9% user, 3.5% system, 0.0% nice, 94.4% idle
Mem: 128140K av, 120252K used, 7888K free, 80272K shrd, 696K buff
Swap: 128484K av, 11024K used, 117460K free 47008K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
727 sjoerd 12 0 4392 4392 3204 S 0 3.7 3.4 1:50 ktop
1134 sjoerd 12 0 996 996 788 R 0 1.3 0.7 0:00 top
218 root 0 0 356 308 220 S 0 0.1 0.2 0:01 nscd
672 root 6 0 47872 46M 2024 S 0 0.1 37.3 2:15 X
1 root 0 0 80 68 48 S 0 0.0 0.0 0:04 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate
(etc,etc)

Met k(ill) vraagt top om het Process ID to kill (geforceerd afsluiten). Een programma met 100% cpu-use (Netscape) is een goede gegadigde. Met q(uit) sluit u top af.

free

Het utility free geeft het geheugengebruik in kilobytes aan.

sjoerd@visser:~ > free
total used free shared buffers cached
Mem: 128140 125132 3008 96184 1524 65088
-/+ buffers/cache: 58520 69620
Swap: 128484 384 128100

Total memory = fysiek geheugen, used = gebruikt geheugen, free = beschikbaar geheugen, shared = door applicaties gedeeld geheugen (m.n. via dynamisch gelinkte bibliotheken), buffers = beschikbaar voor I/O operaties (verg. DOS buffers) , cached = geheugen in de vaste schijf cache.

Total swap: de grootte van de swappartitie, used = op de HD geplaatst geheugen en free is de nog beschikbare swapspace.

De informatie is ook beschikbaar in file:///proc/meminfo

cron

De cron deamon (crond) van Paul Vixie voert op gezette tijden opdrachten uit. Crond leest zijn opdrachten uit een crontab configuratiebestand. Het systeem crontab bestand zit in /etc en dat van gebruikers in /var/spool/cron/tabs.

Het crontab bestand ziet er wat ingewikkeld uit, maar het komt er op neer dat u de steeds een tijdstip en een datum moet invoeren en daarna de opdracht. De variabelen in crontab worden door spaties gescheiden.

De door een spatie gescheiden crontab variabelen zijn: minuut uur dag maand weekdag opdracht.

Minuut van de opdracht (0-59).
Uur van de opdracht (0-23 uur, * is ieder uur */2 is om de twee uur).
Dag van de maand van de opdracht (1-31, * is iedere dag, */2 om de dag).
Maand van de opdracht (1-12, * is iedere maand).
Dag van de week van de opdracht (0-6, 0 staat voor zondag, * voor iedere dag en */2 om de dag).
En tenslotte de shell-opdracht, die meerdere elementen mag bevatten.

Hier zijn weer variaties op mogelijk. Het sterretje kwamen we al tegen. Het * betekent (afhankelijk van de lokatie) op iedere minuut, uur, dag, maand of weekdag. Maar als hierdoor conflicten ontstaan, bepalen de meer specifieke ingangen wat het wordt.

Als u op iedere weekdag van iedere maand om 12.10 uur een bepaalde opdracht wilt laten uitvoeren:

10 12 * * * opdracht

Als u dit alleen op vrijdagavond om 18.00 wilt doen:

0 18 * * 5 opdracht

In dit geval verliezen het derde en het vierde sterretje de betekenis "iedere", maar worden "geeft niet op welke" vrijdag.

U kunt ook meerdere opdrachten laten uitvoeren: u koppelt ze dan met een ; of een &. Met de punt komma worden ze achter elkaar uitgevoerd en met de ampersand starten ze bijna vrijwel tegelijkertijd op.

0 18 * * 5 opdracht1 ; opdracht2

In plaats van een getal op te geven, mag u ook reeks opgeven. Bijv. van maandag t/m vrijdag als 1-5. Met (alleen!) comma's kunt u meerdere getallen opgeven. Stel ik wil van 8 tot 17.45 uur iedere dag om het kwartier de post ophalen. En in het weekend om de twee uur.

0,15,30,45 8-17 * 1-5 /usr/bin/fetchmail -f /root/fetchmailrc
* */2 * * 0,6 /usr/bin/fetchmail -f /root/fetchmailrc

Hierboven heb ik ook de slash geïntroduceerd. */2 op dagplaats betekent om de dag. */4 op de uurlokatie betekent om de vier uur.

Gewoon op iedere dag (*) om het kwartier de post ophalen:

0,15,30,45 * * * * /usr/bin/fetchmail -f /etc/fetchmailrc

Wilt u niet dat er ieder kwartier een mail naar root gaat, verander het dan in:

0,15,30,45 * * * * /usr/bin/fetchmail -f /etc/fetchmailrc > /dev/nul 2>&1

Ik gebruik meestal de Midnight Commander (mc) voor het bewerken van /etc/crontab.

Maar de klassieke manier is gebruik van de opdracht crontab -e. Hiermee wordt de vi editor opgestart die (voor dit doel ) als volgt wordt bediend:

i typen om vi in de insert (invoegen) modus te zetten
Uw regels aanpassen
Esc typen om de insert modus te verlaten
Opslaan met :wq of ZZ (wq met :)

Het voordeel van de crontab -e(dit) methode is dat cron automatisch herstart wordt. Andere opties van crontab zijn -u(ser), -l(ist) en -d(elete). De bestanden worden in \var\spool\cron\tabs aangemaakt. Er vindt een eenvoudige syntax controle plaats. Want typt u in insert modus een * te weinig dan levert dit na het opslaan met :wq een foutmelding op:

SHELL=/bin/sh
MAILTO=root
# Draai om de 15 minuten fetchmail
0,15,30,45 * * * /usr/bin/fetchmail -f /etc/fetchmailrc
-- INSERT -- 2,15 All


"crontab.XXXXbC2HCo" 3L, 79C written
crontab: installing new crontab
"/tmp/crontab.XXXXbC2HCo":3: bad day-of-week
errors in crontab file, can't install.
Do you want to retry the same edit? y

Na de correctie eerst i(nsert), dan de vergeten * typen en afsluiten met :wq en ZZ) ziet u een correcte afsluiting:

"crontab.XXXXPnhi7t" 4L, 122C written
crontab: installing new crontab

Na het wijzigen van het systeem configuratiebestand met mc of een andere editor moet u de nieuwe crontab handmatig activeren!

zolder:/etc # /etc/init.d/cron restart
Shutting down CRON daemon done
Starting CRON daemon done

Wilt u een gemakkelijker editor dan vi gebruiken, voeg dan de regel:

export EDITOR=/usr/bin/mcedit

aan ~/bashrc toe (vereist installatie van pakket mc).

Cron onder SuSE

De map /etc van Suse Linux bevat ook mappen als cron.daily, cron.hourly, cron.monthly en cron.weekly. Hier kunt shell scripts in plaatsen die dan op gezette tijden door cron ( via een /etc/crontab ingang voor /usr/lib/cron/run-crons) worden opgestart. Ik heb er ook een cron.nu.niet map aan toegevoegd, waarmee ik scripts (of hun symlinks) tijdelijk kan deactiveren.

Zo staat er in cron.weekly een script dat wekelijks een backup maakt van /home en /root.

mount /mnt/hdd2
tar -czpvf /mnt/hdd2/archief/home-`date '+%d-%B-%Y'`.tgz /home /root exclude=*.mpg exclude=*.iso
exit



Tijd

>> Top <<

cal

Cal ([maand]) [jaar] drukt een calender af

sjoerd@laptop:~ > cal 12 4000
december 4000
zo ma di wo do vr za
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


date

date drukt de huidige datum en tijd af. Toets date --help voor de vele opties voor scripts.





>> Top <<
>> Index <<