LX-SYS-INFO-documentation
updated dec/29/2010 15:45

informatie en documentatie opzoeken

Systeembeheer begint bij het zoeken en vooral bij het vinden van informatie.


  1. informatie opvragen van je huidige systeem

    Het is heel belangrijk te weten voor welk systeem we zitten.

    Indien we zelf een linux machine hebben geïnstalleerd en geconfigureerd, is dat waarschijnlijk niet zo moeilijk. Wel is het belangrijk dat we zelf onze installatie en configuratie van de machine documenteren. Een linux machine kan zeer fijnmazig geconfigureerd worden. Maanden later weten we waarschijnlijk niet meer in detail wat we allemaal hebben aangepast. Zo'n 'dagboek' hoort thuis op het systeem zelf, maar een kopie ervan is ergens anders ook nodig, zodat we bij uitval en rampspoed, toch nog kunnen terugvinden hoe de machine en de software geconfigureerd waren.

    Het gebeurt ook wel dat we de opdracht krijgen om een systeem over te nemen van een andere systeembeheerder. Indien we voor een machine plaatsnemen, die door iemand anders werd opgezet, is het hoger vermelde 'dagboek' uitermate belangrijk. Maar helaas, ontbreekt dit soms. Soms is elk contact met een vorig systeembeheerder moeilijk of zelfs onmogelijk, en het gebeurt zelden ook dat gene opzettelijk verkeerdelijke informatie heeft achtergelaten. In dat geval moeten we ons zelf documenteren.

    De gehele verdere cursus dient onder andere dit doel. Voor elk onderdeel in systeembeheer (filesystem, netwerk, services, ...) zijn er legio 'tools' om te beheren en te ondervragen. We beginnen hier dan ook met de absolute basis: kernelversie, distributie en versie, eenvoudige hardware en diskconfig.

    kernelversie:

    Met het commando uname komen we al een heel eind.
    Er zijn de volgende opties:

    $ uname --help

      -a, --all                print all information, in the following order,
                                 except omit -p and -i if unknown:
      -s, --kernel-name        print the kernel name
      -n, --nodename           print the network node hostname
      -r, --kernel-release     print the kernel release
      -v, --kernel-version     print the kernel version
      -m, --machine            print the machine hardware name
      -p, --processor          print the processor type or "unknown"
      -i, --hardware-platform  print the hardware platform or "unknown"
      -o, --operating-system   print the operating system
          --help     display this help and exit
          --version  output version information and exit


    We ondervragen nu één voor één deze opties:

    $ uname -s
    Linux
    $ uname -v
    #1 SMP Wed May 12 18:03:14 UTC 2010
    $ uname -i
    unknown
    $ uname -n
    newholland1
    $ uname -m
    x86_64
    $ uname -o
    GNU/Linux
    $ uname -r
    2.6.26-2-amd64
    $ uname -p
    unknown


    Alle informatie bij mekaar met de optie -a:
    $
    uname -a
    Linux newholland1 2.6.26-2-amd64 #1 SMP Wed May 12 18:03:14 UTC 2010 x86_64 GNU/Linux

    of op een ander systeem:
    $ uname -a
    Linux hans-jan 2.6.8-24-default #1 Wed Oct 6 09:16:23 UTC 2004 i686 i686 i386 GNU/Linux

    of nog:
    $ uname -a
    Linux lx08 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 x86_64 GNU/Linux

    Alleen in het tweede voorbeeld worden processor en hardware-platform afgedrukt, in de andere voorbeelden zijn deze 'omitted'.


    distributie:

    De informatie die we verkrijgen met uname -a is eigenlijk erg cryptisch. In het eerste voorbeeld werken we op een Debian_5.0.4, in het tweede voorbeeld op een SuSE_9.2 en in het derde voorbeeld met een Linux_Mint_9.

    Om te weten welke distributie we gebruiken kunnen we de file /etc/issue op scherm brengen. We doen dit in dezelfde volgorde als de hogere uname-voorbeelden:

    $ cat /etc/issue
    Debian GNU/Linux 5.0 \n \l

    $ cat /etc/issue
    Welcome to SuSE Linux 9.2 (i586) - Kernel \r (\l).

    $ cat /etc/issue
    Linux Mint 9 Isadora \n \l

    Soms biedt de file /etc/motd (message of the day) interessante informatie, en indien mogelijk ook de file /etc/*release:

    $ cat /etc/motd
    Ik ben de firewall 172.17.1.254 (hans-jan) ...
    $ cat /etc/*release
    SuSE Linux 9.2 (i586)
    VERSION = 9.2


    Zowel de /etc/issue, /etc/motd en /etc/*release, kunnen door een systeembeheerder naar believen worden aangepast, en de verkregen informatie is dus niet noodzakelijk betrouwbaar.

    Voor een systeembeheerder is de informatie betreffende distributiefamilie ook af te leiden uit de organisatie van de netwerkconfiguratiefiles.
    Bij een debian-based systeem staat de informatie in een directory /etc/network
    Bij een redhat-based systeem in een directory /etc/sysconfig

    hardware:

    Als je aan de shell ls intikt, gevolgd door tweemaal de tab-toets, komt hetvolgende op scherm:

    $ ls <TAB><TAB>
    ls           lscpu        ls-l.pl      lspci        ls.pl        
    lsattr       lshal        lsmod        lspcmcia     lss16toppm   
    lsb_release  lshw         lsof         lspgpot      lsusb  


    Met lscpu breng je de processor informatie op scherm:

    $ lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    CPU(s):                4
    Thread(s) per core:    1
    Core(s) per socket:    4
    CPU socket(s):         1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 23
    Stepping:              10
    CPU MHz:               1998.000
    Virtualization:        VT-x
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              2048K


    Met lsusb breng je de usb-informatie op scherm:

    $ lsusb
    Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 002: ID 03f0:c402 Hewlett-Packard PhotoSmart D5100 series
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 058f:6362 Alcor Micro Corp. Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


    Met lspci breng je de pci-informatie op scherm:

    $ lspci
    00:00.0 Host bridge: Intel Corporation 82G35 Express DRAM Controller (rev 03)
    00:02.0 VGA compatible controller: Intel Corporation 82G35 Express Integrated Graphics Controller (rev 03)
    00:02.1 Display controller: Intel Corporation 82G35 Express Integrated Graphics Controller (rev 03)
    00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
    00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 02)
    00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
    00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
    00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
    00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
    00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
    00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 02)
    00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
    00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
    00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
    00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
    00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)
    00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)
    00:1f.2 IDE interface: Intel Corporation 82801H (ICH8 Family) 4 port SATA IDE Controller (rev 02)
    00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
    00:1f.5 IDE interface: Intel Corporation 82801H (ICH8 Family) 2 port SATA IDE Controller (rev 02)
    03:00.0 IDE interface: JMicron Technology Corp. JMB368 IDE controller
    04:03.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)
    04:05.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 70)


    Met lshw breng je alle hardwareinformatie op scherm. (We hebben de output drastisch ingekort.):

    $ lshw
    WARNING: you should run this program as super-user.
    lx08                      
        description: Computer
        width: 64 bits
        capabilities: vsyscall64 vsyscall32
      *-core
           description: Motherboard
           physical id: 0
         *-memory
              description: System memory
              physical id: 0
              size: 3953MiB
         *-cpu
              product: Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz
              vendor: Intel Corp.
              physical id: 1
              bus info: cpu@0
              size: 1998MHz
              capacity: 1998MHz
              width: 64 bits
              capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority cpufreq
         *-pci
              description: Host bridge
              product: 82G35 Express DRAM Controller
    ....................


    harde schijven en mounts:

    Met fdisk -l  en mount kom je al heel veel te weten. fdisk -l brengt de partitionnering op scherm:

    # fdisk -l
    Disk /dev/hda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

       Device Boot      Start         End      Blocks   Id  System
    /dev/hda1            3766        9729    47905830    f  W95 Ext'd (LBA)
    /dev/hda5            3766        3830      522081   82  Linux swap / Solaris
    /dev/hda6            3831        6441    20972826   83  Linux
    /dev/hda7            6442        9729    26410828+  83  Linux

    Disk /dev/hdc: 40.0 GB, 40020664320 bytes
    255 heads, 63 sectors/track, 4865 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

       Device Boot      Start         End      Blocks   Id  System
    /dev/hdc1   *           1        1023     8217216   f5  Unknown

    Disk /dev/hdd: 122.9 GB, 122942324736 bytes
    255 heads, 63 sectors/track, 14946 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

       Device Boot      Start         End      Blocks   Id  System
    /dev/hdd1               1       14946   120053713+  83  Linux


    Met mount vinden we welke partitie, waar, in het filesysteem gemount werd, en hoe ze geformatteerd is:

    # mount
    /dev/hda6 on / type xfs (rw)
    proc on /proc type proc (rw)
    tmpfs on /dev/shm type tmpfs (rw)
    devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
    /dev/hda7 on /restores type xfs (rw)
    /dev/hdb on /media/cdrecorder type subfs (ro,nosuid,nodev,fs=cdfss,procuid,iocharset=utf8)
    /dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid)
    /dev/hdd1 on /backup_klanten type ext3 (rw,acl,user_xattr)
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)


    Meer informatie vind je terug op:
    http://www.linux800.be/lx-inl-info-schijven-filesystems.php
    http://www.linux800.be/lx-inl-info-fdisk.php


    nog veel meer:

    Het commando dmesg brengt alle info over hardware, devices en meer op scherm die het systeem tijdens zijn opstartroutine heeft gevonden. Ook hier hebben we de output sterk ingekort:

    $ dmesg | less
    [    0.000000] Initializing cgroup subsys cpuset
    [    0.000000] Initializing cgroup subsys cpu
    [    0.000000] Linux version 2.6.32-21-generic (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubu
    ntu5) ) #32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 (Ubuntu 2.6.32-21.32-generic 2.6.32.11+drm33.2)
    [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-21-generic root=UUID=42d781ee-219d-4b34
    -a5cc-1db159e4a08a ro vga=773
    [    0.000000] KERNEL supported cpus:
    [    0.000000]   Intel GenuineIntel
    [    0.000000]   AMD AuthenticAMD
    [    0.000000]   Centaur CentaurHauls
    [    0.000000] BIOS-provided physical RAM map:
    [    0.000000]  BIOS-e820: 0000000000000000 - 000000000008f000 (usable)
    [    0.000000]  BIOS-e820: 000000000008f000 - 00000000000a0000 (reserved)
    [    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
    [    0.000000]  BIOS-e820: 0000000000100000 - 00000000cf53d000 (usable)
    [    0.000000]  BIOS-e820: 00000000cf53d000 - 00000000cf549000 (reserved)
    [    0.000000]  BIOS-e820: 00000000cf549000 - 00000000cf62c000 (usable)
    [    0.000000]  BIOS-e820: 00000000cf62c000 - 00000000cf6e8000 (ACPI NVS)
    [    0.000000]  BIOS-e820: 00000000cf6e8000 - 00000000cf6eb000 (usable)
    [    0.000000]  BIOS-e820: 00000000cf6eb000 - 00000000cf6f0000 (ACPI data)
    [    0.000000]  BIOS-e820: 00000000cf6f0000 - 00000000cf6f1000 (usable)
    [    0.000000]  BIOS-e820: 00000000cf6f1000 - 00000000cf6ff000 (ACPI data)
    [    0.000000]  BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)
    [    0.000000]  BIOS-e820: 00000000cf700000 - 00000000d0000000 (reserved)
    [    0.000000]  BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
    [    0.000000]  BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
    [    0.000000] DMI 2.4 present.
    [    0.000000] last_pfn = 0x130000 max_arch_pfn = 0x400000000
    [    0.000000] MTRR default type: uncachable
    [    0.000000] MTRR fixed ranges enabled:
    [    0.000000]   00000-9FFFF write-back
    [    0.000000]   A0000-FFFFF uncachable
    [    0.000000] MTRR variable ranges enabled:
    [    0.000000]   0 base 000000000 mask F80000000 write-back
    [    0.000000]   1 base 080000000 mask FC0000000 write-back
    [    0.000000]   2 base 0C0000000 mask FF0000000 write-back
    ................................


    Tenslotte bestaat er ook nog een script met als naam linux-explorer.sh dat je kan downloaden op de site

    http://www.unix-consultants.co.uk/examples/scripts/linux/linux-explorer

    en waarmee je ongeveer alle significante informatie van een syteem kan opvragen en stockeren. De analyse van dit zeer eenvoudige maar langdradige script kan zeer leerrijk zijn!

  2. informatie vinden over commando's en hun opties

    1. de optie --help

      Bijna elk linux commando luistert naar de optie --help. Er wordt dan een korte gebruiksaanwijzing op scherm gebracht, met alle beschikbare opties.

      voorbeeld:

      $ gzip --help
      Usage: gzip [OPTION]... [FILE]...
      Compress or uncompress FILEs (by default, compress FILES in-place).

      Mandatory arguments to long options are mandatory for short options too.

        -c, --stdout      write on standard output, keep original files

      unchanged

        -d, --decompress  decompress
        -f, --force       force overwrite of output file and compress links
        -h, --help        give this help
        -l, --list        list compressed file contents
        -L, --license     display software license
        -n, --no-name     do not save or restore the original name and time

      stamp

        -N, --name        save or restore the original name and time stamp
        -q, --quiet       suppress all warnings
        -r, --recursive   operate recursively on directories
        -S, --suffix=SUF  use suffix SUF on compressed files
        -t, --test        test compressed file integrity
        -v, --verbose     verbose mode
        -V, --version     display version number
        -1, --fast        compress faster
        -9, --best        compress better
            --rsyncable   Make rsync-friendly archive

      With no FILE, or when FILE is -, read standard input.

    2. bash help

      help intikken aan de prompt geeft een beknopte beschrijving van bash built-in commands.

      voorbeeld:

      $ help
      GNU bash, versie 4.1.5(1)-release (i486-pc-linux-gnu)
      Hieronder staan alle interne shell-opdrachten opgesomd.  Typ 'help' om dit
      overzicht opnieuw te zien.  Typ 'help naam' voor meer informatie over de
      opdracht met die naam.  Typ 'info bash' voor gedetailleerde informatie over
      de gehele shell.  En gebruik 'man -k ...' of 'info ...' voor meer informatie
      over andere opdrachten.

      (Een sterretje (*) naast een naam betekent dat de functie uitgeschakeld is.)

       job_spec [&]                            history [-c] [-d offset] [n] or hist>
       (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
       . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
       :                                       kill [-s sigspec | -n signum | -sigs>
       [ arg... ]                              let arg [arg ...]
       [[ expression ]]                        local [option] name[=value] ...
       alias [-p] [name[=value] ... ]          logout [n]
       bg [job_spec ...]                       mapfile [-n count] [-O origin] [-s c>
       bind [-lpvsPVS] [-m keymap] [-f filen>  popd [-n] [+N | -N]
       break [n]                               printf [-v var] format [arguments]
       builtin [shell-builtin [arg ...]]       pushd [-n] [+N | -N | dir]
       caller [expr]                           pwd [-LP]
       case WORD in [PATTERN [| PATTERN]...)>  read [-ers] [-a array] [-d delim] [->
       cd [-L|-P] [dir]                        readarray [-n count] [-O origin] [-s>
       command [-pVv] command [arg ...]        readonly [-af] [name[=value] ...] or>
       compgen [-abcdefgjksuv] [-o option]  >  return [n]
       complete [-abcdefgjksuv] [-pr] [-DE] >  select NAME [in WORDS ... ;] do COMM>
       compopt [-o|+o option] [-DE] [name ..>  set [--abefhkmnptuvxBCHP] [-o option>
       continue [n]                            shift [n]
       coproc [NAME] command [redirections]    shopt [-pqsu] [-o] [optname ...]
       declare [-aAfFilrtux] [-p] [name[=val>  source filename [arguments]
       dirs [-clpv] [+N] [-N]                  suspend [-f]
       disown [-h] [-ar] [jobspec ...]         test [expr]
       echo [-neE] [arg ...]                   time [-p] pipeline
       enable [-a] [-dnps] [-f filename] [na>  times
       eval [arg ...]                          trap [-lp] [[arg] signal_spec ...]
       exec [-cl] [-a name] [command [argume>  true
       exit [n]                                type [-afptP] name [name ...]
       export [-fn] [name[=value] ...] or ex>  typeset [-aAfFilrtux] [-p] name[=val>
       false                                   ulimit [-SHacdefilmnpqrstuvx] [limit>
       fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
       fg [job_spec]                           unalias [-a] name [name ...]
       for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [name ...]
       for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
       function name { COMMANDS ; } or name >  variables - Names and meanings of so>
       getopts optstring name [arg]            wait [id]
       hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
       help [-dms] [pattern ...]               { COMMANDS ; }

      help <built-in-commando> geeft meer informatie over dat specifieke bash-built-in commando:

      voorbeelden:

      $ help cd
      cd: cd [-L|-P] [dir]
          De huidige map wijzigen.

          Wijzigt de huidige map naar de gegeven MAP.  Als geen MAP gegeven is,
          dan wordt de waarde van de variabele HOME gebruikt.

          De variabele CDPATH definieert de mappen waarin naar MAP gezocht wordt.
          De mapnamen in CDPATH worden gescheiden door dubbele punten (:); een
          lege mapnaam is hetzelfde als de huidige map (.).  Als MAP begint met
          een slash (/), dan wordt CDPATH niet gebruikt.

          Als de gegeven map niet wordt gevonden, en shell-optie 'cdable_vars'
          is ingeschakeld, dan wordt het gegeven woord als een variabelenaam
          begrepen, en als die variabele een naam bevat, dan gaat 'cd' naar de
          map met die naam.

        Opties:
          -L    symbolische koppelingen volgen (standaard)
          -P    de fysieke mappenstructuur gebruiken;
                  symbolische koppelingen worden eerst "vertaald"

          De afsluitwaarde is 0 als de gewenste map ingesteld kon worden, anders 1.

      $ help alias
      alias: alias [-p] [name[=value] ... ]
          Aliassen definiëren of tonen.

          Zonder argumenten, of met optie '-p', toont 'alias' op standaarduitvoer
          de huidige lijst van aliassen in de vorm: alias NAAM='VERVANGING'.
          Met argumenten, wordt er een alias gedefinieerd voor elke NAAM waarvoor
          een VERVANGING gegeven is.  Als de VERVANGING eindigt op een spatie, dan
          wordt bij aliasexpansie ook van het nakomende woord gecontroleerd of het
          een alias is.

          De afsluitwaarde is 0, tenzij er een NAAM zonder VERVANGING gegeven is.

      Voor nog meer informatie over deze built-in commands en over bash zelf kun je
      "man
      bash" intikken.

    3. man-pagina's

      De bekendste manier om hulp op te vragen zijn wel de man-pagina's.

      We vragen hulp op met man <commando>
      voorbeeld:

      $ man rmdir

      RMDIR(1)                         User Commands                       RMDIR(1)

      NAME
             rmdir - remove empty directories

      SYNOPSIS
             rmdir [OPTION]... DIRECTORY...

      DESCRIPTION
             Remove the DIRECTORY(ies), if they are empty.

             --ignore-fail-on-non-empty
                    ignore each failure that is solely because a directory is non-empty

             -p, --parents
                    remove DIRECTORY and its ancestors; e.g., `rmdir -p a/b/c'
                                                is similar to `rmdir a/b/c  a/b 
      a'
             -v, --verbose
                    output a diagnostic for every directory processed

             --help display this help and exit

             --version
                    output version information and exit

      AUTHOR
             Written by David MacKenzie.

      REPORTING BUGS
             Report rmdir bugs to bug-coreutils@gnu.org
             GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
             General help using GNU software: <http://www.gnu.org/gethelp/>

      COPYRIGHT
             Copyright © 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPLv3 or later
             <http://gnu.org/licenses/gpl.html>.
             This is free software: you are free to change and redistribute it.  There is NO

      WARRANTY, to the extent permitted by law.

      SEE ALSO
             rmdir(2)
             The full documentation for rmdir is maintained as a Texinfo manual. 
             If the info and rmdir  pro
      grams are properly installed at your site, the command

                    info coreutils 'rmdir invocation'

             should give you access to the complete manual.

      GNU coreutils 7.4                       March 2010                               RMDIR(1)

      Er zijn echter 2 manuals van rmdir beschikbaar.
      Als we het commando man <sectienummer> <commando> intikken krijgen we een specifieke man-pagina te zien, en niet de eerst voorkomende.

      voorbeeld:

      $ man 2 rmdir

      RMDIR(2)                   Linux Programmer's Manual                     RMDIR(2)

      NAME
             rmdir - delete a directory

      SYNOPSIS
             #include <unistd.h>

             int rmdir(const char *pathname);

      DESCRIPTION
             rmdir() deletes a directory, which must be empty.

      .............   ingekort



      De man pagina's zijn onderverdeeld in verschillende secties als volgt:

      Section
      The human readable name
      1
      1M
      2
      3
      4
      5
      6
      7
      8
      9
      0
      n
      o
      l
      x
      User commands that may be started by everyone.
      System administration commands and daemons
      System calls, that is, functions provided by the kernel.
      Subroutines, that is, library functions.
      Devices, that is, special files in the /dev directory.
      File format descriptions, e.g. /etc/passwd.
      Games, self-explanatory.
      Miscellaneous, e.g. macro packages, conventions.
      System administration tools that only root can execute.
      Another(Linux specific) place for kernel routine docs.
      C-library header files
      New docs, that may be moved to a more appropriate section.
      Old documentation, that may be kept for a grace period.
      Local documentation referring to this particular system.

      X-window system
       

      Je kan zoeken in welke secties een onderwerp beschikbaar is met de optie -f

      $ man -f rmdir
      rmdir (1)      - remove empty directories
      rmdir (2)      - delete a directory

      of ook:

      $ man -f kill
      kill (1)       - send a signal to a process
      kill (2)       - send signal to a process

      Je kan het commando man -f ook vervangen door het commando whatis.


      Je kan de man-pagina's doorzoeken op key-word met de optie -k

      $ man -k kill
      kill (1)       - send a signal to a process
      kill (2)       - send signal to a process
      killall (1)    - kill processes by name
      killall5 (8)   - send a signal to all processes.
      killpg (2)     - send signal to a process group
      pkill (1)      - look up or signal processes
                       based on name and other attributes

      skill (1)      - send a signal or report process status
      tgkill (2)     - send a signal to a thread
      tkill (2)      - send a signal to a thread
      xkill (1)      - kill a client by its X resource
      yes (1)        - output a string repeatedly until killed

      Je kan het commando man -k ook vervangen door het commando apropos.


      Een grote tekortkoming van de man-pagina's is het ontbreken van voorbeelden.


      Alle man-pagina's zijn in je filesysteem terug te vinden
      in de directory /usr/share/man/<section>
      en kunnen ook gelezen worden met gzip -dc <filenaam> | less


      voorbeeld:

      $ gzip -dc /usr/share/man/man1/rmdir.1.gz | less

      De opmaak is dan zichtbaar als markup tekens.


      Meer informatie over man pagina's is te vinden op:
      http://www.linux.org/docs/ldp/howto/Man-Page/
      http://en.wikipedia.org/wiki/Man_page
      http://www.mcmcse.com/linux/man_pages.shtml

    4. info pagina's

      Op het eerste zicht lijken info-pagina's verassend veel op man-pagina's.
      info ping  geeft bijna hetzelfde resultaat als man ping.

      Maar als je de info opvraagt van het commando ls komen de verschillen tevoorschijn.

      $ info ls

      File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listing

      10.1 `ls': List directory contents
      ==================================

      The `ls' program lists information about files (of any type, including
      directories).  Options and file arguments can be intermixed
      arbitrarily, as usual.

         For non-option command-line arguments that are directories, by
      default `ls' lists the contents of directories, not recursively, and
      omitting files with names beginning with `.'.  For other non-option
      arguments, by default `ls' lists just the file name.  If no non-option
      argument is specified, `ls' operates on the current directory, acting
      as if it had been invoked with a single argument of `.'.

         By default, the output is sorted alphabetically, according to the
      locale settings in effect.(1) If standard output is a terminal, the
      output is in columns (sorted vertically) and control characters are

      De info over ls blijkt te komen uit een veel groter document: coreutils.info, en daar kun je dan verder in bladeren, ook als je het commando ls al voorbij bent.

      Probeer zelf eens te navigeren door coreutils. Gebruik hiertoe de toetsen zoals hieronder aangegeven:

      pijltjestoetsen, pgup, pgdn, home, end om te navigeren
      space = volgende pagina (pgup)
      backspace = vorige pagina (pgdn)
      n = next section
      p = previous section
      t = top van huidige info document
      u = up (een niveau hoger in de info hiërarchie)
      q = quit info

      als je cursor staat op een asterisk aan het begin van een regel, kun je met <enter> naar dat item doorlinken.

      Op de volgende website vind je nog meer toetsencombinaties:
      http://www.troubleshooters.com/linux/info.htm


      info starten
      :

      Je start info op verschillende manieren:

      $ info

      je bent nu in het toplevel van info en je kan <enter> tikken bij elke met * aangevinkte link.

      $ info grub

      je hebt één van de hoofd info-documenten opgevraagd. Je vindt deze documenten onder /usr/share/info.

      $ info chmod

      je komt terecht in een document bij het gevraagde onderwerp

      $ info mkfs

      er bestaat geen info-document, en de man-pagina wordt op scherm gebracht.


      welke info-documenten
      :

      Op een debian systeem vond ik de volgende info-documenten terug:

      autosprintf
      bashdb
      bc
      coreutils
      cpio
      cvsclient
      cvs
      dc
      ed
      find
      gdbm
      gettext
      gnupg1
      grep
      grub
      ipc
      menu
      mjpeg-howto
      mtools
      nano
      rluserman
      screen
      sed
      spd-say
      speech-dispatcher
      ssip
      time
      vcdimager
      vcd-info
      vcdxrip
      wget


      Je kan de meeste ook terugvinden op de volgende website:
      http://www.manpagez.com/info/


      besluiten:

      info gaat verder dan man. Je vindt er ook dingen die je niet zoekt. info is dikwijls meer leesbaar dan man, maar je hebt vaak ook meer tijd nodig om alles door te nemen.

      Alle info-documenten zijn terug te vinden in de directory /usr/share/info en kunnen zo nodig ook gelezen worden met gzip -dc <filenaam> | less


    5. /usr/share/doc(-base)

      Er is nog veel meer informatie te vinden op je linuxcomputer. Individuele pakketten installeren soms nog meer dan een binary en wat info en/of man pagina's.

      In de directory /usr/share/doc/<pakketnaam> vinden we dan extra informatie terug. In de meeste gevallen zijn het niet meer dan changelogs (met informatie over wat er veranderd is t.o.v. vroegere versies) of README's en copyright files. Maar het is niet uitzonderlijk een mini-website terug te vinden met informatie, tekstfiles, pdf's of voorbeeld configfiles.

      Debian en debian based distro's geven een overzicht van nuttige documenten in de directory /usr/share/doc-base. Elke file in die directory bevat een beschrijvende header, een documentformaattype en de documenten zelf.

      voorbeeld1:

      $ cat /usr/share/doc-base/cups
      Document: cups
      Title: CUPS Documentation
      Author: Easy Software Products
      Abstract: This documentation covers the use and administration of a CUPS
       printing system, and the programming interface for the libcups API.
      Section: System/Hardware

      Format: HTML
      Index: /usr/share/doc/cups/online-docs/index.html
      Files: /usr/share/doc/cups/online-docs/*.html


      Wat betekent dat als je je browser richt op
      file:///usr/share/doc/cups/online-docs/index.html
      je doorheen een volledige documentatie website kunt surfen.

      voorbeeld2:

      $ cat /usr/share/doc-base/mc-faq
      Document: mc-faq
      Title: Midnight Commander FAQ
      Author: Janne Kukonlehto <janne@gnome.org>
      Abstract: Midnight Commander Frequently Asked Questions and the Answers
      Section: File Management

      Format: text
      Files: /usr/share/doc/mc/FAQ.gz


      Hier kun je de frequently asked questions van midnight commander inkijken, met het commando

      $ gzip -dc /usr/share/doc/mc/FAQ.gz | less

      voorbeeld3:

      In RedHat based distro's is er meestal geen doc-base. Als je de DNS-server bind installeert, krijg je wel een volledige voorbeeldconfiguratie:

      $ ls -R /usr/share/doc/bind-9.3.6/
      /usr/share/doc/bind-9.3.6/:
      arm  CHANGES  COPYRIGHT  misc  README  README.DBUS  sample

      /usr/share/doc/bind-9.3.6/arm:
      Bv9ARM-book.xml   Bv9ARM.ch03.html  Bv9ARM.ch06.html  Bv9ARM.ch09.html  latex-fixup.pl  README-SGML
      Bv9ARM.ch01.html  Bv9ARM.ch04.html  Bv9ARM.ch07.html  Bv9ARM.html       Makefile
      Bv9ARM.ch02.html  Bv9ARM.ch05.html  Bv9ARM.ch08.html  Bv9ARM.pdf        Makefile.in

      /usr/share/doc/bind-9.3.6/misc:
      dnssec             ipv6      Makefile.in  migration-4to9  options.edns    roadmap  sort-options.pl
      format-options.pl  Makefile  migration    options         rfc-compliance  sdb

      /usr/share/doc/bind-9.3.6/sample:
      etc  var


      /usr/share/doc/bind-9.3.6/sample/etc:
      named.conf  named.rfc1912.zones  named.root.hints  rndc.conf


      /usr/share/doc/bind-9.3.6/sample/var:
      named

      /usr/share/doc/bind-9.3.6/sample/var/named:
      data              localhost.zone       my.internal.zone.db  named.ip6.local  named.root  slaves
      localdomain.zone  my.external.zone.db  named.broadcast      named.local      named.zero

      /usr/share/doc/bind-9.3.6/sample/var/named/data:

      /usr/share/doc/bind-9.3.6/sample/var/named/slaves:
      my.ddns.internal.zone.db  my.slave.internal.zone.db

  3. informatie vinden over configuratiebestanden

    man-pagina's bevatten meer dan alleen commando-manuals. In section5 vinden we vooral manuals over configuratiebestanden.

    Voor sommige van die manuals is het noodzakelijk het secienummer te gebruiken bij het opvragen van de manual. Ik denk hierbij aan de manual over de passwd-file, niet te verwarren met de manual over het passwd-commando.

    voorbeeld:

    $ man 5 passwd

    PASSWD(5)                          File Formats and Conversions                         PASSWD(5)

    NAME
           passwd - the password file

    DESCRIPTION
           /etc/passwd contains one line for each user account, with seven fields delimited by colons
           (“:”). These fields are:

           ·   login name

           ·   optional encrypted password

           ·   numerical user ID

           ·   numerical group ID

           ·   user name or comment field

           ·   user home directory

           ·   optional user command interpreter

           The encrypted password field may be blank, in which case no password is required to
           authenticate as the specified login name. However, some applications which read the
           /etc/passwd file may decide not to permit any access at all if the password field is
           blank. If the password field is a lower-case “x”, then the encrypted password is actually
           stored in the shadow(5) file instead; there must be a corresponding line in the
           /etc/shadow file, or else the user account is invalid. If the password field is any other
           string, then it will be treated as an encrypted password, as specified by crypt(3).

           The comment field is used by various system utilities, such as finger(1).

           The home directory field provides the name of the initial working directory. The login
           program uses this information to set the value of the $HOME environmental variable.

           The command interpreter field provides the name of the users command language interpreter,
           or the name of the initial program to execute. The login program uses this information to
           set the value of the $SHELL environmental variable. If this field is empty, it defaults to
           the value /bin/sh.

    FILES
           /etc/passwd
               User account information.

           /etc/shadow
               optional encrypted password file

           /etc/passwd-
               Backup file for /etc/passwd.

               Note that this file is used by the tools of the shadow toolsuite, but not by all user
               and password management tools.

    SEE ALSO
           crypt(3), getent(1), getpwnam(3), login(1), passwd(1), pwck(8), pwconv(8), pwunconv(8),
           shadow(5), su(1), sulogin(8).

    File Formats and Conversions                01/26/2010                                  PASSWD(5)


    Indien je wil weten over welke configfiles manuals beschibaar zijn, kun je

    $ ls /usr/share/man/man5

    intikken.


    We zagen eerder al dat ook in de /usr/share/doc af en toe voorbeelden en voorbeeldfiles te vinden zijn. Ik denk dan aan iptables,


    Heel veel services komen trouwens compleet met een reeds werkende configfile:
    sshd
    , vsftpd, apache2, exim4, ... .

    Andere services komen met een volledig gedocumenteerde config-file:
    squid, dhcpd, ... .

    Nog andere services hebben een installatie wizard die onmiddellijk een correcte config-file aflevert: postfix, samba, ...

  4. informatie op het internet

    Informatie over je eigen server vind je niet op het internet, wel alle manuals, info pagina's, doc files en nog veel meer.

    http://manpages.debian.net/cgi-bin/man.cgi
    http://linux.die.net/man/
    http://www.manpagez.com/

    Om bij te blijven
    kun je sites volgen als
    http://linuxtoday.com

    Homepages van services
    als vsftpd, apache2, php5 of samba bevatten een schat aan informatie.

    http://www.apache.org/
    http://vsftpd.beasts.org/
    http://www.samba.org/
    http://www.samba.org/samba/docs/man/Samba-Guide/
    http://www.squid-cache.org/
    ...

    Er zijn linux specifieke websites zoals:
    http://www.linux.org/
    http://www.tldp.org

    Websites van distributies vind je terug in het menu van linux800.be, selected links ..

    Sites met talloze voorbeelden:

    http://www.howtoforge.com
    http://www.thegeekstuff.com
    http://www.linuxhomenetworking.com/
    http://cb.vu/unixtoolbox.xhtml

    Wikipedia is ook een gigantische bron van informatie, met een honderden linux/unix .. artikels:
    http://en.wikipedia.org/wiki/List_of_Unix_utilities

    Google is er natuurlijk ook:

    Deze search engine van google is specifiek op linux gericht:
    http://www.google.com/linux

    Op de gewone google.com,  google je gewoon het key-word, al dan niet omgeven door aanhalingstekens, om honderden hits te vinden.

    Het woord example, naast je key-word doet soms ook wonderen.

    google search: vsftpd example

    1. Quick HOWTO : Ch15 : Linux FTP Server Setup - Linux Home Networking

      17 Nov 2010 ... Note: The Appendix II, "Codes, Scripts, and Configurations", contains examples of how to configure the VSFTPD Linux firewall to function ...
      www.linuxhomenetworking.com/.../Quick_HOWTO_:_Ch15_:_Linux_FTP_Server_Setup - Cached - Similar
    2. vsftpd - Secure, fast FTP server for UNIX-like systems

      Browse vsftpd's online source tree - including documentation. In particular, note the content of the EXAMPLE subdirectory. Also, here is an HTML version of ...
      vsftpd.beasts.org/ - Cached - Similar
    3. Design - vsftpd - Secure, fast FTP server for UNIX-like systems

      That's one of the reasons vsftpd has been written. We'll pick on wu-ftpd as ...
      vsftpd.beasts.org/DESIGN - Cached - Similar