For nylig stødte jeg på nogle linux kommando under jeg logge ind på min kunde websted for at hente aktivitet logfil, og også undersøgelser nogle af de linux filtyper, og enkel kommando til at vide, hvad der er de filtyper på Linux Operating System.

Linux bruger fire grundlæggende filtyper:

  • ordinary files
  • directories
  • symboliske links
  • block and character device files

Du bestemmer en fils type ved at afgive kommandoen ls -l og læse det første tegn i hver række i output.
Det typiske output af kommandoen ls ser ud som følger:

$ ls -l
total 8
-rw-r-r-r- 1 root root 22 Oct 6 15:33 anormalfile
brw-rw-rw– 2 root disk 41, 0 May 5 1998 blockdev
crw-rw-rw-rw- 2 root root 5, 0 May 5 1998 characterdev
drwxr-xr-x 2 root 4096 Oct 6 15:33 subdir
lrwxrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolic -> anormalfile

Ordinære filer begynder med en streg (-), mapper begynder med d, symbolske links begynder med bogstavet l, blok-enheder indledes med bogstavet b, og tegn-enheder begynder med bogstavet c.

Ordinære filer
En almindelig fil kan bestå af alle slags data, herunder eksekverbare programmer. De fleste filer i Linux-filsystemet er af denne type.

Kataloger
En mappe er en fil, der indeholder andre filer og mapper og giver henvisninger til dem.
Den har en funktion svarende til en mappe i et arkivskab, idet den giver dig mulighed for at gruppere relaterede filer på en organiseret måde. Men mens mapper normalt kun kan indeholde filer, kan mapper indeholde yderligere mapper, der ofte kaldes undermapper.

Symbolske links
Et symbolsk – eller blødt – link peger på navnet og placeringen af en helt separat fil. Så når du åbner, kopierer, flytter eller på anden måde henviser til linket, udføres operationen rent faktisk på den fil, der henvises til. Denne forskel er normalt usynlig for brugeren. Hvis den fil, der henvises til, fjernes eller omdøbes, er linket brudt, og der opstår en fejl, hvis du forsøger at åbne den.

Du kan også oprette hårde links. Et hard link peger på de faktiske data i en fil på nøjagtig samme måde som en almindelig fil gør det. Bortset fra navnet er der derfor ingen forskel på den originale fil og et hardlink, der peger på de samme data, og begge kan betragtes som almindelige filer. Du kan kun skelne et hardlink fra enhver anden almindelig fil ved hjælp af antallet af links, som de hver især har. Antallet af links vises i det andet felt i en ls -l-liste. Hvis dette antal er større end én, ved du, at der er yderligere hardlinks til dataene.

Enhedsfiler
Alle de fysiske enheder, som Linux bruger, er repræsenteret af enhedsfiler.
Enhedsfiler kan klassificeres som tegnspecial eller blokspecial. Karakterspecifikke filer repræsenterer enheder, der interagerer med Linux på et tegn-for-tegn- eller serielt grundlag. Printere og terminaler er eksempler på denne type enheder. Blokspecifikke filer repræsenterer enheder som f.eks. harddiske eller disketter og cd-rom’er, der interagerer med Linux ved hjælp af blokke af data.

Alle enhedsfiler findes i mappen /dev – f.eks. er filen, der er tilknyttet systemets første diskettedrev, /dev/fd0.

Enhedsfiler er ekstremt effektive, fordi de giver brugerne mulighed for at få adgang til hardwareenheder som f.eks. diskdrev, modemmer og printere, som om de var datafiler. Derfor kan du nemt flytte, kopiere og overføre data mellem sådanne enheder, ofte uden at skulle bruge særlige kommandoer eller syntaks.

Filnavne og stinavne

Alle filer tildeles et filnavn, som kan være op til 256 tegn langt. Dette navn kan bestå af en blanding af store og små bogstaver, tal og visse tegnsætningstegn, f.eks. punktum, bindestreg eller understregning.

Visse tegn kan ikke bruges i filnavne. Du kan f.eks. ikke bruge tegn, der repræsenterer en feltseparator – f.eks. et komma – eller andre specialtegn, der har en særlig betydning for shell’en. De specialtegn, som du ikke kan bruge, er

! @ # $ % ^ & * ( ) { } ‘ ” \ / | | ; < > ‘

Pathnames
Du kan navigere mellem mapper på kommandolinjen ved hjælp af pathnames. Hvis du vil bruge vejnavne, skal du forstå mappestrukturen i Linux-filsystemet. Den højeste mappe i Linux-filsystemet er rodmappen, som er repræsenteret ved en skråstreg (/). Under rodmappen ligger mapperne på øverste niveau efterfulgt af et eller flere undermappeniveauer.

Filstruktur i et Linux-filsystem
Du kan flytte mellem mapper ved hjælp af relative eller absolutte henvisningsnavne.

Et relativt henvisningsnavn starter med din aktuelle mappe. Hvis du f.eks. vil skifte til mappen expenses fra din hjemmemappe, indtaster du

cd expenses

Relative vejnavne kan begynde med navnet på en fil eller en mappe eller med symbolske henvisninger til den aktuelle mappe (.) eller dens overordnede mappe (..), men aldrig med en skråstreg fremad.

Et simpelt eksempel på et Linux-filsystem
Et absolut vejnavn viser det fulde vejnavn fra rodmappen (/). Med følgende kommando kan du f.eks. flytte fra din aktuelle mappe direkte til undermappen applic i mappen usr, der ligger under rodmappen:

cd /usr/applic

Inoder, blokke og specielle filer

Inoder
Alle filer er tildelt et unikt inodetal. En inode er en struktur, der definerer filens placering og attributter. Du kan kontrollere en fils inode-nummer ved hjælp af indstillingen -i med kommandoen ls. Du kan få vist de oplysninger, som en fils inode indeholder, ved hjælp af syntaksen stat filnavn. Dette kommandooutput (stat results) viser de oplysninger, der er relateret til “results”-filens inode.

$ stat results
Fil: “results”
Størrelse: 8
Filetype:
Filetype: Regular file
Mode:: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Gid: ( 0/ root)
Device: ( 0/ root)
Device: 3,7 Inode: 123256 Links: 1
Access: 1
Access: 1 Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: Tue Jul 25 16:45:00 2000 (00072.18:31:07) Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Ændring: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Ændring: I dette eksempel omfatter nogle af de attributter, der vises, filtype, filstørrelse, ejerens bruger-id (UID), antallet af hardlinks, der er tilknyttet filen, og filens oprettelses-, adgangs- og ændringstidspunkter.

En inode gemmer ikke en fils navn. Filnavne gemmes i mapper med deres tilknyttede inode-numre. I eksemplet med stat-kommandoen fås filens navn fra den parameter filnavn, som du indtastede.

Blokke
I Linux-filsystemet gemmes filer i blokke, som er segmenter af diskplads af identisk størrelse. Generelt varierer størrelsen af en blok fra 512 bytes til 32 KB, afhængigt af Linux-installationen. Den maksimale størrelse af en fil afhænger af den blokstørrelse, der anvendes i filsystemet. F.eks. er den maksimale filstørrelse for et ext2-filsystem 2 GB, hvis der anvendes blokke på 512 byte.

Disksystemer henter data i blokstørrelser, så jo større blokstørrelse, jo mere effektiv er adgangen. Problemet med at oprette store blokke er, at det kan spilde diskplads. Hvis blokstørrelsen f.eks. er 4 KB, og de fleste filer kun indeholder nogle få bytes data, spildes det meste af de 4096 bytes diskplads for hver fil. Men hvis du gør blokstørrelserne små, vil diskadgangen være relativt mindre effektiv.

Nogle kommandoer, f.eks. df, udsender diskoplysninger i blokke på 1 KB, selv om installationen gemmer filer i en anden blokstørrelse. En enkel måde at kontrollere systemets blokstørrelse på er at bruge kommandoen du til at vise diskforbruget. I dette eksempel vises diskforbruget for alle filer, der begynder med “m”.

$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab

I dette eksempel viser du-kommandoens output filstørrelserne på disken i intervaller af blokstørrelsen, som i dette tilfælde er 4,0 KB. En undtagelse fra denne regel er, når der vises nul, hvilket angiver, at filen er helt tom.

Speciale filer
Ud over andre filtyper gør Linux brug af specielle filer, som er systemdefinerede filer, der udfører unikke funktioner, når der tilgås dem.

Speciale filer og deres funktioner

Hvis du f.eks. har brug for at slippe af med uønsket output fra en kommando, kan du omdirigere output til filen /dev/null. I dette eksempel omdirigeres eventuelle fejl, der genereres af kommandoen find, fra stderr til /dev/null.

$ find / -n myfile 2> /dev/null

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.