Terminalen - Linux' kraftværk

Linux er oprindeligt designet til at køre ved hjælp af skrevne kommandoer. Her vil du lære hvordan du tilgår og anvender terminalen til at administrere computeren, og arbejde med filer.

Terminalen

Når du starter Ubuntu op, så kører den det vi kalder sessions. På en server starter du i TTY1, og på en desktop starter du i en grafisk brugerflade. Uanset om du logger ind på en server eller en desktop, så starter du i brugerens hjem.

På en server ser det sådan ud:

Ubuntu 20.04.1 server1 tty1 server1 login: _

Sessions

Alle Linux-systemer kører flere sessions som kører i hver deres TTY (Tele TYpewriters ). Hver session kan have forskellige brugere logget på.

Der er lidt forskel på Ubuntu desktop og Ubuntu server, som du kan se i tabellen herunder.

Session Ubuntu desktop Ubuntu Server
TTY1 GUI til ekstra brugere Terminal 1
TTY2 Opstarts GUI Terminal 2
TTY3 Terminal 1 Terminal 3
TTY4 Terminal 2 Terminal 4
TTY5 Terminal 3 Terminal 5
TTY6 Terminal 4 Terminal 6
TTY7 GUI 2 N/a
TTY8 GUI 3 N/a

Du kan skifte mellem sessions ved at bruge følgende tastekombination.

Ctrl+Alt+F1 til F8

Har du din server kørende i VirtualBox skal du anvende:

Højre Ctrl+F1 til F8

Overblik over terminalen

tj@server1:~$

Når man er logget ind får man følgende information fra kommandolinien

  1. Hvem man er,
  2. Computerens navn,
  3. hvor man er i filsystemet og
  4. Hvilken type bruger man er. $ for almindelige bruger, og # for root

Linien tj@tj-VirtualBox:~$ fortæller altså:

  1. Brugeren er tj
  2. Computerens navn er tj-virtualBox
  3. Man er i ens personlige mappe. Angives med ~
  4. Man er en almindelig bruger.

$ bliver erstattet af # hvis man er root (se nedenfor):

tj@server1:~$ sudo su [sudo] password for tj: root@tj-VirtualBox:/home/tj#

Kommandoer

De fleste kommandoer har tre sektioner:

[kommando] [optioner] [målet for kommandoen]

Eksempel

ping -c 4 www.dr.dk

ping er kommandoen, -c 4 er optionen, og www.dr.dk er målet.

tj@server1:~$ ping -c 4 dr.dk PING dr.dk (159.20.6.38) 56(84) bytes of data. 64 bytes from 159.20.6.38: icmp_seq=1 ttl=63 time=13.0 ms 64 bytes from 159.20.6.38: icmp_seq=2 ttl=63 time=12.9 ms 64 bytes from 159.20.6.38: icmp_seq=3 ttl=63 time=13.3 ms 64 bytes from 159.20.6.38: icmp_seq=4 ttl=63 time=14.0 ms --- dr.dk ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 12.966/13.342/14.017/0.423 ms

Hvis optionen -c 4 ikke tilføjes, kører kommandoen indtil den bliver afbrudt med tastekombinationen Ctrl+c (stop kommandoen) eller Ctrl+z (afbryd programmet).

Nogle kommandoer kan indlejrer – f.eks. time (finder tidsforbruget af en kommando)

time ping -c 4 www.dr.dk
PING dr.dk (159.20.6.38) 56(84) bytes of data. 64 bytes from 159.20.6.38: icmp_seq=1 ttl=63 time=12.6 ms 64 bytes from 159.20.6.38: icmp_seq=2 ttl=63 time=13.9 ms 64 bytes from 159.20.6.38: icmp_seq=3 ttl=63 time=12.3 ms 64 bytes from 159.20.6.38: icmp_seq=4 ttl=63 time=14.6 ms --- dr.dk ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 12.331/13.369/14.614/0.929 ms real 0m3.041s user 0m0.004s sys 0m0.000s

root

root er Linuxsystemets superbruger, som har rettigheder til at gøre alt. Det kan f.eks. være:

  • Opdatering af systemet
  • Ændring af rettigheder på filer, mapper og drev
  • Ændring af systemets konfigurationsfiler
  • Ændring af netværksindstillinger
  • Tilføjelse og ændring af brugere

Af sikkerhedshensyn kan det ikke lade sig gøre at logge på som root. For at klare dette problem har man lavet en gruppe, hvor man kan tilføje brugere der kan få root-rettigheder. Gruppen kaldes sudo.

Brugeren du oprettede da du installerede computeren er automatisk medlem af denne gruppe.

Når du udfører kommandoer med sudo, så har du ret til at gøre alt.

Det betyder også at du kan ødelægge og slette vigtige filer på computeren.

Et eksempel

Her vil en bruger have informationer om harddiskens partitioner

parted -l
tj@server1:~$ parted -l /dev/mapper/control: open failed: Permission denied Failure to communicate with kernel device-mapper driver. Incompatible libdevmapper 1.02.167 (2019-11-30) and kernel driver (unknown version).

Første linie fortæller: Permission denied, fordi brugeren ikke har adgang.

Bruger vi sudo foran kommandoen bliver vi bedt om vores password.

tj@server1:~$ sudo parted -l [sudo] password for tj:

Når vi har indtastet det, får vi

Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 107GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 1076MB 1074MB ext4 3 1076MB 107GB 106GB Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 32.2GB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 32.2GB 32.2GB ext4

root-shell

Hvis der skal udføres meget administrationsarbejde vælger man ofte at bruge kommandoen sudo su. Denne kommando ændrer ens bruger til root, og man får adgang til root-shell:

I en root-shell udføres alle kommandoer som root.

sudo su
addr sudo su [sudo] password for tj: root@tj-VirtualBox:/home/tj#

Hvis man skal lave systemarbejde kan det nogle gange være optimalt at anvende root-shell.

Husk at lukke ned

Man skal altid lukke en terminal-session ned når man er færdig med sit arbejde. Det gøres ligesom ovenfor ved hjælp af kommandoen: exit.

exit
root@tj-VirtualBox:/home/tj# exit exit tj@server1:~$ _

Forsøger man at lukke den ned ved hjælp af Alt+F4, vil man få følgende fejlmeddelelse:

Fejlmeddelse, når man forsøger at lukke terminalvinduet, når der kører en session

Det skyldes at root-shell kører ovenpå en terminal-shell. Klikker vi på , så afsluttes vores terminal-session

man pages

Til alle terminalens kommandoer er der skrevet en manual, og den kan man tilgå ved med kommandoen man [kommando]. Her kan man læse hvordan kommandoen bruges (Synopsis) og de optioner man kan tilføje (Descriptions). Herunder er de første linier af kommandoen man ls.

man ls
LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is speci‐ fied. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and ..

Man scroller med piletasterne og afslutter med [q].

De ligger også på internettet (https://manpages.ubuntu.com/). Du kan bruge denne sides søgefunktion, men jeg plejer at åbne en browser og så lave en direkte søgning. f.eks:

ubuntu man ls

Her vil det første link som regel være direkte til Ubuntu's manpages.

Hjemmesiden for Ubuntu manuals