Vyhledávání


OBSAH


Vyhledávání
Find
Locate
Lsof
Fuser
Whereis, Whitch




tady je moc pěknej článek tohle jsem zařadil trochu podrobněji,protože mnoha lidem to dělá problémy(včetně mě :-)) )

Find


find [přepínače] [cesty] [výraz]
find . –print vyhledá vse v aktualním adresáři a ukáže na obrazovce
find *sex* –print vyhledá soubory, které obsahují v názvu "sex" v aktualním adresáři a ukáže na obrazovce

POZOR find sex –print vyhledá pouze slovo "sex" v aktualním adresáři a ukáže na obrazovce
find . -name Nejaky_soubor -print vyhledá soubor Nejaky_soubor v aktualním adresáři a ukáže na obrazovce
find . -atime +8 -size +10240 –print vyhledá soubory starší 8 dní,které se neotvírali a jsou větší jak 10MB

parametry příkazu (přepínače)
-amin +5m soubor byl otevřen před 5 minutami.
-atime +5d soubor byl otevřen před 5 dny.
-anewer soubor soubor byl otevřen dříve než uvedený soubor
-cmin n i-uzel souboru byl změněn před n minutami.
-ctime n i-uzel souboru byl změněn(vytvořen) před n dny.
-cnewer soubor i-uzel souboru byl změněn dříve než uvedený soubor
-mmin n soubor byl změněn před n minutami.
-mtime n soubor byl změněn před n dny.
-empty soubor (platí i pro adresář) je prázdný
-perm práva soubor má nastavena daná přístupová práva
-uid uid soubor má uid
-gid gid soubor má gid
-group skupina soubor patří skupině
-user uživatel soubor patří uživateli
-regex vzor jméno souboru s cestou vyhovuje vzoru
-type typ testuje soubor na zadaný typ
f - běžný soubor
b - blokové zařízení
c - znakové zařízení
d - adresář
p - roura
l - symbolický odkaz
s - socket
-size n[jednotka] soubor má danou velikost



pro časové filtry se používají tyto zkratky >
-dmínus=mladší než den (d)
+dplus=starší než den (d)
d bez znaménka=staré přesně den (d)
w zkratka pro týden
d zkratka pro den
h zkratka pro hodinu
mzkratka pro minutu
szkratka pro vteřínu

stejně platí použití znaménem pro filtry velikostí souborů



proved toto (výrazy)
-print tiskne jména vyhovujících souborů, tato akce je nastavená implicitně
-fprint soubor tiskne jména vyhovujících souborů do souboru
-printf formát formátování výstupu
-fprintf soubor formát stejné jako -printf, ale přesměruje výstup do souboru
-exec příkaz provede příkaz, přičemž {} se expanduje do názvu zpracovávaného souboru
-ok příkaz stejně jako -exec, ale vyžádá si potvrzení akce
-ls výpis informací o souboru
-print0 tiskne jména souborů oddělená znakem NUL, což je výhodné v kombinaci s příkazem xargs -0
-quit konec vykonávání príkazu


smazání souborů starších 10 dní
find /tmp/ -ctime +10 -exec rm -f {} \;
POZOR-při použití akce exec, je třeba ukončit příkaz středníkem a před shellem jej ochránit obráceným lomítkem \; nebo uvozovkami ";". Do závorek {} se vloží cesta nalezených souborů

jiné rychlejší řešení stejného find /tmp -ctime +10 -print0 |xargs rm -f
tento příkaz vyhledá soubory ve /var/virusmails/,které začínají slovem banned nebo spam a jsou starší 90 dní , ty pak následně smaže
find /var/virusmails/ -name "[banned spam]*" -ctime +90 -print | xargs rm -f
POZOR- pokud se používají regulární výrazy je třeba hledaný výraz zamknout do uvozovek, jinak jej expanduje již shell


Locate


locate nejaky_soubor


přepínače
-d databáze použije se uvedená databáze namísto implicitní
-i ignoruje velikost písmen
-c vypisuje pouze počet výsledků
-S vypisuje statistiky
-r, --regex vzor se vyhodnocuje jako regulární výraz



Lsof


Vyhledává otevřené soubory.Hodí se při umountu disku pokud přitom nevíte, který proces jej má uzamčený.
nainstalujeme příkazem
cd /usr/ports/sysutils/lsof
make all install

-a spojování podmínek
-p výpis podle PIDu
-u výpis podle uživatele
-c výraz vypíše soubory které začínají na výraz
-i vypíše otevřená připojení
+D vypíše i obsahy podadresářů


Příklady

vypsat veškerá IP spojení
lsof | grep IPv

který uživatel má co otevřené
lsof -u votruba
vypíše sokety využívající port 80(http)
lsof -i:80

vypíše soubory otevřené na svazku
/dev/ad0s2d

vypíše soubory otevřené jardou a sdružené s procesy vi
lsof -u jarda -ac vi



Fuser


umí identifikovat procesy, které mají otevřené soubory.
nainstalujeme příkazem
cd /usr/ports/sysutils/fuser
make all install

-k kill - ukončit proces, který přistupuje k určenému souboru
-i před ukončením procesu se zeptat
-m mounted FS - namountovaný souborový systém
-w soubory jsou otevřeny pro zápis
-u soubory jsou přiřazeny uživateli


Příklady

ukončit všechny všechny procesy, které mají otevřené soubory na svazku /mnt/cdrom
fuser -km /mnt/cdrom




Where


vyhledá kde je program mc
whereis mc

Whitch



Kde je program
which mc

Počet přístupů na stránky 1