Terminalen: Ressourcer

De nedestående programmer er allesammen ret omfattende, så der er ikke en udførlig beskrivelse af hvordan man bruger dem. De er medtaget for at du kan få et indblik i den værktøjskasse der er tilgængelig når man anvender Ubuntu som server.

free

free angiver forbruget af RAM. Her er det taget fra en computer med 32 GB RAM, der kører med en browser og Geany. Værdien som er vigtig er den der står under "available".

free - h
tj@server1:~$ free -h total used free shared buff/cache available Mem: 31Gi 2,3Gi 26Gi 214Mi 2,1Gi 28Gi Swap: 2,0Gi 0B 2,0Gi

Ved at indsætte -h bliver resultatet leveret "human readable" - altså i GiB-. Læg mærke til at det er den binære værdi der bliver leveret. Hvis du vil have den leveret i GB skal du tilføje --si

free kan også bruges til at holde øje med ramforbruget over tid ved at tilføje -s *antal sekunder*. Her har jeg sat free til at overvåget RAM en gang i minutter, men jeg hendter 349 billeder ind i GIMP'en

free -h -s 60
total used free shared buff/cache available Mem: 31Gi 2,4Gi 26Gi 277Mi 2,2Gi 28Gi Swap: 2,0Gi 0B 2,0Gi total used free shared buff/cache available Mem: 31Gi 10Gi 18Gi 289Mi 2,3Gi 19Gi Swap: 2,0Gi 0B 2,0Gi total used free shared buff/cache available Mem: 31Gi 17Gi 11Gi 290Mi 2,4Gi 13Gi Swap: 2,0Gi 0B 2,0Gi

... og her få sekunder efter at jeg har lukket ned for GIMP'en - bare lige for at vise hvor fantastisk Linux er til at administrere hukommelse ;)

free -h
total used free shared buff/cache available Mem: 31Gi 2,5Gi 26Gi 315Mi 2,5Gi 28Gi Swap: 2,0Gi 0B 2,0Gi

Eksempler på options

-h
Se ramforbruget
h -s 10
Se ramforbrug hver 10'ende sekund
h -s 10 -c 3
Se ramforbrug hver 10'ende sekund 3 gange

Hvis du gerne vil se udviklingen af dit RAM forbrug kan du sætte free til at opdatere sig selv efter nogle sekunder -sX. Nedenstående opdaterer sig selv 3 gange (-c3) med 2 sekunders mellemrum (-s2).

free -h -c3-s2
total used free shared buff/cache available Mem: 3,9G 586M 2,8G 9,6M 522M 3,2G Swap: 4,0G 0B 4,0G total used free shared buff/cache available Mem: 3,9G 586M 2,8G 9,6M 522M 3,2G Swap: 4,0G 0B 4,0G total used free shared buff/cache available Mem: 3,9G 586M 2,8G 9,6M 522M 3,2G Swap: 4,0G 0B 4,0G

Læs Mere: Linux ate my RAM! http://www.linuxatemyram.com/

man-page free: http://manpages.ubuntu.com/manpages/trusty/man1/free.1.html

top

top er et program der giver informationer om processer. Programmet følger med de fleste Linux distributioner som standard. Programmet afbrydet med Ctrl+c.

Tasks: 349 total, 1 running, 348 sleeping, 0 stopped, 0 zombie %Cpu(s): 0,3 us, 0,2 sy, 0,0 ni, 99,5 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st MiB Mem : 32068,0 total, 27865,2 free, 1955,2 used, 2247,6 buff/cache MiB Swap: 2048,0 total, 2048,0 free, 0,0 used. 29652,3 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1561 root 20 0 192116 67740 37972 S 0,7 0,2 1:47.16 Xorg 9726 tj 20 0 585044 162676 82448 S 0,7 0,5 0:01.09 chrome 1037 root -51 0 0 0 0 S 0,3 0,0 0:21.79 irq/130-nvidia 2024 tj 20 0 5222484 317612 87956 S 0,3 1,0 25:48.31 dropbox 9974 tj 20 0 14976 3992 3216 R 0,3 0,0 0:00.10 top 1 root 20 0 168124 11760 8320 S 0,0 0,0 0:02.69 systemd 2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 kworker/0:0H-kblockd 7 root 20 0 0 0 0 I 0,0 0,0 0:00.20 kworker/0:1-events 9 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 mm_percpu_wq 10 root 20 0 0 0 0 S 0,0 0,0 0:00.05 ksoftirqd/0

htop

htop er et interaktivt program til at kigge på processer og computerens ressourcer. Programmet tilbyder mange flere informationer end top, og er interaktivt. Man kan vælge med musen samt sortere og søge i data.

Programmet installeres med kommandoen:

apt install htop -y

uptime

uptime giver informationer om hvor længe computeren har kørt, antallet af bruger der er logget på og systembelastningen i 1, 5 og 15 minutters intervaller

uptime
11:23:13 up 1:17, 1 user, load average: 0,59, 0,34, 0,60

Processer

Når et program startes på et Linux system får processen en unik PID (Proces ID). Man kan komme ud for situationer hvor man har behov for at lukke processer ned, f.eks. hvis programmet låser eller at det opfører sig uhensigtsmæssigt. For at gøre dette anvendes programmerne ps og kill

Processerne anvender den de rettigheder som brugeren der oprettede dem har. Dvs. at brugeren kan dræbe processer som brugeren har startet, også dem der er oprettet med sudo.

Eksemplerne herunder er langt fra uddybende, men giver et kort indblik i de muligheder man har som administrator på systemet.

ps

ps anvendes til at få et overblik over de processer der kører på systemet. Her er et eksempel fra en nystartet terminal hvor vi kører kommandoen ps.

ps
PID TTY TIME CMD 2215 pts/11 00:00:00 bash 2227 pts/11 00:00:00 ps

Vi kan se at der kører to processer: bash (PID 2215) og ps (PID 2227). Vær opmærksom på at det ikke er alle de processer der kører på computeren, men kun dem som kører i den startede session. Ønsker du et overblik over alle de processer der kører på computeren skal du anvende følgende kommando: ps aux. Dette overblik er langt mere detaljeret.

ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 0.1 33776 4260 ? Ss 13:15 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 13:15 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 13:15 0:00 [ksoftirqd/0] ... ( mange linier udeladt ) thoj 2261 0.0 0.2 233188 9952 ? Sl 13:18 0:00 /usr/lib/x86_64 thoj 2270 0.0 0.0 12888 772 ? S 13:18 0:00 /bin/cat thoj 2298 0.0 0.4 572816 19532 ? Sl 13:19 0:00 update-notifier thoj 2316 0.0 0.1 461588 7592 ? Sl 13:20 0:00 /usr/lib/x86_64 thoj 2325 0.0 0.0 24120 2564 pts/11 R+ 13:20 0:00 ps aux

Har man mange processer kørende og kender navnet på den man skal stoppe kan du filtrere med grep, f.eks. hvis man har startet firefox og vil finde processen.

ps aux | grep firefox
thoj 2380 7.5 6.5 1013652 263112 ? Sl 13:39 0:27 /usr/lib/firefox/firefox thoj 2461 0.0 0.0 17436 2092 pts/11 S+ 13:46 0:00 grep --color=auto firefox

Her er processen der skal stoppes 2380, da den anden skyldes grep.

kill

Når man kender processens ID kan man anvende kill til at lukke programet ned. kill har en lang række forskellige måder at lukke programmer på og det angives ved at tilføje en option. Ønsker du at dræbe en proces anvendes -9. Herunder angives en måde du kan prøve det selv:

Start en terminal og kør:

ps
PID TTY TIME CMD 2215 pts/11 00:00:00 bash 2373 pts/11 00:00:00 ps

Herefter starter vi nano op i baggrunden ved at sætte & efter kommandoen, hvorefter vi kører ps.

nano &
ps
tj@server1:~$ nano & [1] 2374 tj@server1:~$ ps PID TTY TIME CMD 2215 pts/11 00:00:00 bash 2374 pts/11 00:00:00 nano 2375 pts/11 00:00:00 ps [1]+ Stopped nano

For at dræbe nano anvender vi kommandoen kill -9 *PID* (i dette tilfælde 2374) og derefter kører vi ps for at se om processen er slettet:

kill -9 2374
ps
tj@server1:~$ kill -9 2374 tj@server1:~$ ps PID TTY TIME CMD 2215 pts/11 00:00:00 bash 2376 pts/11 00:00:00 ps [1]+ Dræbt nano

kill er et meget avanceret program, og indeholder mange måder at dræbe processer på. Hvis du ønsker at se alle mulighederne kan du anvende kommandoen kill -l.

pgrep og pkill

Kender man navnet på processen kan du anvende kommandoerne pgrep og pkill. De integrerer de to ovenstående kommandoer ps og kill.

Vær varsom med denne fremgangsmåde. Du risikerer at stoppe processer du ikke regner med er igang.

Du skal dog være varsom med denne fremgangsmåde, da du risikerer at stoppe processer du ikke regner med er igang.

pgrep firefox
finder alle "firefox"-processer
pkill firefox
stopper alle "firefox"-processer

Som det ses herover bliver firefox fanget 2 gange. En for selve programmet og en som fanger søgningen efter firefox. Det er altså proces 2380 der skal lukkes ned. Der findes en række kommandoer som automatisk integrerer søgningen: pgreb og pkill. Herunder er vist nogle eksempler med firefox:

tj@server1:~$ pgrep firefox 2380 tj@server1:~$ pkill firefox tj@server1:~$ pgrep firefox tj@server1:~$

Først køres pgrep, som finder processen. I anden omgang anvendes pkill til at lukke processen og pgrep firefox viser at processen ikke eksisterer mere

xkill - til GUI

xkill er et program man anvender i et GUI. Alle programmer kan låse hvis der sker en fejl i operativsystemet. Hvis man ønsker at dræbe en proces i et GUI, åbner man en terminal og skriver xkill. Herefter vil ens cursor ændre sig til et kryds, og hvis man klikker på et vindue med dette, vil det dræbe den proces der kører det og give nedestående i terminalen.

Processen er:

  1. Åbn en terminal
  2. Skriv xkill
  3. Musens markør ændrer sig til et kryds
  4. Klik på programmet (vinduet) du vil stoppe
  5. Dine
thoj@thoj-VirtualBox:~$ xkill
Select the window whose client you wish to kill with button 1....
xkill:  killing creator of resource 0x4e00143