11. Kısım - Bir şeyler bulmak… #
GİRİŞ #
Bugün, dosyaları ve içerdikleri metinleri hızlı ve verimli bir şekilde nasıl bulacağınızı inceleyeceğiz.
Bir dosyanın ya da ayarın var olduğunu bilmek, ancak bulamamak çok sinir bozucu olabilir! Bugünkü komutlara hakim olarak sistemlerinizi yönetirken çok daha özgüvenli olacaksınız.
Bugün kullanacağımız faydalı araçlar:
locate
find
grep
which
BUGÜNKÜ GÖREVLERİNİZ #
- “Permission” kelimesini içeren tüm dosyaları bulun.
TALİMATLAR #
locate #
access.log
adlı bir dosya arıyorsanız, en hızlı yöntem locate
komutunu şu şekilde kullanmaktır:
$ locate access.log
/var/log/apache2/access.log
/var/log/apache2/access.log.1
/var/log/apache2/access.log.2.gz
(locate
yüklü değilse sudo apt install mlocate
komutuyla yükleyin.)
Gördüğünüz gibi, varsayılan olarak aramayı "*something*" biçiminde yapar. locate
komutu çok hızlıdır çünkü bir dizini tarar. Ancak, bu dizin güncel değilse ya da eksikse aradığınız dosya bulunamayabilir. Dizini manuel olarak güncellemek için:
sudo updatedb
find #
find
komutu, bir dizin yapısı içinde belirli kriterlere uyan dosyaları arar. Bu kriterler dosya adı, boyut ya da son değiştirilme tarihi gibi özellikler olabilir. Örneğin:
find /var -name access.log
find /home -mtime -3
İlk komut “access.log” adında dosyaları arar, ikincisi ise /home
dizininde son 3 gün içinde değiştirilmiş dosyaları arar.
find
komutu, dizini taradığı için locate
kadar hızlı değildir ve aramayı yapan kullanıcının izinleri nedeniyle bazı dizinlerde “permission denied” (izin reddedildi) hataları verebilir. Tüm sistemi taramak için sudo
kullanabilirsiniz:
sudo find /var -name access.log 2>&1 | grep -vi "Permission denied"
Bu sadece find
komutunun temel bir örneğidir. Daha fazla bilgi için KAYNAKLAR bölümündeki makalelere göz atın ve olabildiğince çok örnek üzerinde çalışın.
grep -R #
grep
komutunu belirli bir dosya yerine tüm bir dizin yapısı içinde çalıştırabilir ve rekürsif olarak (alt dizinler dahil) arama yapabilirsiniz. Örneğin, “PermitRootLogin” parametresini /etc
dizininde arayın:
grep -R -i "PermitRootLogin" /etc/*
Bu komut, büyük-küçük harf duyarsız arama yapar (-i
ile) ve dosyaları tararken sembolik bağlantıları da takip eder (-R
ile).
Eğer /var/log/access.log.2.gz
gibi sıkıştırılmış günlük dosyalarınız varsa, bunları zgrep
komutuyla arayabilirsiniz.
which #
Bazen bir komutun nereden çalıştırıldığını bilmek faydalıdır. Örneğin, nano
komutunu çalıştırdığınızda, hangi dizinden yüklendiğini görmek için:
which nano
Benzer şekilde, grep
, vi
, service
ve reboot
için de deneyebilirsiniz. Komutların genellikle bin
adlı alt klasörlerde bulunduğunu fark edeceksiniz.
GENİŞLETME #
find
komutunun -exec
özelliği son derece güçlüdür. Ancak “bir şeyler bulmak” bundan çok daha fazlasını içerir! Bir dosyanın içeriğini bulmanın yanı sıra, kullanımını da lsof
ve fuser
gibi komutlarla takip edebilirsiniz.
Daha fazla örnek denemek için KAYNAKLAR bölümündeki bağlantılara göz atın.
KAYNAKLAR #
- 25 find komut örneği…
- GNU find kullanımı için 10 ipucu
- grep için beş basit tarif
- lsof komutunu kullanarak Linux sorunlarını giderme
- fuser komutu hakkında bilgi edinin
HATA GİDERME VE “MUTSUZ” BİR SUNUCUYU MUTLU ETME #
Öğrendiklerinizi SadServers.com adresindeki bazı zorluklarda uygulayın:
Bazı haklar saklıdır. Lisans koşullarını buradan inceleyin.