Boken Om Linux/Kapittel 5

5: Informasjon fra Linux-systemetRediger

Linux-kommandoene jeg går igjennom i dette kapitlet, er lette å bruke. Selv om du skulle gjøre feil, er det ingen risiko for å gjøre noen skade. Alle kommandoene henter bare ut informasjon, de endrer ikke tilstanden på systemet. Når du bruker disse kommandoene får du øvelse i å bruke Linux, og du lærer litt mer om systemet.

Kalender – calRediger

   cal-kommandoen gir en kalender for dag, måned og år. 
Kommandoen cal viser kalender
Kommando: cal [måned] [år]
Funksjon: enkelt Linux-program som gir deg en kalender; oversikt over dag, måned eller år
Argument: måned og/eller år
Opsjoner: ingen
   Eksempler med Opensuse Linux:
       elboth@nittedal:~> cal 

Mai 2016 2021

</noinclude> </noinclude> 4

</noinclude>



</noinclude>

   Gir kalenderen for forrige, inneværende og neste måned.
       elboth@nittedal:~> cal 6 2016 

Juni 2016 Gir kalenderen for mai i år 2016.

Ekko til skjerm – echoRediger

Med kommandoen echo kan du sende koder til skjermen. Kommandoen echo forventer et argument, som kan være tekst eller spesielle koder. Denne kommandoen er ikke spesielt nyttig i seg selv, men kan være en nyttig i et script med mange kommandolinjer.

Kommandoen echo echo tegn til skjerm
Kommando: echo [argument]
Funksjon: enkelt Linux-program som sender tekststreng eller koder til skjermen
Argument: tekst eller kontrollkode og/eller jokere
Opsjoner: Se også Linux-man-sidene.

Kommandoen echo uten argumenter sender bare en tom streng til skjermen. Blant andre kan følgende koder settes inn i teksten: \b - ett tegn til venstre (backspace) \c - tar ikke linjeskift \f - blankettmating (formfeed) \n - ny linje \t - tabulator \n - hvor n er et oktalt siffer Eksempler:

   [david@nittedal david]$ echo Linux er gøy Sender tekststrengen "Linux er gøy" til skjermen. Du kan få sendt ut tegn fra ASCII- eller ISO-tabellen ved å gi koden for dette: 

[david@nittedal david]$ echo "\07"

   Sender koden <Ctrl-g> (kontroll g) til skjermen.
   [david@nittedal david]$ echo "\063" Sender tallet 3 til skjermen.
   [david@nittedal david]$ echo "\0101" Sender bokstaven A til skjermen.
   [david@nittedal david]$ echo "Hei på deg!! \c" Sender tekststrengen "Hei på deg!!" til skjermen, uten at den følges av et linjeskift.
   [david@nittedal david]$ echo * Har samme funksjon som ls-kommandoen, se nedenfor. Lister ut alle filene på den katalogen kommandoen blir utført fra. Hvis du har spesialtegn i teksten(Se kapittel 6), må du bruke anførselstegn:
   [david@nittedal david]$ echo "*! er spesialtegn" Se også: bash, ls

Fil- og katalogoversikt – lsRediger

ls skriver ut (lister) en oversikt over filer og kataloger. ls tilsvarer kommandoen DIR under MS-DOS/Windows. DIR-kommandoen finnes også under Linux, (Se kapittel 15) , men ls har flere muligheter enn DIR. Dessuten har ikke alle versjoner av Unix støtte for DIR, slik at hvis du kommer borti en annen Unix-versjon enn Linux, så er det greit å være fortrolig med ls.

Kommandoen ls Fil-og katalogoversikt
Kommando: ls [-aCilrRt] [argument]
Funksjon: Gir innholdsfortegnelse over filer og kataloger. Uten opsjoner får du en liste over filer sortert etter navn. Bruker du forskjellige opsjoner, får du med eier, gruppe, størrelse i antall tegn (byte), oppdateringsdato, m.m.
Argument: fil og/eller katalog med eller uten jokere
Opsjoner: Se også Linux-man-sidene.
-a Viser alle filer, også systemfiler, som begynner med punktum, for eksempel .profile, .login, .cshrc, .mailrc etc.
-C Filene og katalogene blir listet ut i flere kolonner.
-i Skriver ut tilhørende inodenummer til filen
-l Gir et langt format med: tilgangstillatelse antall referanser til en fysisk fil eier størrelse dato
-r Sorterer i omvendt rekkefølge
-R Viser alle underliggende kataloger
-t Kronologisk rekkefølge
-Z Viser sikkerhets context
--scontext Viser kun sikkerhets context og filnavn

Argumentet kan være filer og/eller kataloger. Kommandoen ls uten opsjon skriver alle standard filer og kataloger i aktiv katalog til skjermen.  

Figur 5.1: Bruk av Linux-kommandoen ls fra et terminalvindu Systemfiler i Linux har filnavn som begynner med punktum. Disse vises normalt ikke av ls-kommandoen. Men, tar du med opsjonen -a, vises også systemfilene. Det er en konvensjon i Linux at programmer som oppretter konfigurasjonsfiler knyttet til din Linux-bruker, legger disse på ditt hjemmeområde, og gir filene et filnavn med punktum først i navnet. Disse filene skal vanligvis ikke endres på av deg og skjules derfor av ls. Eksempler:

[david@nittedal david]$ ls -la Gir en liste over alle filer og kataloger, inkludert systemfiler. Listen kommer ut i langt format.

[david@nittedal david]$ ls -lt Her får jeg bare en liste over standard filer og kataloger. Siden jeg bruker opsjonen -t, får jeg lista ut i kronologisk rekkefølge.

[david@nittedal david]$ ls -Z Her får jeg med en tilhørende sikkerhets contex-liste. Denne listen får bare opp hvis du kjører SElinux med økt sikkerhet.

[david@nittedal david]$ ls --scontext Bruker du opsjonen --scontext får du kun med sikkerhets contexen og filenavn. Se også: dir, vdir, chmod og find

Dato og klokkeslett – dateRediger

Med date kan du se eller endre dato og klokkeslett.

Kommandoen date Lese/sette dato og klokke
Kommando: date [MMddhhmm[år]] [+format]
Funksjon: Viser dato og klokkeslett. Dato og klokkeslett som vises på skjermen, kan presenteres på ulike formater. Er du systemadministrator, kan du også endre dato og klokkeslett.
Argument: Dato og/eller klokkeslett
Opsjoner: Se også Linux-man-sidene.

Formatet defineres med et sett feltkoder. Forkortelsene for dato og klokkeslett er definert nedenfor: MM - måned dd - dato hh - timer mm - minutter år - årstall Format-feltet gir deg full kontroll på datoformatet ut fra kommandoen. Formatet, angis som fritekst ispedd passende feltkoder. Hver feltkode erstattes med del av dato, eller tidspunkt eller et spesialtegn. Feltkodene angis med en bokstav prefikset med et %-tegn.. Feltkoder: n - tvinger inn et linjeskift t - tvinger inn et tabulator-tegn m - måneden kommer i formatet 01 til 12 d - datoen kommer i formatet 01 til 31 y - bare de to siste sifrene i årstallet kommer med H - timene i klokkeslettet kommer i formatet 00 til 23 M - minuttene i klokkeslettet kommer i formatet 00 til 59 S - sekunder i klokkeslettet kommer i formatet 00 til 59 Hvis formatet begynner med +, blir utskriften styrt av bruker. Eksempel:

   elboth@dhcppc3:~> date
   ma. 25. april 07:50:52 +0200 2016
   elboth@dhcppc3:~> (CET står her for sentraleuropeisk tid.) Gir dagens dato og klokkeslett. Vanlige brukere kan bare se dagens dato og klokkeslett, mens systemadministrator kan sette ny dato og nytt klokkeslett for systemet:
   [root@nittedal /root]# date 07291545 

Her setter systemadministrator datoen til 29. juli og klokkeslettet til 15.45.

Hvis klokka i systemet går galt, vil det påvirke alle kommandoer som relaterer seg til tid. Systemadministrator må passe på at klokka er riktig. Ønsker du å stille dato/klokkeslett, kan du også bruke X Windows-programmet dateconfig (bare Red Hat og Fedora).

   Figur 5.2: Eksempel på bruk av Khrone fra SuSE Jeg tar til slutt med et eksempel på bruk av format til kommandoen date:
   [david@nittedal david]$ date '+Dagens dato: %m/%d/%y%nKlokkeslett: %H:%M:%S' Som gir: Dagens dato, for eksempel: 07/13/05
       Klokkeslett, for eksempel: 22:01:49 
       Se også: Kapittel 11, Prosesser, og kapittel 16, Skallprogrammering 

Det er også mulighet å hente klokke\tid basert på geografisk plasering. F.eks hvis du skal reise på ferie så slipper du å sette opp tidsone på nytt. Men dette kan gi noen problemer hvis du bruker VPN. Les mere om det på. https://github.com/cdown/tzupdate

Hvem er på systemet? – whoRediger

Ønsker du å vite hvem som er pålogget systemet, kan du bruke who-kommandoen:

   Kommandoen who uten opsjon viser navnene på brukere som er pålogget, og som er i aktivitet, samt når vedkommende ble pålogget. Velges opsjonen -u, får du listet opp prosessidentene assosiert med brukeren. (Se også kapittel 11.) Eksempler:
   [david@nittedal david]$ who
   david ttyp0 Nov 17 11:34
   root tty2 Nov 17 11:44
   erik tty6 Oct 9 00:46 Her ser vi navnene på brukere som er pålogget, og som er i aktivitet, samt når vedkommende ble pålogget.
   [david@nittedal david]$ who -u
   root tty1 Nov 27 10:48 00:04
   david tty6 Nov 27 12:21 .
   david ttyp0 Nov 27 11:00 . (207.117.119.220) De brukerne som har vært aktive det siste minuttet, er merket med punktum. Er ikke terminalen brukt de siste 24 timene, blir dette markert med old. Helt til høyre er IP-adressen (207.117.119.220) til den innloggede brukeren.
   [david@nittedal david]$ who -T
   root - tty1 Nov 27 10:48
   david + tty6 Nov 27 12:21
   david + ttyp0 Nov 27 11:00 (207.117.119.220) Med T-opsjonen får du status på terminalen. + betyr at du kan skrive til terminalen. (Se mesg-kommandoen.) Se også: date, login, who am i, ps, mesg 

Hvem er jeg? – who am iRediger

   Har du flere bruker-identer, kan det fort gå i surr. Kommandoen "who am i" gir deg klar beskjed om hvem du er.

Brukerinformasjon – fingerRediger

Med kommandoen finger får du systeminformasjon om de forskjellige brukerne på systemet.

[david@nittedal david]$ finger

Login Name Tty Idle Login Time Office Office Phone

david David Elboth 6 1:17 Nov 27 12:21 Nittedal 67075694

david David Elboth p0 Nov 27 11:00 (207.117.119.220)

root root *1 Nov 27 10:48 Nittedal 67078944 Utskriftene vil avhenge av blant annet sikkerhetsnivået for systemet. Her er et eksempel fra Fedora Linux. Fra utskriften kan jeg lese at jeg har 3 brukere inne på systemet. Jeg ser brukernes komplette navn, hvilken terminaldriver som brukes, brukt tid, når de logget seg inn på systemet, kontoradresse/plassering og telefon.

 

Figur 5.3: Eksempel på bruk av Linux-kommandoen finger Her er et eksempel hvor jeg har brukt vertsnavn:

[david@nittedal david]$ finger david@nittedal.c2i.net

[nittedal.c2i.net]

Login: david Name: David Elboth

Directory: /home/david Shell: /bin/bash

Office: Nittedal, 22777696

On since Fri Nov 27 12:21 (CEST) on tty6 1 hour 29 minutes idle

On since Fri Nov 27 11:00 (CEST) on ttyp0 from 207.117.119.220

1 second idle

No mail.

No Plan. Programmet finger krever at en servertjeneste kjøres, og det har vært mye sikkerhetsproblemer med denne tjenesten - så det er ikke alltid den følger med alle Linux-distribusjoner. Se også: date, who, who am i, ps

Aktuell filtype – fileRediger

Hvis du lurer på hva en bestemt fil inneholder, eller hvilket program som har laget den, kan du bruke file-kommandoen. Den utfører en serie tester. Er filen din en ASCII-fil, blir den første blokken testet for å se hvilket språk den er skrevet i. Finner den et 8-bits tegn, blir filen automatisk definert som 8-bits tekst. Flere forskjellige formater blir gjenkjent.

Kommandoen file Hvilken type fil?
Kommando: file [-f] fil/katalog [filnavn]
Funksjon: Gir informasjon om filtype (katalog)
Argument: File-kommandoen krever et argument, dvs enten et filnavn eller jokere. (Se kapittel 6 om bruk av jokere.) Brukes opsjonen -f, er filen en liste over filnavn.
Opsjoner: Se også Linux-man-sidene.
-f Neste argument er en fil med en liste over filnavn
Filtype Beskrivelse
ascii text Tekstfiler hvor mindre enn 20 % av kommandoene har blanke tegn eller linjeskift bak
cannot open Lesing er ikke tillatt
c program text c-kildekodeprogram
commands text Filen er et bash-skall-program (skript)
directory En katalog
empty En tom fil
data En standard datafil

Eksempel:  

[david@nittedal david]$ file *

batch: commands text

c‑files: directory

cls.bat: commands text

cls.c: c program text

convert.c: c program text

fil: empty

ifs: commands text

test: directory

uni.c: c program text

uniconv.c: c program text

Figur 5.3: Eksempel på bruk av Linux-kommandoen fileTerminalnavnet – ttyRediger

Terminalen kontrollerer alle prosessene som startes av en bruker. Hver perifereenhet styres av en driver. Standard I/U (inndata/utdata) og feil blir automatisk koblet til brukerens terminal. Ønsker du å vite hvilken driver og hvilket navn din terminal har, kan du bruke kommandoen tty.

Kommandoen tty Hvilken terminaldriver?
Kommando: tty [opsjon]
Funksjon: Gir navnet på terminaldriveren du bruker
Argument: Fil eller katalog
Opsjoner: Se også Linux-man-sidene.


Eksempel:

[david@nittedal david]$ tty

/dev/tty1

Diskforbruk – duRediger

Ved hjelp av kommandoen du (Disk Usage) får du en oversikt over hva en bruker eller hele systemet opptar av 512-byte (evt 1024 byte) blokker. Som systemadministrator kan du bruke denne kommandoen for å finne hvilke brukere eller programmer som tar mest plass på systemets harddisker.

Kommandoen du Diskforbruk per fil/katalog
Kommando: du [-as] [argument]
Funksjon: Angir diskforbruket for hver fil, for hver katalog og katalogstruktur (totalt)
Argument: Fil eller katalog
Opsjoner: Se også Linux-man-sidene.
-a Antall blokker hver fil og katalog opptar
-s Viser bare totalt antall blokker brukt av de katalogene som angis som argument

Uten opsjoner får du antall blokker, kataloger og totalt blokk-forbruk på disken. Eksempel:

   [root@nittedal /usr/bin]# du -a /root
   1 /root/.prognet/RealServer50
   2 /root/.prognet
   2 /root/.Xdefaults
   1 /root/.seyon/startup
   14 /root/.seyon
   3 /root/.bash_history
   1 /root/Xrootenv.0
   1 /root/.FVWM2-errors
   29 /root
   [root@nittedal /usr/bin]# Tallene representerer blokkforbruket for hver fil og katalog. Det siste tallet gir totalforbruket.
   [root@nittedal /usr/bin]# du -s /root
   29 /root
   [root@nittedal /usr/bin]# Her får jeg totalt blokkforbruk til katalogen /root. 

Linux-versjon/-navn – unameRediger

Med kommandoen uname finner du hva slags Linux- (eller Unix-) system du jobber mot. Dette er nyttig å vite ved system til system-kommunikasjon. Bruker du ikke opsjoner, får du Linux-systemnavnet på terminalen. Eksempler:

Kommandoen uname Linux-operativsystem/systemnavn
Kommando: uname [-snrvma]
Funksjon: Viser maskinarkitektur, Linux-systemnavn og maskinnavnet på Linux-maskin
Argument: Ingen
Opsjoner: Se også Linux-man-sidene.
-s Skriver ut operativsystemnavnet
-s Skriver ut maskinnavnet, "nodenavnet"; dette navnet brukes som referanse ved nettverkskommunikasjon.
-r Skriver ut utgaven (releasen) av operativsystemet
-v Skriver ut versjonen av operativsystemet
-m Angir hvilken maskinvare som brukes, f.eks Pentium, MC68XXX, Alpha etc.
-a Skriver ut all informasjon

Bruker du ikke opsjoner, får du Linux-systemnavnet på terminalen. Eksempler:

[david@nittedal david]$ uname -s

Linux Dette betyr at systemnavnet er Linux.

[root@dhcppc6 ~]# uname -a

Linux dhcppc6 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:37:32 EDT 2006 i686 i686 i386 GNU/Linux

Her får jeg med operativsystem navnet (Linux), maskinnavnet, "nodenavnet" (dhcppc6), utgaven av operativsystemet (2.6.18-1.2798.fc6 #1 SMP), versjonen av operativsystemet (#1 SMP Mon Oct 16 14:37:32 EDT 2006) og maskinarkitektur (ii686 i686 i386 GNU/Linux). Ønsker du å endre maskinnavnet på maskinen din bruker du kommandoen hostname (Se kapittel 22).

Oppgaver til kapittel 5Rediger

Oppgave 5.1 Lag en kalender for neste år. Skriv navnet ditt på skjermen med echo-kommandoen. Prøv flere av variantene til ls-kommandoen.

Oppgave 5.2 Er systemets systemtid riktig? Logg deg inn som systemadministrator(root) og sett systemets dato og klokke riktig.

Oppgave 5.3 Sjekk brukere og virtuelle terminaler med who-kommandoen. Er det noen som sover ved terminalene sine? Prøv forskjellige opsjoner til who-kommandoen.

Oppgave 5.4 Hva slags filer har du i katalogene /usr/bin og /usr/doc?

Oppgave 5.5 Hvilke to metoder kan du bruke for å finne driveren for terminalen din? Prøv begge to.

Oppgave 5.6 Hva er Linux-systemets totale blokkforbruk? Hva slags Linux-system kjører du, og hva slag maskinarkitektur kjører du på?