Systemadministration

Fra Debianguiden
Skift til: Navigation, Søgning

Tilføje og slette brugere

adduser til oprettelse af nye brugere

På et Debian GNU/Linux system kan brugere oprettes med kommandoen 'adduser'(8). Hvis du for eksempel vil tilføje en bruger med login "bent" til gruppen "revisorere" hedder kommandoen således:

$ adduser bent revisorere

Dette forudsætter at gruppen allerede findes. Hvis du vil oprette en ny gruppe på dit system kan du bruge adduser med --group suffikset, eller du kan bruge kommandoen 'addgroup'(8), som blot er adduser i forklædning.

deluser til at slette brugere

Hvis man vil slette en bruger bruger man 'deluser'(8). Hvis du vil slette brugeren "bent" så skal du skrive:

$ deluser bent

Der findes desuden et væld af suffikser til til deluser. Hvis du vil slette en bruger samt dennes home-mappe og mail-inbox så bruger du:

$ deluser bent --remove-home

Hvis du vil slette alle de filer brugeren ejer bruger du: (Dette frarådes dog kraftigt, da brugere af systemer med flere brugere ofte deler mange filer.)

$ deluser bent --remove-all-files

Programmerne som processer

ps og top til visning af processer

Når et program i Linux er eksekveret og startet, bliver det til det vi kalder en process. Den får tildelt et process-id som kan bruges til at referere til lige det program. Dette kan bruges hvis vi fx vil dræbe programmet fordi det er løbet løbsk. Der findes forskellige værktøjer til at se hvilke processer der kører på systemet, de kan blandt andet bruges til at finde ud af hvilket program der bruger flest CPU ressourcer, mest RAM, hvor mange processer der kører osv.

For at se alle processer der kører på et system, bruger vi 'ps' kommandoen:

user@host:~$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  1264  472 ?        S    10:07   0:03 init [2] 
www-data   575  0.0  0.5 139844 3488 ?       S    10:07   0:00 /usr/sbin/apache
www-data   576  0.0  0.5 139844 3488 ?       S    10:07   0:00 /usr/sbin/apache 
[...]

Dette giver os en lang liste over alle processerne der kører på systemet. Vi kan se hvilken bruger der kører det, hvilket process-id det har og meget mere.

Hvis man gerne vil finde et bestemt program gennem 'ps', eksempelvis for at se om man har en ftp-server kørende, kan man bruge 'grep' i kombination med ps:

user@host:~$ ps aux | grep ftp
USER       PID %CPU %MEM   VSZ  RSS  TTY    STAT START   TIME COMMAND
nobody    5638 0.0   0.4  4316  2216  ?     Ss   May04   0:13 proftpd: (accepting connections)
[...]

Et program der ligner 'ps' meget, er programmet 'top'. Men 'top' har den fordel, at den automatisk opdaterer oversigten over processerne hvert femte sekund. Derudover kan man selv vælge, om listen skal sorteres efter process-id, bruger, CPU-forbrug osv.

user@host:~$ top
12:50:42 up  2:43,  9 users,  load average: 0.95, 0.88, 0.56
103 processes: 101 sleeping, 2 running, 0 zombie, 0 stopped
CPU states:  13.1% user,   1.6% system,   0.0% nice,  85.2% idle
Mem:    646184K total,   627208K used,    18976K free,    42924K buffers
Swap:   489972K total,     3956K used,   486016K free,   416424K cached

PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
3452 mbp       16   0  1052 1052   812 R     6.2  0.1   0:00 top
598 root      15 -10  320M  64M  4700 S <   3.5 10.2   5:39 XFree86
1 root       8   0   472  472   408 S     0.0  0.0   0:03 init
2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd
3 root       9   0     0    0     0 SW    0.0  0.0   0:00 kapmd

I top kan vi fx trykke P for at sortere efter CPU-forbrug. Eller k for at dræbe en process. Den fulde liste af keyboard-genveje ses hvis du trykker ?.

At dræbe processer

Det hænder, at et program er gået i stå og det ikke kan lukkes på normal vis. F.eks. kan det også ske at et program bruger så meget CPU-kraft at det ikke har "overskud" til at modtage beskeden fra brugeren om at det skal lukke. Derfor har man programmerne 'kill' og 'killall' til at dræbe processer.

'kill' og 'killall' har begge det formål at dræbe processer. Den førstenævnte tager et process-id som sit argument, mens killall tager et navn. Det betyder altså at kill kun kan dræbe én process, mens killall godt kan dræbe flere på en gang, det skal man være opmærksom på (dette er fordi at et process-id er unikt og kun tilhører en process, mens mange programmer godt kan have samme navn)

'kill' bruges i den simpleste form således:

user@host:~$ kill 253

Hvor 253 er et process-id vi har fundet via 'ps' eller 'top'. 'kill' gør det, at den sender et signal til processen om at det skal lukkes. Der kan angives flere forskellige typer af signaler, som standard sender 'kill' TERM signalet (signal 15). TERM betyder her 'terminate'.

Det hænder, at et program er så slemt tilredt at en almindelig kill på den ikke hjælper. Derfor kan man sende signal 9 (KILL) istedet:

user@host:~$ kill -9 253

Men bemærk at -9 er meget grusom. Den tillader ikke programmet at rydde ordentligt op efter sig. Derfor skal du altid prøve den almindelige kill før du bruger -9. En komplet liste over alle signaler kan ses i 'man kill'.

'killall' virker som tidligere nævnt på samme måde som 'kill' bortset fra at den tager et navn som argument:

user@host:~$ killall apache

Dette betyder at vi vil dræbe alle processer der hedder apache (en Apache web-server bruger normalt flere processer, så det er smart i dette tilfælde).

Man skal også bemærke, at de almindelige regler for bruger-rettigheder gælder. D.v.s en process startet af en bruger kan ikke dræbes af en anden, hvorimod root har adgang til at dræbe alle processer.

Log-filer

En vigtig ting når man arbejder med et Linux system, er de log-filer som kan bruges til at diagnosticere fejl. På et Debian system, er det mest /var/log/syslog som er interessant. Denne logfil indeholder størstedelen af systemets meddelser, og det er her du bør kigge først hvis systemet fejler. Der findes naturligvis også andre log-filer, de findes alle i /var/log.

Der er forskellige programmer der kan bruges når man kigger i en logfil. Først og fremmest kan du bruge din yndlingseditor, men kommandoer som 'less', 'more', 'grep' og 'tail' kan være hurtigere at bruge hvis du kun skal have et hurtigt kig i filen.

Hvis du automatisk vil følge opdateringer i en fil, kan 'tail' bruges. Tail står er engelsk for 'hale' og viser dig altså filens hale (dens ende). Hvis man bruger tail sammen med argumentet -f ("follow"; følg), vil tail automatisk vise når linjer bliver tilføjet i filen. Fx:

user@host:~$ tail -f /var/log/syslog
Sep 30 10:08:07 kolon kernel: NVRM: AGPGART: aperture: 64M @ 0xe4000000
Sep 30 10:08:07 kolon kernel: NVRM: AGPGART: aperture mapped from 0xe4000000 to 0xe9a45000
Sep 30 10:08:07 kolon kernel: NVRM: AGPGART: mode 4x
Sep 30 10:08:07 kolon kernel: NVRM: AGPGART: allocated 16 pages
Sep 30 10:08:08 kolon kernel: bttv0: PLL: 28636363 => 35468950 ... ok

Når nye linjer bliver tilføjet i filen, behøves du ikke at genåbne filen for at se dem, det sørger tail selv for.

Hvis du leder efter noget specifikt, så kan 'grep' komme til nytte:

user@host:~$ grep cron /var/log/syslog
sep 27 11:12:08 kolon crontab[2228]: (root) LIST (root)
sep 27 11:12:10 kolon crontab[2229]: (root) BEGIN EDIT (root)
sep 27 11:12:12 kolon crontab[2229]: (root) END EDIT (root)

Det betyder at kun linjerne indeholdene 'cron' bliver vist.

Se brugere der er logget ind

Hvis man vil vide, hvilke brugere der er logget ind på computeren, kan man bruge kommandoen 'who'. Her vil man så få en liste med brugere, der er logget ind, og fra hvilken (virtuel) terminal. Man vil samtidig kunne se, hvornår de er logget ind, og om de har åbnet flere terminaler.


Hardware

Du kan få informationer direkte fra /proc, bruge /lspci etc.

I Terminal #

lshw

For at få vist en liste over hardware

Lshw -short

Kort form af hardware listen. Nemmer at danne sig overblik.

lshw -class memory

Vil vise informationer om ram etc.

lshw -html > hardware-info.html

Giver en hardware oversigt i et html format.


Hvis man har en X kørende, kan man installer lshw-gtk som er en gui til lshw