30

May 12

Sistemde aradığını şak diye bulmak : Locate komutu

Birazcık elini komut satırına bulaştırmış kullanıcıların en çok ihtiyacı olan şey aradığı dosyanın nerede olduğunu bulmaktır. Komut satırında en elimizin altında olan komutlar find ve locate komutlarıdır. Örneğin samba paylaşımlarını ayarlamak için kullanılan smb.conf dosyasının nerede olduğunu kolayca bulabilmek için find veya locate komutu ile hızlıca dosyanın hangi dizin altında olduğunu bulabiliriz. Sizin alışkanlığınız nedir bilemiyorum ancak find ve locate komutu aynı işlevi yerine getirse de locate komutunun find’dan daha hızlı çalıştığı bir gerçektir.

Bu durum locate’in çalışma mantığının find’dan biraz daha değişik olmasından kaynaklanmaktadır. Find komutu ile aranan dosya bilinen tüm aygıtlar içerisinde taranarak bulunmaya çalışılmaktadır ve bu süreç biraz yavaştır. Locate komutu ise çok daha hızlı çalışmakta ve kullanıcıya cevap verebilmektedir. Locate komutu aranan dosyayı aygıtlarda aramak yerine arka planda çalıştırdığı veritabanı üzerinden sorgulamakta ve sonuçlarını göstermektedir. Bu veritabanı sistemdeki tüm dosyaların ve dosya yollarının kaydının tutulduğu bir yapıdadır. Locate veritabanı /var/lib/mlocate/dizini altında mlocate.db dosyasıdır. Locate’in kullandığı bu mlocate.db veritabanını güncel tutan ise updatedb aracıdır. Locate komutu çıktısından en güncel ve doğru bilgiyi/sonucu alabilmek için sisteminiz düzenli olarak updatedb aracını kullanmalı yani bir anlamda veritabanını düzenli güncellemelidir. Bir çok GNU/Linux dağıtımında updatedb işlemi otomatik olarak yapılmaktadır ancak biz kendi ihtiyacımız doğrultusunda updatedb işlemi yapmak istiyorsak /etc/ klasörü altında bulunan updatedb.conf dosyasında değişiklikler yaparak updatedb çalışma rutinini ve diğer parametrelerini değiştirebiliriz.

Şu anda bir locate veritabanı güncellemesini el ile yapmak istersek sistemde root olmalı ve updatedb komutunu çalıştırmalıyız, bu komut sistemi tarayacak ve güncel halini veritabanına yazacaktır.

Locate komutu ve çeşitli parametreler ile kullanımı ;

sistemimizde httpd.conf dosyasının nerelerde bulunduğuna bakalım ;

ekin@ekin-HP-Mini-5102 /home $ locate httpd.conf
/etc/apache2/httpd.conf
/etc/javascript-common/lighttpd.conf
-0 parametresi ile tüm sonuçları tek satırda göster ;

ekin@ekin-HP-Mini-5102 /home $ locate -0 httpd.conf
/etc/apache2/httpd.conf/etc/javascript-common/lighttpd.conf

-c parametresi ile sistemde kaç adet httpd.conf dosyası olduğunu bulalım ;

ekin@ekin-HP-Mini-5102 /home $ locate -c httpd.conf
2

-l parametresi ile gelen sonuçlardan sadece 5 adedinin gösterilmesini sağlayalım ;

ekin@ekin-HP-Mini-5102 /home $ locate -l 5 passwd
/etc/passwd
/etc/passwd-
/etc/cron.daily/passwd
/etc/pam.d/chpasswd
/etc/pam.d/passwd

Son olarak hem dosyanın fiziksel varlığını kontrol ederek hemde Locate veritabanından arama işlemini yapalım. Bu duruma neden ihtiyacımız olduğunu şu şekilde açıklayabilirim ; sistemimizden bir dosyayı sildiğimizde locate veritabanı bu silme işlemini bilemeyecek ve updatedb işlemi yapılıncaya kadar Locate veritabanındaki kayıtlar bu dosyanın yerinde olduğunu bildirecektir.

Dosyayı sildikten sonra updatedb ile veritabanını güncellersek o dosyanın silinmiş olduğunu anlayacaktır. İşte bu gibi bir durum olasılığı var ise dosyanın hem fiziksel varlığını hem veritabanı kayıtlarının olup olmadığını kontrol etmek için -e parametresini kullanacağız ;

ekin@ekin-HP-Mini-5102 ~ $ locate -e test.txt
/home/ekin/Desktop/test/test.txt
/usr/share/doc/screen/terminfo/test.txt.gz
/usr/share/doc/x11proto-xext-dev/xtest.txt.gz

aradığınızı şak diye bulabilmeniz dileğiyle :)

 

4 Yorum

  1. Adil İlhan diyor ki:

    Sistemde aradığını “şak” diye bulmak için find komutu da işinizi görebilir. Bazı durumlarda find hayat kurtarıcı olabiliyor. Örnek kullanım: find / -name test.txt

    kök dizininden başlayıp tüm bilgisayardaki dosyaların adında test.txt yi arar..

  2. yetis diyor ki:

    Faydalı bir yazı olmuş.

  3. tülay diyor ki:

    lütfen yardım edin :( ara birim kipini belirtmek için -i komut satırını nasıl belirteceğim daha sonra ardından -UI tanıtıcı kipini nasıl gireceğim ?

    1. Ekin Alpagut Ekin Alpagut diyor ki:

      -i parametresi ignorance için kullanılıyor, -UI’yi anlamadım?, tam olarak ne yapmak istiyorsunuz? Bu arada komut satırına locate –help yazarak kullanabileceğiniz tüm parametreleri görebilirsiniz.

Bir Cevap Yazın

Get Adobe Flash player