/[glms]/glms/server.tex
ViewVC logotype

Diff of /glms/server.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.20 by GuruGeert, Thu Mar 13 16:05:38 2003 UTC revision 1.21 by GuruGeert, Mon Mar 17 21:37:00 2003 UTC
# Line 1719  te zien krijgen. Iedereen kan die share Line 1719  te zien krijgen. Iedereen kan die share
1719  kan erin schrijven (\texttt{writable = no}). De bestanden zelf zitten op onze Unix server  kan erin schrijven (\texttt{writable = no}). De bestanden zelf zitten op onze Unix server
1720  in de directory \file{/opt/export/software}.  in de directory \file{/opt/export/software}.
1721    
1722    Meer informatie: zie \url{http://www.samba.org/} en
1723    \url{http://www.riverdale.k12.or.us/linux/netadmin/samba.html}.
1724    
1725  \chapter{Firewall/gedeeld internet}  \chapter{Firewall/gedeeld internet}
1726  \section{Linux als gateway}  \section{Linux als gateway}
1727  Internet is opgebouwd uit een groot aantal onderling verbonden kleine netwerkjes.  Internet is opgebouwd uit een groot aantal onderling verbonden kleine netwerkjes.
# Line 2554  kan enkel maar de module \textit{Users a Line 2557  kan enkel maar de module \textit{Users a
2557  \label{webminsecretariaat}  \label{webminsecretariaat}
2558  \end{center}  \end{center}
2559  \end{figure}  \end{figure}
2560    
2561    \chapter{Elementair systeembeheer}
2562    Uiteraard kunnen we binnen het bestek van deze cursus onmogelijk een complete
2563    cursus systeembeheer aanbieden. Wat volgt dient dan ook eerder als het tipje
2564    van de sluier te worden beschouwd.
2565    
2566    \section{Gebruikers aanmaken en verwijderen}
2567    Gebruikers hebben onder Unix een gebruikersnummer (UID, User ID) en groepsnummer
2568    (GID, Group ID). Een gebruiker \commando{jan} aanmaken gaat met
2569    \begin{center}\commando{adduser jan}\end{center}
2570    Standaard maakt \commando{adduser} een extra groep voor deze gebruiker aan.
2571    Als we \commando{adduser} laten doen, dan krijgen we uiteindelijk dus een hele hoop
2572    groepen die slechts \'e\'en enkele gebruiker bevatten en dat is niet echt het idee dat
2573    we van een `groep' hebben. Met de \commando{-g} optie kunnen we een naam of
2574    een nummer van een groep opgeven waar de gebruiker moet toe behoren:
2575    \begin{center}\commando{adduser -g studenten jan}\end{center}
2576    De groep \commando{studenten} met dan wel bestaan (zie verder).
2577    Willen we dat alle nieuwe gebruikers standaard in de groep \commando{studenten}
2578    terechtkomen, dan kunnen we deze standaardwaarde instellen met
2579    \begin{center}\commando{adduser -D -g studenten}\end{center}
2580    De \commando{-D} optie stelt standaardwaarden (\commando{D}efault) in.
2581    Deze instellingen kunnen de tekstbestandenfanaten ook wijzigen in
2582    \file{/etc/default/useradd}. Dit bestand wordt pas aangemaakt als je de eerste keer
2583    \commando{adduser} met de \commando{-D} optie aanroept.
2584    
2585    Elke nieuwe gebruiker krijgt ook een eigen \begrip{home directory}, waar
2586    ze haar eigen bestanden in kwijt kan, die \commando{adduser} invult met
2587    een kopie van \file{/etc/skel}. Standaard zitten daar enkel wat configuratiebestanden in
2588    (ze beginnen allemaal met een punt, dus doe eens \commando{ls -al /etc/skel});
2589    als systeembeheerder kunnen we hier bestanden of directories aan toevoegen.
2590    
2591    Voor elke gebruiker wordt er een regel in \file{/etc/passwd} aangemaakt,
2592    waar onder andere de loginnaam, groep, home directory,~\dots bijgehouden
2593    wordt. De wachtwoorden zitten in \file{/etc/shadow} (als we dat tenminste bij
2594    de installatie gevraagd hadden; anders zitten ze ook in \file{/etc/passwd}).
2595    Groepen zitten in \file{/etc/group}. We kunnen een groep bijmaken door een regel
2596    in dat bestand bij te schrijven of door simpelweg iets te typen als
2597    \begin{center}\commando{addgroup studenten}\end{center}
2598    
2599    \section{Belasting van de processor in de gaten houden}
2600    Een algemene toestand van het systeem krijgen we met \commando{uptime}:
2601    \begin{verbatim}
2602     22:23:03 up 3 days,  9:21,  2 users,  load average: 0.00, 0.00, 0.00
2603    \end{verbatim}
2604    We zien dat de lokale tijd 22:23:03 is en dat onze computer al 3 dagen en 9u21 aan het draaien is.
2605    Er zijn twee gebruikers ingelogd. De \index{load average}\Begrip{load averages} staan allemaal
2606    op nul. Een load average geeft aan hoeveel programma's er gemiddeld rekentijd nodig hadden;
2607    is dit gemiddelde 1, dan was er dus altijd (gemiddeld) \'e\'en programma dat wou rekenen
2608    zodat de computer (in de veronderstelling dat we maar \'e\'en processor zitten hebben)
2609    volledig belast was. Is de load average bijvoorbeeld 0.25, dan was er maar tijdens een kwart
2610    van de tijd een programma aan het rekenen en dus is onze computer relatief weinig belast.
2611    Een average van 3 geeft daarentegen aan dat er gemiddeld drie programma's tegelijkertijd
2612    iets willen doen; er wordt dus van onze computer drie keer zoveel gevraagd als hij kan leveren.
2613    
2614    In ons voorbeeld draaien er wel vele programma's maar de load average was toch nul:
2615    dit geeft aan dat al die programma's gewoon zaten te \Begrip{slapen}: ze wachten op een
2616    bepaalde gebeurtenis (een gebruiker die op een toets drukt, een bepaalde tijd die verstreken is)
2617    en het besturingssysteem regelt alles zo dat zulke programma's geen rekentijd verbruiken.
2618    
2619    Als de load average hoog is, dan willen we natuurlijk wel weten welke programma's er
2620    aan het draaien zijn. Met \commando{top} krijgen we een interactief overzicht van
2621    alle draaiende programma's (figuur \label{topfiguur}).
2622    De programma's die het meeste rekentijd aan het verbruiken zijn staan bovenaan.
2623    \begin{figure}[!h]
2624    \begin{center}
2625    \includegraphics[width=0.8\textwidth]{server/topfiguur.png}
2626    \caption{\commando{top} in actie}
2627    \label{topfiguur}
2628    \end{center}
2629    \end{figure}
2630    Op de figuur zien we dat het programma dat het meeste rekentijd verbruikt,
2631    op dat moment \commando{top} zelf is (het verbruikt 9,5\%van de rekentijd),
2632    gevolgd door \commando{sshd} (1,7\%). Alle andere processen verbruiken
2633    een verwaarloze rekentijd. We kunnen ook sorteren volgens geheugengebruik door
2634    op \textit{M} te drukken.
2635    
2636    Links zien we de belangrijke kolom \textit{PID} dat het Process ID aangeeft van het
2637    programma. Willen we een programma stoppen, dan hebben we dit nummer nodig.
2638    Met \commando{kill 2006} (vanop een ander terminalvenster uiteraard) kunnen
2639    we het \commando{top} programma stoppen. Wil dat niet lukken, dan kunnen we harder
2640    proberen met \commando{kill -9 2006}. De 9 staat voor een nummer van een signaal;
2641    \commando{kill} stuurt eigenlijk enkel maar een signaal naar een ander programma
2642    (niet noodzakelijk om het te doen stoppen; de naam \commando{kill} is in dat
2643    opzicht nogal ongelukkig gekozen). Het signaal dat \commando{kill} standaard geeft,
2644    is meer een ``vriendelijk verzoek'' aan het programma in kwestie om te stoppen;
2645    signaal~9 kan een programma daarintegen niet negeren.
2646    
2647    Met \commando{pstree} krijgen we ook een overzicht van de draaiende programma's
2648    (figuur~\ref{figpstree}).
2649    \begin{figure}[!h]
2650    \begin{center}
2651    \includegraphics[width=0.8\textwidth]{server/pstree.png}
2652    \caption{De uitvoer van \commando{pstree}}
2653    \label{figpstree}
2654    \end{center}
2655    \end{figure}
2656    We krijgen een soort boom te zien die aangeeft welk programma door welk
2657    programma opgestart geweest is; in het voorbeeld zien we dat \textit{init} een
2658    heleboel processen heeft gestart, zoals bijvoorbeeld \textit{master}
2659    (dit is het hoofdproces van de email-server Postfix), dat op zijn beurt twee
2660    kind-programma's, \textit{pickup} en \textit{qmgr} heeft opgestart.
2661    Op die manier kunnen we proberen uit te maken of een of ander proces
2662    belangrijk is (bijvoorbeeld omdat het zich misdraagt en we het willen \commando{kill}en).
2663    We kunnen ook \commando{pstree -p} typen, waardoor we ook nog de PID's
2664    te zien krijgen bij elk proces, of \commando{pstree jan}, dat enkel processen van gebruiker
2665    \commando{jan} toont.
2666    
2667    \section{Belasting van de schijven in de gaten houden}
2668    Met \commando{df} krijgen we een overzicht van alle gemounte partities en netwerkschijven:
2669    \begin{verbatim}
2670    Filesystem           1K-blocks      Used Available Use% Mounted on
2671    /dev/hda5              1952748   1041576    811976  57% /
2672    /dev/hda7             11970256  11058108    790540  94% /var
2673    /dev/hdb1             38485540  31726780   4803796  87% /home
2674    \end{verbatim}
2675    Een iets vriendelijker uitvoer krijgen we met de \commando{-h} (\textit{h}uman,
2676    leesbaar-voor-mensen):
2677    \begin{verbatim}
2678    Filesystem            Size  Used Avail Use% Mounted on
2679    /dev/hda5             1.9G 1018M  793M  57% /
2680    /dev/hda7              12G   11G  772M  94% /var
2681    /dev/hdb1              37G   31G  4.6G  87% /home
2682    \end{verbatim}
2683    We zien hier beter het verschil tussen \texttt{G}igabytes en \texttt{M}egabytes.
2684    De \texttt{/var} partitie is bijvoorbeeld 12 gigabyte groot, er is 11 gigabyte in gebruik
2685    en nog 772 megabyte over; de partitie staat dus voor 94\% vol.
2686    
2687    Willen we weten hoeveel plaats een directory inneemt, dan gebruiken we
2688    \commando{du directorynaam}. Dit geeft een overzicht dat ook alle subdirectories,
2689    subsubdirectories,~\dots vermeldt. Willen we dat niet, dan geeft \commando{du -s}
2690    enkel informatie over de directory zelf; het getal dat we krijgen geeft aan hoeveel
2691    kilobytes de bestanden in deze directory en alle sub(sub\dots)directories ervan innemen.
2692    Ook hier is er de \commando{-h} optie.
2693    
2694    Als er plots een partitie vol staat, is het niet altijd makkelijk de schuldige te vinden.
2695    Met \commando{find /home -xdev -size +100k -ctime -7} zoeken we alle
2696    bestanden in de \commando{/home} directory of sub(sub\dots)directories daarvan,
2697    die groter zijn dan 100 kilobyte (\commando{-size +100k}) en minder dan zeven dagen
2698    geleden gemaakt zijn (\commando{-ctime -7}). De \commando{-xdev} zorgt ervoor
2699    dat \commando{find} niet naar een andere partitie overspringt; vooral als we
2700    \commando{/} zelf doorzoeken kan dit handig zijn (zonder \commando{-xdev} zouden
2701    al je (netwerk)schijven mee in de zoekoperatie betrokken worden)!
2702    We krijgen dan een lijst van bestandsnamen; door
2703    achteraan \commando{-ls} toe te voegen krijgen we direkt grootte, eigenaar,~\dots
2704    te zien.
2705    
2706    We kunnen een directory, bijboorbeeld \commando{/tmp}, leeg houden door
2707    handig van \commando{find} gebruik te maken:
2708    \begin{center}\commando{find /tmp -ctime +7 -exec rm \{\} \;}\end{center}
2709    verwijdert alle bestanden in de \commando{/tmp} directory die ouder zijn dan 7 dagen.
2710    Handig om in een cron job te stoppen dus!
2711    
2712    Met \commando{vmstat} krijgen we informatie over schijven en processor te zien:
2713    \begin{verbatim}
2714       procs                      memory    swap          io     system         cpu
2715     r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
2716     0  0  0   3004    564    408   6140   0   0     0     0  102     3   0   0 100
2717    \end{verbatim}
2718    We zien dat er geen enkel proces draait (\texttt{r}unning); ze slapen dus allemaal
2719    (ze wachten tot er op een toets gedrukt wordt of iets dergelijks).
2720    
2721    Verder zien we dat er 3004 kilobyte swap geheugen gebruikt is (\texttt{swpd}),
2722    er 1952 kilobyte vrij RAM-geheugen is (\texttt{free}---maar er kan ook nog
2723    vrij geheugen zijn in de swappartitie!).
2724    
2725    Er werd 0 kilobyte per seconde swapgeheugen ingelezen van schijf (\texttt{si})
2726    en 0 kilobyte per seconde geschreven (\texttt{so}).
2727    
2728    Er werden 0 blokken per seconde (een blok is vaak een kilobyte) gelezen en
2729    geschreven naar de schijven (\texttt{bi} en \texttt{bo}).
2730    
2731    De processor zat 0\% van de tijd programma's te draaien (\texttt{us}er time),
2732    0\% van de tijd systeemaanroepen te doen (\texttt{sy}stem time),
2733    en was dus 100\% van de tijd niets aan het doen (\texttt{id}le).
2734    
2735    De gerapporteerde waarden zijn gemiddelden van de systeemtoestand
2736    vanaf het moment dat de computer het laatst opgestart werd tot heden,
2737    hetgeen soms maanden kan zijn; vandaar dat we met
2738    \commando{vmstat 10} om de 10 seconden informatie krijgen over
2739    wat het systeem de laatste 10 seconden heeft gedaan.
2740    
2741    \section{Logbestanden}
2742    In \file{/var/log} en subdirectories daarvan zitten logbestanden van een aantal
2743    serverprogramma's; het kan de moeite lonen die af en toe in de gaten
2744    te houden. Met \commando{less /var/log/messages} wandelen
2745    we door het algemene logbestand (met `q' geraak je er weer uit);
2746    iets interessanter is \file{/var/log/syslog} waar vaak wat meer in
2747    staat (de DHCP daemon bijvoorbeeld schrijft er telkens een regel bij als hij aan
2748    een computer netwerkinstellingen heeft uitgedeeld).
2749    Met \commando{tail /var/log/messages} krijg je enkel de tien laatste (en dus recentste)
2750    regels te zien.
2751    Soms is het handig een logbestand constant in de gaten te houden; dat kan
2752    je met \commando{tail -f /var/log/messages}: je krijgt ook weer de tien
2753    laatste regels te zien, en telkens als er iets wordt bijgeschreven in het
2754    bestand in kwestie, zal dat ook op het scherm verschijnen.
2755    

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26