Recentelijk kom ik over een aantal linux commando tijdens het inloggen op mijn klant site naar activiteit log-bestand op te halen, en ook studies een aantal van de linux bestandstypen, en eenvoudige commando om te weten wat is de bestandstypen op Linux-besturingssysteem.
Linux gebruikt vier basisbestandstypen:
- gewone bestanden
- directories
- symbolische koppelingen
- blok- en tekenapparaatbestanden
U bepaalt het type van een bestand door het ls -l commando uit te voeren en het eerste teken van elke rij in de uitvoer te lezen.
De typische uitvoer van het ls-commando is als volgt:
$ ls -l
totaal 8
-rw-r- 1 root root 22 okt 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 5 mei 1998 blockdev
crw-rw-rw- 2 root root 5, 0 5 mei 1998 characterdev
drwxr-xr-x 2 root 4096 6 okt 15:33 subdir
lrwxrwxrwx 1 root 11 Oct 6 15:35 symbolic -> anormalfile
Ordinaire bestanden beginnen met een streepje (-), directories beginnen met d, symbolische koppelingen beginnen met het teken l, blokapparaten worden voorafgegaan door het teken b, en karakterapparaten beginnen met de letter c.
Ordinaire bestanden
Een gewoon bestand kan bestaan uit elk soort gegevens, inclusief uitvoerbare programma’s. De meeste bestanden in het Linux-bestandssysteem zijn van dit type.
Directories
Een directory is een bestand dat andere bestanden en directories bevat, en daar verwijzingen naar geeft.
Het vervult een soortgelijke functie als een map in een archiefkast, in die zin dat het u in staat stelt gerelateerde bestanden op een georganiseerde wijze te groeperen. Echter, terwijl mappen normaal gesproken alleen bestanden kunnen bevatten, kunnen mappen extra mappen bevatten, vaak aangeduid als subdirectories.
Symbolische links
Een symbolische – of soft – link wijst naar de naam en locatie van een geheel apart bestand. Dus wanneer u de koppeling opent, kopieert, verplaatst of er op andere wijze naar verwijst, wordt de bewerking in feite uitgevoerd op het bestand waarnaar wordt verwezen. Dit onderscheid is meestal onzichtbaar voor de gebruiker. Als het bestand waarnaar wordt verwezen wordt verwijderd of hernoemd, wordt de koppeling verbroken en treedt er een fout op als u probeert het te openen.
U kunt ook harde koppelingen maken. Een harde koppeling verwijst naar de werkelijke gegevens in een bestand op precies dezelfde manier als een gewoon bestand dat doet. Daarom is er, afgezien van de naam, geen verschil tussen het oorspronkelijke bestand en een hard link die naar dezelfde gegevens verwijst, en kunnen beide als gewone bestanden worden beschouwd. U kunt een hard link van een ander gewoon bestand alleen onderscheiden door het aantal links dat elk bestand heeft. Het aantal links wordt weergegeven in het tweede veld van een ls -l listing. Als dit aantal groter is dan één, dan weet u dat er extra hard links naar de gegevens zijn.
Device files
Alle fysieke apparaten die Linux gebruikt worden gerepresenteerd door device files.
Device files kunnen worden geclassificeerd als character special of block special. Character-special bestanden representeren apparaten die met Linux interageren op een karakter-per-karakter, of seriële, basis. Printers en terminals zijn voorbeelden van dit soort apparaten. Blok-speciale bestanden vertegenwoordigen apparaten zoals harde of floppy schijven en CD-ROM’s, die met Linux communiceren met behulp van blokken van gegevens.
Alle apparaatbestanden bevinden zich in de /dev directory – bijvoorbeeld, het bestand geassocieerd met het eerste diskettestation van het systeem is /dev/fd0.
Device bestanden zijn zeer krachtig, omdat ze gebruikers in staat stellen om hardware-apparaten zoals diskdrives, modems, en printers te benaderen alsof het gegevensbestanden zijn. Daarom kunt u gemakkelijk gegevens verplaatsen, kopiëren en overbrengen tussen dergelijke apparaten, vaak zonder speciale opdrachten of syntaxis te hoeven gebruiken.
Filienamen en padnamen
Elk bestand krijgt een bestandsnaam, die maximaal 256 tekens lang kan zijn. Deze naam kan bestaan uit een combinatie van hoofdletters en kleine letters, cijfers, en bepaalde interpunctietekens zoals de punt, het streepje of de underscore.
Enkele tekens kunnen niet in bestandsnamen worden gebruikt. U kunt bijvoorbeeld geen tekens gebruiken die een veldscheidingsteken voorstellen – zoals een komma – of andere speciale tekens die een bijzondere betekenis hebben voor de shell. De speciale tekens die u niet kunt gebruiken zijn
! @ # $ % ^ & * ( ) { } ‘ ” / | | ; < > ‘
Pathnamen
U kunt tussen directory’s navigeren op de opdrachtregel met behulp van pathnamen. Om padnamen te kunnen gebruiken, moet u de directorystructuur van het Linux-bestandssysteem begrijpen. De hoogste directory in het Linux bestandssysteem is de root directory, die wordt weergegeven door een schuine streep (/). Onder de hoofddirectory bevinden zich de mappen op het hoogste niveau, gevolgd door een of meer subdirectory-niveaus.
Bestandsstructuur van een Linux-bestandssysteem
U kunt van directory naar directory gaan met relatieve of absolute padnamen.
Een relatieve padnaam begint met uw huidige directory. Als u bijvoorbeeld vanuit uw thuismap naar de map uitgaven wilt gaan, typt u
cd uitgaven
Relatieve padnamen kunnen beginnen met de naam van een bestand of map, of met symbolische verwijzingen naar de huidige map (.) of de bovenliggende directory (..), maar nooit met een schuine streep.
Een eenvoudig voorbeeld van een Linux-bestandssysteem
Een absolute padnaam geeft de volledige padnaam vanaf de hoofddirectory (/). Met de volgende opdracht kunt u bijvoorbeeld van uw huidige directory rechtstreeks naar de subdirectory applic in de directory usr gaan die zich onder de hoofddirectory bevindt:
cd /usr/applic
Inodes, blokken en speciale bestanden
Inodes
Elk bestand krijgt een uniek inode-nummer toegewezen. Een inode is een structuur die de locatie en attributen van het bestand definieert. U kunt het inode nummer van een bestand controleren met de -i optie van het ls commando. U kunt de informatie bekijken die de inode van een bestand bevat met de syntaxis stat bestandsnaam. Deze opdrachtuitvoer (de stat results) geeft de informatie weer met betrekking tot de inode van het bestand “results”.
$ stat results
Bestand: “results”
Grootte: 8
Bestandstype: Normaal bestand
Wijze: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Links: 1
Toegang: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Wijziging: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
In dit voorbeeld worden onder meer het bestandstype, de bestandsgrootte, de gebruikers-ID (UID) van de eigenaar, het aantal hardlinks dat aan het bestand is gekoppeld, en de aanmaak-, toegangs- en wijzigingstijden van het bestand weergegeven.
In een inode wordt de naam van een bestand niet opgeslagen. Bestandsnamen worden opgeslagen in mappen met de bijbehorende inode nummers. In het voorbeeld van de opdracht stat wordt de naam van het bestand verkregen uit de parameter bestandsnaam die u hebt opgegeven.
Blokken
In het Linux-bestandssysteem worden bestanden opgeslagen in blokken, dat zijn segmenten van schijfruimte van identieke grootte. Over het algemeen varieert de grootte van een blok van 512 bytes tot 32 KB, afhankelijk van de Linux installatie. De maximale grootte van een bestand hangt af van de blokgrootte die in het bestandssysteem wordt gebruikt. De maximale bestandsgrootte voor een ext2-bestandssysteem is bijvoorbeeld 2 GB als het gebruik maakt van blokken van 512 bytes.
Schijfsystemen halen gegevens op in brokken van blokgrootte, dus hoe groter de blokgrootte, hoe efficiënter de toegang. Het probleem met het maken van grote blokken is dat het schijfruimte kan verspillen. Als de blokgrootte bijvoorbeeld 4 KB is en de meeste bestanden slechts een paar bytes aan gegevens bevatten, wordt het grootste deel van de 4096 bytes aan schijfruimte verspild voor elk bestand. Maar als u de blokgroottes klein maakt, zal de toegang tot de schijf relatief minder efficiënt zijn.
Sommige commando’s, zoals df, voeren schijfinformatie uit in blokken van 1 KB, zelfs als de installatie bestanden in een andere blokgrootte opslaat. Een eenvoudige manier om de blokgrootte van uw systeem te controleren is door het du commando te gebruiken om het schijfgebruik weer te geven. In dit voorbeeld wordt het schijfgebruik voor alle bestanden die met “m” beginnen weergegeven.
$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
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
In dit voorbeeld toont de uitvoer van het du commando de bestandsgroottes op de schijf in stappen van de blokgrootte, die in dit geval 4.0 KB is. Een uitzondering op deze regel is wanneer nul wordt weergegeven, wat aangeeft dat het bestand volledig leeg is.
Speciale bestanden
Naast andere bestandstypen maakt Linux gebruik van speciale bestanden, dit zijn systeem-gedefinieerde bestanden die unieke functies uitvoeren wanneer ze worden benaderd.
Speciale bestanden en hun functies
Als u bijvoorbeeld ongewenste uitvoer van een opdracht wilt verwijderen, kunt u de uitvoer omleiden naar het bestand /dev/null. In dit voorbeeld worden alle fouten die door de opdracht find worden gegenereerd, omgeleid van stderr naar /dev/null.
$ find / -n myfile 2> /dev/null