104.7 Lesson 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
104 Eszközök, Linux fájlrendszerek, Fájlrendszer-hierarchia szabvány |
Fejezet: |
104.7 Rendszerfájlok keresése és a fájlok megfelelő helyre helyezése |
Lecke: |
1/1 |
Bevezetés
A Linux disztribúciók mindenféle formában és méretben léteznek, de egy dolog, ami szinte mindegyikben közös, hogy követik a Filesystem Hierarchy Standard (FHS) szabványt, amely egy “szabványos layout”-ot határoz meg a fájlrendszer számára, ami megkönnyíti az együttműködést és a rendszeradminisztrációt. Ebben a leckében többet fogunk megtudni erről a szabványról, és arról, hogyan találhatunk meg fájlokat egy Linux rendszerben.
A Fájlrendszer-hierarchia szabvány
A Fájrendszer-hierarchia szabvány (Filesystem Hierarchy Standard (FHS)) a Linux Foundation törekvése a Linux rendszerek mappaszerkezetének és a mappák tartalmának szabványosítására. A szabványnak való megfelelés nem kötelező, de a legtöbb disztribúció követi.
Note
|
Akit érdekelnek a fájlrendszer-szervezés részletei, elolvashatja az FHS 3.0 specifikációt, amely több formátumban is elérhető a http://refspecs.linuxfoundation.org/fhs.shtml oldalon |
A szabvány szerint az alapvető mappaszerkezet a következő:
/
-
Ez a gyökérkönyvtár, a hierarchia legfelső mappája. Minden más mappa ezen belül található. Egy fájlrendszert gyakran hasonlítanak egy “fához”, így ez lenne a “törzs”, amelyhez minden ág kapcsolódik.
/bin
-
Alapvető binárisok, minden felhasználó számára elérhető.
/boot
-
A rendszerindítási folyamathoz szükséges fájlok, beleértve az initrd-t (Initial RAM Disk) és magát a Linux kernelt.
/dev
-
Eszközfájlok. Ezek lehetnek a rendszerhez csatlakoztatott fizikai eszközök (például a
/dev/sda
az első SCSI vagy SATA lemez) vagy a kernel által biztosított virtuális eszközök. /etc
-
Hoszt-specifikus konfigurációs fájlok. A programok szükség esetén létrehozhatnak almappákat az
/etc
alatt több konfigurációs fájl tárolására. /home
-
A rendszerben minden felhasználónak van egy “home” mappája a személyes fájlok és beállítások tárolsához és a legtöbb a
/home
alatt található. Általában a home mappa neve ugyanaz, mint a felhasználónév, szóval a John nevű felhasználónak a mappája a/home/john
alatt lesz. A kivételek a szuperfelhasználó (root), akinek külön mappája van (/root
) és néhány rendszerfelhasználó. /lib
-
Az operációs rendszer indításához és a a
/bin
és/sbin
alatt található bináris programok futtatásához szükséges megosztott mappák. /media
-
A felhasználó által csatolható cserélhető adathordozók, például flash meghajtók, CD- és DVD-ROM-olvasók, floppy diszkek, memóriakártyák és külső lemezek ide vannak mountolva.
/mnt
-
Csatolási pont az ideiglenesen csatolt fájlrendszerekhez.
/opt
-
Alkalmazások szoftvercsomagjai.
/root
-
A szuperfelhasználó (root) home mappája.
/run
-
Futásidejű változó adatok.
/sbin
-
Rendszer binárisok.
/srv
-
A rendszer által kiszolgált adatok. Például a webszerver által kiszolgált oldalakat a következő cím alatt lehet tárolni:
/srv/www
. /tmp
-
Ideiglenes fájlok.
/usr
-
Csak olvasható felhasználói adatok, beleértve egyes másodlagos segédprogramok és alkalmazások által igényelt adatokat is.
/proc
-
Virtuális fájlrendszer, amely a futó folyamatokhoz kapcsolódó adatokat tartalmazza.
/var
-
A rendszer működése során írt változó adatok, beleértve a nyomtatási várólistát, a naplóadatokat, a postafiókokat, az ideiglenes fájlokat, a böngésző gyorsítótárát stb.
Ne feledjük, hogy néhány ilyen mappa, mint például az /etc
, /usr
és /var
, almappák egész hierarchiáját tartalmazza.
Ideiglenes fájlok
Az ideiglenes fájlok olyan fájlok, amelyeket a programok olyan adatok tárolására használnak, amelyekre csak rövid ideig van szükség. Ilyenek lehetnek a futó folyamatok adatai, az összeomlási naplók, az automatikus mentésből származó scratch fájlok, a fájlkonvertálás során használt köztes fájlok, a gyorsítótár-fájlok és hasonlók.
Az ideiglenes fájlok helye
A Filesystem Hierarchy Standard (FHS) 3.0 verziója meghatározza az ideiglenes fájlok szabványos helyeit a Linux rendszereken. Minden egyes helynek más a célja és a viselkedése, és ajánlott, hogy a fejlesztők kövessék az FHS által meghatározott konvenciókat, amikor ideiglenes adatokat írnak a lemezre.
/tmp
-
Az FHS szerint a programoknak nem szabad feltételezniük, hogy az ide írt fájlok megmaradnak a program invokálásai között. Az ajánlás szerint ezt a mappát a rendszer indításakor törölni kell (minden fájlt eltávolítani), de ez nem kötelező.
/var/tmp
-
Egy másik hely az ideiglenes fájloknak, de ezt a helyet nem szabad törölni a rendszer indításakor. Az itt tárolt fájlok általában az újraindítások után is megmaradnak.
/run
-
Ez a mappa tartalmazza a futó folyamatok által használt futásidejű változó adatokat, például a folyamatazonosító fájlokat (
.pid
). Azok a programok, amelyeknek egynél több futásidejű fájlra van szükségük, létrehozhatnak itt almappákat. Ezt a helyet a rendszer indításakor ki kell üríteni. Ennek a mappának a korábbi megfelelője a/var/run
mappa volt, és egyes rendszereken a/var/run
mappa szimbolikus hivatkozás lehet a/run
mappára.
Megjegyzendő, hogy semmi sem akadályozza meg, hogy egy program a rendszerben máshol is létrehozzon ideiglenes fájlokat, de jó gyakorlat, ha tiszteletben tartjuk az FHS által meghatározott konvenciókat.
Fájlok keresése
A Linux rendszerben lévő fájlok kereséséhez használhatjuk a find
parancsot. Ez egy nagyon hatékony eszköz, sok paraméterrel, amelyekkel a viselkedését és a kimenetet pontosan a saját igényeink szerint módosíthatjuk.
A find
-nek két argumentumra van szüksége: egy kiindulási pontra és arra, hogy mit keressen. Például, ha az aktuális mappában (és az almappákban) minden olyan fájlt meg akarunk keresni, amelynek a neve .jpg
-re végződik, akkor a következőt használhatjuk:
$ find . -name '*.jpg' ./pixel_3a_seethrough_1.jpg ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
Ez minden olyan fájlra illik, amelyiknek a nevének utolsó négy karaktere .jpg
, függetlenül attól, hogy mi áll előtte, mivel a *
a “bármi” joker. Nézzük meg azonban, mi történik, ha a minta végére egy másik *
kerül:
$ find . -name '*.jpg*' ./pixel_3a_seethrough_1.jpg ./Pentaro.jpg.zip ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
A (fentebb kiemelt) Pentaro.jpg.zip
fájl nem szerepelt az előző listában, mert bár a nevében szerepel a .jpg
, nem felelt meg a mintának, mivel utána további karakterek következtek. Az új minta jelentése “bármi .jpg
bármi”, tehát ennek már megfelel.
Tip
|
Ne feledjük, hogy a |
A *.jpg
kifejezést aposztrófok közé kell tenni, hogy a shell ne értelmezze magát a mintát. Próbáljuk ki nélkülük, és nézzük meg, mi történik.
Alapértelmezés szerint a find
a kezdőpontnál kezdődik, és végigmegy a talált almappákon (és azok almappáin). Ezt a viselkedést korlátozhatjuk a -maxdepth N
paraméterekkel, ahol N
a szintek maximális száma.
Ha csak az aktuális mappában szeretnénk keresni, használjuk a -maxdepth 1
parancsot. Tegyük fel, hogy a következő mappaszerkezetünk van:
directory ├── clients.txt ├── partners.txt -> clients.txt └── somedir ├── anotherdir └── clients.txt
Ha a somedir
mappában szeretnénk keresni, akkor a -maxdepth 2
-t kell használnia (az aktuális mappa +1 szinttel lejjebb). Az anotherdir
mappán belüli kereséshez a -maxdepth 3
-ra lenne szükség (az aktuális mappa +2 szinttel lejjebb). A -mindepth N
paraméter éppen ellenkezőleg működik, és csak legalább N
szinttel lejjebb lévő mappákban keres.
A -mount
paraméter használható annak elkerülésére, hogy a find
a csatlakoztatott fájlrendszereken belülre lemenjen. A -fstype
paraméterrel a keresést bizonyos fájlrendszer-típusokra is korlátozhatjuk. Így a find /mnt -fstype exfat -iname "*report*"
csak a /mnt
alá mountolt exFAT fájlrendszerekben keresne.
Attribútumok keresése
Az alábbi paraméterek segítségével kereshetünk bizonyos tulajdonságokkal rendelkező fájlokat, például olyanokat, amelyeket a felhasználó írhat, amelyek meghatározott jogosultságokkal rendelkeznek, vagy amelyek megadott méretűek:
-user USERNAME
-
USERNAME
felhasználó tulajdonában lévő fájlok. -group GROUPNAME
-
GROUPNAME
csoport tulajdonában lévő fájlok. -readable
-
Az aktuális felhasználó által olvasható fájlok.
-writable
-
Az aktuális felhasználó által írható fájlok.
-executable
-
Az aktuális felhasználó által futtatható fájlok. Mappák esetében minden olyan mappára vonatkozik, amelybe a felhasználó beléphet (
x
jogosultság). -perm NNNN
-
Minden olyan fájl, amely pontosan az
NNNN
jogosultsággal rendelkezik. Például a-perm 0664
minden olyan fájlra illik, amelyet a felhasználó és a csoport olvashat és írhat, és amelyet mindenki más is olvashat (vagyrw-rw-r--
).
Ha az NNNN
elé egy -
-t is beírunk, akkor olyan fájlokat kereshetünk, amelyeknek legalább a megadott jogosultsága van. Például a -perm -644
olyan fájlokat keres, amelyek legalább 644
(rw-r—r--
) jogosultsággal rendelkeznek. Ez magában foglalja a 664
(rw-rw-r--
) vagy akár a 775
(rwxrwx-r-x
) jogosultságú fájlokat is.
-empty
-
Üres fájlok és mappák.
-size N
-
Bármilyen
N
méretű fájl, ahol azN
alapértelmezés szerint 512 bájtos blokkok száma. AzN
más egységeket jelző utótagokat is fogad: azNc
bájtban, azNk
kibibájtban (KiB, 1024 bájt szorzata), azNM
mebibájtban (MiB, 1024 * 1024 szorzata), azNG
pedig gibibájtban (GiB, 1024 * 1024 * 1024 szorzata) számolja a méretet.
A relatív méretek kereséséhez ismét hozzáadhatjuk a +
vagy -
előtagokat (itt a nagyobb, mint és kisebb, mint). Például a -size -10M
minden 10 MiB-nál kisebb méretű fájlt megtalál.
Ha például olyan fájlokat szeretnénk keresni a home mappánkban, amelyek a név bármelyik részében a nagy- és kisbetűket figyelmen kívül hagyó report
mintát tartalmazzák, 0644
jogosultsággal rendelkeznek, 10 nappal ezelőtt érte el őket valaki, és legalább 1 Mib méretűek, akkor használhatjuk a következőt:
$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M
Keresés idő alapján
Az attribútumokra történő keresés mellett idő szerinti keresést is végezhetünk, így megtalálhatjuk azokat a fájlokat, amelyekhez egy adott időszakban hozzáfértek, amelyek attribútumai megváltoztak vagy amelyeket módosítottak. A paraméterek a következők:
-amin N
,-cmin N
,-mmin N
-
Ez olyan fájlokat fog keresni, amelyekhez hozzáfértek, amelyek attribútumai megváltoztak, illetve amelyeket
N
perccel ezelőtt módosítottak. -atime N
,-ctime N
,-mtime N
-
Ez olyan fájlokat fog keresni, amelyekhez hozzáfértek, amelyek attribútumai megváltoztak, illetve amelyeket
N*24
perccel ezelőtt módosítottak..
A -cmin N
és -ctime N
esetében bármilyen attribútumváltozás egyezést eredményez, beleértve a jogosultságok változását, a fájl olvasását vagy írását. Ez különösen hatékonnyá teszi ezeket a paramétereket, mivel gyakorlatilag bármilyen művelet, amely a fájlt érinti, egyezést vált ki.
A következő példa az aktuális mappában lévő minden olyan fájlnak megfelel, amelyet 24 óránál nem régebben módosítottak, és amely nagyobb, mint 100 MB:
$ find . -mtime -1 -size +100M
A locate
és az updatedb
használata
A locate
és az updatedb
olyan parancsok, amelyekkel gyorsan megkereshetünk egy adott mintának megfelelő fájlt egy Linux rendszeren. De a find
-al ellentétben a locate
nem a fájlrendszerben keresi meg a mintát: ehelyett az updatedb
parancs futtatásával létrehozott adatbázisban keresi meg. Ez nagyon gyors eredményt ad, de pontatlan lehet attól függően, hogy mikor frissítették utoljára az adatbázist.
A legegyszerűbb módja a locate
használatának, ha megadunk neki egy keresési mintát. Például, ha minden JPEG képet meg akarunk találni, akkor használjuk a locate jpg
parancsot. A találatok listája elég hosszú lehet, de így kell kinéznie:
$ locate jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Ha a minta jpg
, a locate
mindent kilistáz, ami tartalmazza ezt a mintát, függetlenül attól, hogy mi van előtte vagy utána. Erre példa a fenti felsorolásban szereplő jpg_specs.doc
fájl: tartalmazza a mintát, de a kiterjesztése nem jpg
.
Tip
|
Ne feledjük, hogy a |
Alapértelmezés szerint a minta nagy- és kisbetű érzékeny. Ez azt jelenti, hogy a .JPG
fájlokat tartalmazó fájlok nem jelennek meg, mivel a minta kisbetűs. Ennek elkerülése érdekében adjuk meg az -i
paramétert a locate
-nek. Megismételjük az előző példánkat:
$ locate -i .jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg
Vegyük észre, hogy a fenti félkövérrel szedett Mate1_old.JPG
fájl nem volt jelen az előző listában!
Több mintát is átadhatunk a locate
-nek, csak szóközzel kell elválasztani őket. Az alábbi példa a zip
és jpg
mintáknak megfelelő fájlokat keresné meg a nagy- és kisbetűket figyelmen kívül hagyva:
$ locate -i zip jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/OPENMSXPIHAT.zip /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/gbs-control-master.zip /home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Ha több mintát használunk, beállíthatjuk, hogy a locate csak azokat a fájlokat listázza, amelyek mindegyiknek megfelelnek. Ezt az -A
kapcsolóval tehetjük meg. A következő példa minden olyan fájlt megmutat, amely megfelel a .jpg
és a .zip
mintának:
$ locate -A .jpg .zip /home/carol/Downloads/Pentaro.jpg.zip
Ha egy adott mintának megfelelő fájlok számát szeretnénk megszámolni ahelyett, hogy a teljes elérési útjukat listáztatnánk, használhatjuk a -c
kapcsolót. Például a rendszerben lévő .jpg
fájlok megszámlálásához:
$ locate -c .jpg 1174
A locate
egyik problémája, hogy csak az updatedb
által generált adatbázisban (a /var/lib/mlocate.db
állományban) található bejegyzéseket mutatja meg. Ha az adatbázis elavult, a kimenet olyan fájlokat mutathat, amelyeket az utolsó frissítés óta töröltek. Ennek elkerülésére az -e
paraméter hozzáadása az egyik megoldás, amely ellenőrzi, hogy a fájl még létezik-e, mielőtt megjelenítené a kimeneten.
Természetesen ez nem oldja meg azt a problémát, hogy az utolsó adatbázis-frissítés után létrehozott fájlok nem jelennek meg. Ehhez frissíteni kell az adatbázist az updatedb
paranccsal. Hogy ez mennyi ideig fog tartani, az a lemezen lévő fájlok mennyiségétől függ.
Az updatedb
működésének kontrollálása
Az updatedb
viselkedését az /etc/updatedb.conf
fájlban lehet szabályozni. Ez egy szöveges fájl, ahol minden sor egy-egy változót vezérel. Az üres tetszőket figyelmen kívül hagyjuk, és a #
karakterrel kezdődő sorokat kommentárként kezeljük.
PRUNEFS=
-
Az
updatedb
nem vizsgálja az e paraméter után megadott fájlrendszertípusokat. A típusok listáját szóközzel kell elválasztani, és maguk a típusok nem érzékenyek a nagy- és kisbetűkre, tehát azNFS
és aznfs
ugyanaz. PRUNENAMES=
-
Ez egy szóközzel elválasztott lista azokról a mappákról, amelyeket az
updatedb
nem vizsgálhat. PRUNEPATHS=
-
Azoknak az elérési utaknak a listája, amelyeket az
updatedb
figyelmen kívül hagy. Az elérési utak neveit szóközzel kell elválasztani, és ugyanúgy kell megadni, ahogyan azupdatedb
megjelenítené őket (például/var/spool /media
) PRUNE_BIND_MOUNTS=
-
Ez egy egyszerű
yes
vagyno
változó. Hayes
, a bind mounts (azok a mappák, amelyek amount --bind
paranccsal máshová vannak csatolva) figyelmen kívül maradnak.
Binárisok, man oldalak és forráskód keresése
A which
egy nagyon hasznos parancs, amely megmutatja egy futtatható fájl teljes elérési útvonalát. Ha például a bash
futtatható állományát akarjuk megtalálni, használhatjuk a következőt:
$ which bash /usr/bin/bash
Az -a
kapcsoló hozzáadásával a parancs az összes olyan elérési utat megmutatja, amely megfelel a végrehajtható fájlnak. Figyeljük meg a különbséget:
$ which mkfs.ext3 /usr/sbin/mkfs.ext3 $ which -a mkfs.ext3 /usr/sbin/mkfs.ext3 /sbin/mkfs.ext3
Tip
|
A |
A type
egy hasonló parancs, amely információkat mutat egy bináris állományról, beleértve annak helyét és típusát. Csak használjuk a type
parancsot a parancs neve után:
$ type locate locate is /usr/bin/locate
Az -a
paraméter ugyanúgy működik, mint a which
paraméter, az összes olyan elérési utat mutatja, amely megfelel a futtatható fájlnak. Például így:
$ type -a locate locate is /usr/bin/locate locate is /bin/locate
A -t
paraméter pedig megmutatja a parancs fájltípusát, amely lehet alias
, keyword
, function
, builtin
vagy file
. Például:
$ type -t locate file $ type -t ll alias $ type -t type type is a built-in shell command
A whereis
parancs sokoldalúbb, és a binárisok mellett arra is használható, hogy megmutassa a man oldalak vagy akár a program forráskódjának helyét (ha a rendszerben elérhető). Csak írjuk be a whereis
parancsot, majd a bináris nevét:
$ whereis locate locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
A fenti eredmények tartalmazzák a bináris állományokat (/usr/bin/locate
) és a tömörített man oldalakt (/usr/share/man/man1/locate.1.gz
).
Az eredményeket gyorsan szűrhetjük az olyan parancssori kapcsolókkal, mint a -b
, amely csak a bináris állományokra, az -m
, amely csak a man oldalakra, vagy az -s
, amely csak a forráskódra korlátozza a keresést. A fenti példát megismételve a következőket kapjuk:
$ whereis -b locate locate: /usr/bin/locate $ whereis -m locate locate: /usr/share/man/man1/locate.1.gz
Gyakorló feladatok
-
Képzeljük el, hogy egy programnak egyszer használatos ideiglenes fájlt kell létrehoznia, amelyre a program bezárása után soha többé nem lesz szükség. Mi lenne az a mappa, ahol ezt a fájlt létrehozhatnánk?
-
Melyik az az ideiglenes mappa, amelyet törölni kell a rendszerindítás során?
-
A
find
használatával keressünk csak az aktuális mappában a felhasználó által írható, az elmúlt 10 napban módosított és 4 GiB-nál nagyobb méretű fájlokat! -
A
locate
segítségével keresseünk meg minden olyan fájlt, amelynek a nevében szerepel areport
és azupdated
,update
vagyupdating
mintázat! -
Hogyan lehet megtalálni, hogy hol van az
ifconfig
man oldala tárolva? -
Milyen változót kell hozzáadni az
/etc/updatedb.conf'-hoz, hogy az `updatedb
figyelmen kívül hagyja azntfs
fájlrendszereket? -
A rendszergazda egy belső lemezt (
/dev/sdc1
) szeretne csatolni. Az FHS szerint melyik mappa alá kell ezt a lemezt felcsatolni?
Gondolkodtató feladatok
-
A
locate
használatakor az eredmények azupdatedb
által generált adatbázisból származnak. Ez az adatbázis azonban elavult lehet, ami miatt alocate
olyan fájlokat mutat, amelyek már nem léteznek. Hogyan lehet elérni, hogy alocate
csak létező fájlokat jelenítsen meg? -
Keressünk meg minden olyan fájlt az aktuális mappában vagy legfeljebb 2 szinttel lejjebb lévő almappákban, kivéve a csatlakoztatott fájlrendszereket, amelyek nevében szerepel a
Status
vagystatute
minta! -
A keresést az
ext4
fájlrendszerekre korlátozva keressünk meg minden olyan fájlt az/mnt
alatt, amely legalább a csoport számára futtatási jogosultsággal rendelkezik, az aktuális felhasználó számára olvasható, és amelynek bármely attribútuma megváltozott az elmúlt 2 órában! -
Keressük meg azokat a fájlokat, amelyek 30 napnál korábban lettek létrehozva, üresek és amelyek legalább két szinttel lejjebb vannak az aktuális mappától!
-
Tekintsük úgy, hogy a
carol
ésjohn
felhasználók azmkt
csoport tagjai! Keressük megjohn
home könyvtárában azokat a fájlokat, amelyekcarol
számára is olvashatók!
Összefoglalás
Ebben a leckében megismerkedtünk a Linuxon lévő fájlrendszer alapvető szervezésével az FHS szerint, valamint azzal, hogyan lehet bináris állományokat és fájlokat találni, akár név, akár attribútumok alapján. A következő parancsokat tárgyaltuk ebben a leckében:
find
-
Sokoldalú parancs fájlok és mappák keresésére, különböző keresési kritériumok alapján.
locate
-
Egy segédprogram, amely egy helyi adatbázist használ, amely a helyileg tárolt fájlok helyét tartalmazza.
updatedb
-
A
locate
parancs által használt helyi adatbázis frissítése. which
-
Megjeleníti egy futtatható fájl teljes elérési útvonalát.
whereis
-
Megjeleníti a man oldalak, bináris programok és forráskódok helyét a rendszerben.
type
-
Megjeleníti egy bináris állomány helyét és az alkalmazás típusát (például egy telepített program, egy beépített Bash program és így tovább).
Válaszok a gyakorló feladatokra
-
Képzeljük el, hogy egy programnak egyszer használatos ideiglenes fájlt kell létrehoznia, amelyre a program bezárása után soha többé nem lesz szükség. Mi lenne az a mappa, ahol ezt a fájlt létrehozhatnánk?
Mivel a program futása után nem érdekel minket a fájl, a helyes mappa a
/tmp
. -
Melyik az az ideiglenes mappa, amelyet törölni kell a rendszerindítás során?
Ez a mappa a
/run
, vagy néhány rendszer esetén/var/run
. -
A
find
használatával keressünk csak az aktuális mappában a felhasználó által írható, az elmúlt 10 napban módosított és 4 GiB-nál nagyobb méretű fájlokat!Ehhez a
-writable
,-mtime
és-size
paraméterek kellenek:find . -writable -mtime -10 -size +4G
-
A
locate
segítségével keresseünk meg minden olyan fájlt, amelynek a nevében szerepel areport
és azupdated
,update
vagyupdating
mintázat!Mivel a
locate
esetén minden mintának egyeznie kell, használjuk az-A
kapcsolót:locate -A "report" "updat"
-
Hogyan lehet megtalálni, hogy hol van az
ifconfig
man oldala tárolva?Használjuk a
whereis
-m
paraméterét:whereis -m ifconfig
-
Milyen változót kell hozzáadni az
/etc/updatedb.conf'-hoz, hogy az `updatedb
figyelmen kívül hagyja azntfs
fájlrendszereket?A változó a
PRUNEFS=
, majd utána a fájlrendszer típusa:PRUNEFS=ntfs
-
A rendszergazda egy belső lemezt (
/dev/sdc1
) szeretne csatolni. Az FHS szerint melyik mappa alá kell ezt a lemezt felcsatolni?A gyakorlatban a lemez bárhová felcsatolható. Az FHS azonban azt ajánlja, hogy az ideiglenes csatolásokat az
/mnt
alatt végezzük.
Válaszok a gondolkodtató feladatokra
-
A
locate
használatakor az eredmények azupdatedb
által generált adatbázisból származnak. Ez az adatbázis azonban elavult lehet, ami miatt alocate
olyan fájlokat mutat, amelyek már nem léteznek. Hogyan lehet elérni, hogy alocate
csak létező fájlokat jelenítsen meg?Adjuk hozzá az
-e
paramétert a locate-hez, mint:locate -e PATTERN
. -
Keressünk meg minden olyan fájlt az aktuális mappában vagy legfeljebb 2 szinttel lejjebb lévő almappákban, kivéve a csatlakoztatott fájlrendszereket, amelyek nevében szerepel a
Status
vagystatute
minta!Ne feledjük, hogy a
-maxdepth
esetében figyelembe kell venni az aktuális mappát is, tehát három szintet akarunk (az aktuális, plusz 2 szinttel lejjebb):find . -maxdepth 3 -mount -iname "*statu*"
-
A keresést az
ext4
fájlrendszerekre korlátozva keressünk meg minden olyan fájlt az/mnt
alatt, amely legalább a csoport számára futtatási jogosultsággal rendelkezik, az aktuális felhasználó számára olvasható, és amelynek bármely attribútuma megváltozott az elmúlt 2 órában!A
mount
paraméter-fstype
paraméterének használatával a keresést bizonyos fájlrendszer-típusokra korlátozhatjuk. Az aktuális felhasználó által olvasható fájlnak legalább4
-nek kell lennie a jogosultságok első számjegyében, a csoport által futtathatónak pedig legalább1
-nek a második számjegyében. Mivel mások jogosultságai nem érdekelnek minket, a harmadik számjegyre0
-t használhatunk. A-cmin N
használatával szűrhetjük a legutóbbi attribútumváltozásokat, ne feledjük, hogy az N értéket percekben adjuk meg. Tehát:find /mnt -fstype ext4 -perm -410 -cmin -120
-
Keressük meg azokat a fájlokat, amelyek 30 napnál korábban lettek létrehozva, üresek és amelyek legalább két szinttel lejjebb vannak az aktuális mappától!
A
-mindepth N
paraméterrel a keresést legalábbN
szinttel lejjebb korlátozhatjuk, de ne feledjük, hogy az aktuális mappát is bele kell számolnunk a számolásba. Az-empty
az üres fájlok, az-mtime N
pedig a módosítási idő kereséséhez használható. Tehát:find . -empty -mtime +30 -mindepth 3
-
Tekintsük úgy, hogy a
carol
ésjohn
felhasználók azmkt
csoport tagjai! Keressük megjohn
home könyvtárában azokat a fájlokat, amelyekcarol
számára is olvashatók!Tekintettel arra, hogy ezek ugyanannak a csoportnak a tagjai, legalább egy
r
(4
) kell a csoportjogosultságokhoz, és nem törődünk másokkal. Tehát:find /home/john -perm -040