Viime aikoina olen törmännyt joihinkin linux komento aikana kirjauduin minun asiakkaan sivuston hakea toiminnan lokitiedoston, ja myös opiskelee joitakin linux tiedostotyyppejä, ja yksinkertainen komento tietää, mikä on tiedostotyypit Linux-käyttöjärjestelmässä.
Linux käyttää neljää perustiedostotyyppiä:
- tavalliset tiedostot
- hakemistot
- symboliset linkit
- lohko- ja merkkilaitetiedostot
Tiedoston tyypin määrittelet antamalla komennon ls -l ja lukemalla ulostulostulon jokaisen rivin ensimmäisen merkin.
Komennon ls tyypillinen tuloste on seuraava:
$ ls -l
total 8
-rw-r-r- 1 root root 22 lokakuu 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 5.5.1998 blockdev
crw-rw-rw- 2 root root 5, 0 5.5.1998 characterdev
drwxr-xr-x 2 root root 4096 6.10.15:33 subdir
lrwxrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolic -> anormalfile
Ordinaaritiedostot alkavat katkoviivalla (-), hakemistot alkavat d-kirjaimella, symboliset linkit alkavat merkillä l, lohkolaitteet alkavat merkillä b ja merkkilaitteet kirjaimella c.
Ordinaaritiedostot
Tavallinen tiedosto voi koostua kaikenlaisesta datasta, myös suoritettavista ohjelmista. Suurin osa Linuxin tiedostojärjestelmän tiedostoista on tämäntyyppisiä.
Hakemistot
Hakemisto on tiedosto, joka sisältää muita tiedostoja ja hakemistoja ja tarjoaa osoittimia niihin.
Hakemistolla on samankaltainen tehtävä kuin arkistokaapin kansiolla, sillä sen avulla voit ryhmitellä toisiinsa liittyviä tiedostoja järjestäytyneesti. Kuitenkin siinä missä kansiot voivat yleensä sisältää vain tiedostoja, hakemistot voivat sisältää lisähakemistoja, joita kutsutaan usein alihakemistoiksi.
Symboliset linkit
Symbolinen – tai pehmeä – linkki osoittaa täysin erillisen tiedoston nimeen ja sijaintiin. Kun siis avaat, kopioit, siirrät tai muutoin viittaat linkkiin, toiminto suoritetaan itse asiassa viitatulle tiedostolle. Käyttäjä ei yleensä huomaa tätä eroa. Jos viitattu tiedosto poistetaan tai nimetään uudelleen, linkki katkeaa ja virheilmoitus tulee, jos sitä yritetään avata.
Voidaan luoda myös kovia linkkejä. Kova linkki osoittaa tiedoston varsinaiseen tietoon aivan samalla tavalla kuin tavallinen tiedosto. Siksi alkuperäisen tiedoston ja samaan dataan viittaavan kovan linkin välillä ei ole nimeä lukuun ottamatta mitään eroa, ja molempia voidaan pitää tavallisina tiedostoina. Voit erottaa kovan linkin mistä tahansa muusta tavallisesta tiedostosta vain sen perusteella, kuinka monta linkkiä kummassakin on. Linkkien määrä näkyy ls -l-luettelon toisessa kentässä. Jos tämä luku on suurempi kuin yksi, tiedät, että aineistossa on ylimääräisiä kovia linkkejä.
Laitetiedostot
Kaikki Linuxin käyttämät fyysiset laitteet esitetään laitetiedostoilla.
Laitetiedostot voidaan luokitella merkkispesifiksi tai lohkospesifiksi. Merkki-erikoistiedostot edustavat laitteita, jotka ovat vuorovaikutuksessa Linuxin kanssa merkkikohtaisesti eli sarjakohtaisesti. Tulostimet ja päätelaitteet ovat esimerkkejä tämäntyyppisistä laitteista. Lohko-erikoistiedostot edustavat laitteita, kuten kovalevyjä tai levykkeitä ja CD-ROM-levyjä, jotka ovat vuorovaikutuksessa Linuxin kanssa käyttäen tietolohkoja.
Kaikki laitetiedostot sijaitsevat /dev-hakemistossa – esimerkiksi järjestelmän ensimmäiseen levykeasemaan liittyvä tiedosto on /dev/fd0.
Laitetiedostot ovat erittäin tehokkaita, koska niiden avulla käyttäjät voivat käyttää laitteistolaitteita, kuten levyasemia, modeemeja ja tulostimia, ikään kuin ne olisivat datatiedostoja. Siksi tietoja voidaan siirtää, kopioida ja siirtää tällaisten laitteiden välillä helposti, usein ilman, että tarvitsee käyttää erityisiä komentoja tai syntaksia.
Tiedostonimet ja polunnimet
Jokaiseen tiedostoon annetaan tiedostonimi, joka voi olla enintään 256 merkkiä pitkä. Nimi voi koostua isoista ja pienistä kirjaimista, numeroista ja tietyistä välimerkeistä, kuten pisteestä, katkoviivasta tai alleviivauksesta.
Tietyitä merkkejä ei voi käyttää tiedostonimissä. Et voi esimerkiksi käyttää merkkejä, jotka edustavat kenttien erottimia – kuten pilkkua – tai muita erikoismerkkejä, joilla on erityinen merkitys komentotulkille. Erikoismerkit, joita et voi käyttää, ovat
! @ # $ % ^ & * ( ) { } ’ ” \ / | ; ; < > ’
Patunnimet
Voit navigoida hakemistojen välillä komentorivillä käyttämällä polunnimiä. Jotta voit käyttää polunnimiä, sinun on ymmärrettävä Linux-tiedostojärjestelmän hakemistorakenne. Linux-tiedostojärjestelmän ylimmän tason hakemisto on juurihakemisto, jota edustaa etuviiva (/). Juurihakemiston alla sijaitsevat ylimmän tason hakemistot, joita seuraa yksi tai useampi alihakemistotaso.
Linuxin tiedostojärjestelmän tiedostorakenne
Voit liikkua hakemistojen välillä käyttämällä suhteellisia tai absoluuttisia polunnimiä.
Suhteellinen polunnimi alkaa nykyisestä hakemistosta. Jos esimerkiksi haluat siirtyä kotihakemistostasi hakemistoon expenses, kirjoitat
cd expenses
Relatiiviset polunnimet voivat alkaa tiedoston tai hakemiston nimellä tai symbolisilla viittauksilla nykyiseen hakemistoon (.) tai sen emohakemistoon (..), mutta ei koskaan etuviivalla.
Yksinkertainen esimerkki Linux-tiedostojärjestelmästä
Absoluuttinen polkunimi osoittaa koko polkunimen juurihakemistosta (/). Esimerkiksi seuraavan komennon avulla voit siirtyä nykyisestä hakemistostasi suoraan juurihakemiston alla sijaitsevan usr-hakemiston applic-alihakemistoon:
cd /usr/applic
Inodit, lohkot ja erikoistiedostot
Inodit
Jokainen tiedosto saa yksilöllisen inodenumeron. Inode on rakenne, joka määrittelee tiedoston sijainnin ja attribuutit. Voit tarkistaa tiedoston inode-numeron käyttämällä ls-komennon -i-vaihtoehtoa. Voit tarkastella tiedoston inode-tunnuksen sisältämiä tietoja käyttämällä stat filename -syntaksia. Tämä komennon tuloste (stat results) näyttää ”results”-tiedoston inodeen liittyvät tiedot.
$ stat results
Tiedosto: ”results”
Koko: 8
Tiedostotyyppi: Tavallinen tiedosto
Mode: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Linkit: 1
Access: Ti Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: To Jul 20 12:35:20 2000 (00077.22:40:47)
Muutos: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Tässä esimerkissä näytetään muun muassa tiedostotyyppi, tiedoston koko, omistajan käyttäjätunnus (UID), siihen liittyvien kiintolinkkien määrä sekä tiedoston luonti-, käyttö- ja muokkausajankohdat.
Inode ei tallenna tiedoston nimeä. Tiedostonimet tallennetaan hakemistoihin ja niihin liittyviin inode-numeroihin. Esimerkissä stat-komennossa tiedoston nimi saadaan syöttämästäsi filename-parametrista.
Lohkot
Linuxin tiedostojärjestelmässä tiedostot tallennetaan lohkoihin, jotka ovat samankokoisia levytilan segmenttejä. Yleensä lohkon koko vaihtelee 512 tavusta 32 kilotavuun Linux-asennuksesta riippuen. Tiedoston enimmäiskoko riippuu tiedostojärjestelmässä käytetystä lohkokoosta. Esimerkiksi ext2-tiedostojärjestelmän tiedoston maksimikoko on 2 Gt, jos siinä käytetään 512 tavun lohkoja.
Levyjärjestelmät hakevat dataa lohkokokoisina kokonaisuuksina, joten mitä suurempi lohkokoko on, sitä tehokkaampi haku on. Suurten lohkojen luomisen ongelmana on, että se voi tuhlata levytilaa. Jos esimerkiksi lohkokoko on 4 kilotavua ja useimmat tiedostot sisältävät vain muutaman tavun dataa, suurin osa 4096 tavun levytilasta menee hukkaan jokaista tiedostoa kohti. Mutta jos teet lohkokoosta pienen, levyn käyttö on suhteellisesti tehottomampaa.
Jotkut komennot, kuten df, tulostavat levyn tiedot 1 KB:n lohkoina, vaikka asennus tallentaisi tiedostot eri lohkokoolla. Yksinkertainen tapa tarkistaa järjestelmän lohkokoko on käyttää du-komentoa, joka näyttää levyn käytön. Tässä esimerkissä näytetään kaikkien ”m”-alkuisten tiedostojen levynkäyttö.
$ 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
4.0k mtab
Tässä esimerkissä du-komennon ulostulossa näytetään levyllä olevien tiedostojen koot lohkon koon mukaisina askelina, joka tässä tapauksessa on 4,0 KB. Yksi poikkeus tähän sääntöön on, kun näytetään nolla, mikä tarkoittaa, että tiedosto on täysin tyhjä.
Erikoistiedostot
Muiden tiedostotyyppien lisäksi Linux käyttää erikoistiedostoja, jotka ovat järjestelmän määrittelemiä tiedostoja, jotka suorittavat ainutlaatuisia toimintoja, kun niitä käytetään.
Erikoistiedostot ja niiden toiminnot
Jos esimerkiksi haluat päästä eroon jonkin komennon ei-toivotusta tulosteesta, voit ohjata tulosteen /dev/null-tiedostoon. Tässä esimerkissä find-komennon tuottamat virheet ohjataan stderr:stä tiedostoon /dev/null.
$ find / -n myfile 2> /dev/null