5. Kısım - Konsol
Önceki Sıkça Sorulan Sorular Sonraki
5. Kısım - Konsol
5.1. top ile baktığımda her zaman belleğin tamamına yakınının kullanıldığını görüyorum. Bunun nedeni nedir?
5.2. Konsoldaki ekran koruyucusunun süresini nasıl ayarlarım?
5.3. ls ile sadece dizinleri nasıl listelerim?
5.4. Bulunduğum dizinde kaç tane altdizin olduğunu nasil öğrenirim?
5.5. Bir dosyanın nerede olduğunu nasıl bulurum?
5.6. İçinde belirli bir kelime geçen dosyaları nasıl bulurum?
5.7. CVS ağacından sadece "tr.po" dosyalarını nasıl ayıklayıp paketleyebilirim?
5.8. Nasıl tar dosyası oluşturabilirim?
5.9. tar ile nasıl yedek alırım?
5.10. dump ile nasıl yedek alırım?
5.11. Bir .bz2 dosyasını nasıl açarım?
5.12. Yanlışlıkla ikilik bir dosyayı cat ile ekrana yazdırdım. Konsol kullanılmaz hale geldi. Ne yapmalıyım?
5.13. Bir önceki dizine nasıl dönerim? Bir üst dizine nasıl çıkarım?
5.14. Bir dosyayı nasıl sıkıştırabilirim?
5.15. Bir dosyanın türünü nasıl öğrenebilirim?
5.16. Bir dizinin ne kadar yer kapladığını nasıl öğrenirim?
5.17. Sabit disklerimin ne kadarını kullandığımı nasıl öğrenirim?
5.18. Ne kadar bellek kullanıldığını nasıl öğrenirim?
5.19. Bir dosyayı satır sayısına veya dosya boyuna göre nasıl bölerim?
5.20. Bir bash betiği ile sistemin tarih-saat bilgilerini nasıl alırım?
5.21. Bulunduğum dizindeki programları neden çalıştıramıyorum?
5.22. Bulunduğumuz dizindeki programları çalıştırmak için ./ dizininin PATH'a eklenmesinin güvenlik açığına neden olduğunu söylediniz. Bahsedilen güvenlik sakıncası nedir?
5.23. Linux açıldığında NumLock tuşunun otomatik olarak etkin olmasını nasıl sağlarım?
5.24. Kullandığım Linux çekirdeğinin sürümünü ve makinanın adını nasıl öğrenebilirim?
5.25. Linux'ta silinen dosyalar nasıl geri alınabiliyor? (undelete)
5.26. Linux açılırken ekrana çıkanları daha sonra nasıl görebilirim?
5.27. Sistem kaynaklarını nasıl görüntülerim?
5.28. Slackware dağıtımı için kaynak kodundan derlemek dışında bir çözüm yok mu?
5.29. Windows'dan telnet veya ssh ile baglandığımda işlev tuşları çalışmıyor. Mesela mc'nin menülerine ulaşamıyorum. Ne yapmalıyım?
5.30. Bir rpm paketini rpm -Uvf ile güncellemek istediğimde "error: failed dependencies" şeklinde bir hata veriyor. Sorun nedir?
5.31. Linux altında CD nasıl yazarım?
5.32. Internet'den çektiğimiz bir ISO dosyasını CD'ye nasıl yazabiliriz?
5.33. CD yazmak için bilgileri nereden bulabilirim?
5.34. CD yazmak istediğimde cdrecord programı SCSI arabirimi kullanmadığım halde sürekli olarak 'Cannot open SCSI driver' hatası veriyor?
5.35. Takas alanım çalışmıyor? Sebebi ne olabilir?
5.36. "Unable to find swap-space signature" mesajı ne anlama geliyor?
5.37. LILO'yu kaldırmak istiyorum, nasıl yapabilirim?
5.38. Swap eklemek istiyorum ama diskimde yeni bir takas bölümü oluşturmak için boş yerim yok. Ne yapmalıyım?
5.39. Linux'ta login ekranınında çıkan mesajı nasıl değiştirebiliriz?
5.40. Linux neden bu kadar yavaş?
5.41. Eyvah! Linux root parolamı unuttum. Ne yapmalıyım?
5.42. /dev/hda2'de ntfs sistemi var. Bağlamaya çalıştığımda çekirdeğinin ntfs'i desteklemediğini yazıyor. Nasıl destek verebilirim?
5.43. "tar.gz dosyasını al, ./configure, make sonra da make install et çalışır." dediler, yapıyorum ama bazan olmuyor. Biraz daha bilgiye ihtiyacım var.
5.44. Konsol modundayken bazı servisleri açıp/kapamak icin gereken yöntem nedir?
5.45. Eposta günlük dosyalarını tail ile gözlüyorken, kullanıcıların pop loginlerini boşuna görmeyeyim dedim. Böyle birşeyi nasıl yapabilirim?

5.1. top ile baktığımda her zaman belleğin tamamına yakınının kullanıldığını görüyorum. Bunun nedeni nedir?
Yanıtlayan: M. Umut Atasever
Boş bellek tampon (buffer) ve arabellek (cache) olarak kullanılır. Eğer takas kullanımınız sıfır ise gerçek kullanılan bellek değerini
$ cat /proc/meminfo
çıktısındaki MemShared değişkeninde görebilirsiniz.
5.2. Konsoldaki ekran koruyucusunun süresini nasıl ayarlarım?
Yanıtlayan: M. Umut Atasever
Örneğin 15 dakikaya ayarlamak için
# /bin/setterm -blank 15
kullanabilirsiniz.
5.3. ls ile sadece dizinleri nasıl listelerim?
$ ls -l | grep "^d"
5.4. Bulunduğum dizinde kaç tane altdizin olduğunu nasil öğrenirim?
Yanıtlayan: M. Umut Atasever
$ ls -la |grep "^d" | wc -l
5.5. Bir dosyanın nerede olduğunu nasıl bulurum?
Yanıtlayan: M. Umut Atasever
$ find BaşlanacakDizin -name "DosyaAdı" -print
5.6. İçinde belirli bir kelime geçen dosyaları nasıl bulurum?
Yanıtlayan: M. Umut Atasever
find BaşlamaDizini -type f -printf "%p " | xargs egrep -i "ArananKelime" | less
Örneğin,
$ find /etc -type f -printf "%p " | xargs egrep -i "User" | less
komut dizisi /etc dizininden itibaren içinde "User" kelimesi geçen dosyaları listeler.
5.7. CVS ağacından sadece "tr.po" dosyalarını nasıl ayıklayıp paketleyebilirim?
Yanıtlayan: Görkem Çetin
$ tar -zcvf polar.tgz `find . -name "tr.po"`
5.8. Nasıl tar dosyası oluşturabilirim?
Yanıtlayan: M. Umut Atasever
.tar dosyası oluşturmak için:
$ tar -cvf dosyam.tar dosya-veya-dizin ...
.tar.gz dosyası oluşturmak için:
$ tar -czvf dosyam.tar dosya-veya-dizin ...
5.9. tar ile nasıl yedek alırım?
Yanıtlayan: Barış Şimşek
$ tar -b4096 -zcvf hedef kaynak
-b blok sayısını belirmenizi sağlar. Bu seçeneği kullanmazsanız geçerli olarak 1024 byte kullanılır. Bu değer eski tip yedekleme birimlerine göredir. 1024 byte ile yedekleme işleminiz çok yavaş olacaktır.
-z seçeneği sıkıştırmak içindir. İsterseniz kullanmayabilirsiniz. Yerden kazanmak için kullanışlıdır.
-c yedek oluşturur.
-v (verbose), yani ekrana ayrıntılı açıklama basar.
-f hedef çıktının yazılacağı dosya. Bu sizin yedekleme biriminizin /dev/ altındaki aygıt karşılığı olabileceği gibi yedek.tgz şeklinde bir dosya ismi de olabilir.
kaynak ise sıkıştırmak istediğiniz dizin ve/veya dosyaları belirtir. Aralarında boşluk bırakarak çok sayıda dizin ve/veya dosya belirtebilirsiniz.
5.10. dump ile nasıl yedek alırım?
Yanıtlayan: Barış Şimşek
dump ile bir dosya sisteminin yedeği şöyle alınır:
# dump -auc0 -f/dev/st0 /dev/hda1
Burada yedekleme ünitenizin /dev/rsa0 olduğunu varsaydım. Bu komut ile /dev/hda1 yani sabit diskinizin ilk bölümü yedeklenir.
5.11. Bir .bz2 dosyasını nasıl açarım?
Yanıtlayan: M. Umut Atasever
$ bzip2 -dv Dosyaadi.bz2
5.12. Yanlışlıkla ikilik bir dosyayı cat ile ekrana yazdırdım. Konsol kullanılmaz hale geldi. Ne yapmalıyım?
Yanıtlayan: M. Umut Atasever
Bunu düzeltmek için Control+v Escape+c kullanabilirsiniz.
Ekleme: Konsol kullanılamaz halde olsa bile ve siz birşey yazdığınızı görmeseniz bile yine de konsolda reset yazın. Eski haline dönecektir.
5.13. Bir önceki dizine nasıl dönerim? Bir üst dizine nasıl çıkarım?
Yanıtlayan: M. Umut Atasever
Bir önceki dizine cd -, bir üst dizine cd .. ile gidebilirdiniz.
5.14. Bir dosyayı nasıl sıkıştırabilirim?
Yanıtlayan: Alper Oğuz
Bunun için en kolay yol gzip kullanmaktır.
$ gzip -9 /dizin/dosya
ile dosya sıkıştırılabilir. -9 maksimum sıkıştırma uygulanması içindir. gzip sıkıştırılan dosyaların sonuna .gz ekler.
Bu yolla sıkıştırılmış bir dosyayı açmak için
$ gunzip /dizin/dosya
kullanılır. Dosya açılacak ve sonundaki .gz kaldırılacaktır.
5.15. Bir dosyanın türünü nasıl öğrenebilirim?
Yanıtlayan: Alper Oğuz
$ file dosya
5.16. Bir dizinin ne kadar yer kapladığını nasıl öğrenirim?
Yanıtlayan: M. Umut Atasever
$ du -s dizinadi
5.17. Sabit disklerimin ne kadarını kullandığımı nasıl öğrenirim?
Yanıtlayan: M. Umut Atasever
$ df -k
5.18. Ne kadar bellek kullanıldığını nasıl öğrenirim?
Yanıtlayan: M. Umut Atasever
free komutunu kullanabilirsiniz.
5.19. Bir dosyayı satır sayısına veya dosya boyuna göre nasıl bölerim?
Yanıtlayan: Alper Oğuz
Bunun için split komutu kullanılmaktadır. Belli bir satır sayısından sonra bölmek için -l, dosya boyuna göre bölmek için -b parametreleri kullanılır. Örnek vermek gerekirse:
$ split -l 100 dosya.txt yeni
Bu komut dosya.txt dosyasını 100'er satırlık parçalara böler ve yeniaa, yeniab, yeniac, ... şeklinde dosyalar oluşturur.
$ split -b 1440k dosya.txt yeni
Bu komut ise dosya.txt dosyasını 1.44 MB´lık parçalara böler ve yeniaa, yeniab, yeniac, ... şeklinde dosyalar oluşturur.
5.20. Bir bash betiği ile sistemin tarih-saat bilgilerini nasıl alırım?
Yanıtlayan: Alper Oğuz
Zaman bilgisi gerektiğinde aşağıdaki satırlar ile DDMMYY-hh:mm.ss biçeminde zaman bilgisi $tarih değişkenine yüklenebilir. Biçemi istediğiniz gibi değiştirebilirsiniz. Hata olursa tırnak işaretlerinde sorun olabilir.
#!/bin/bash

gun=`date +%d`
ay=`date +%m`
yil=`date +%y`
saat=`date +%H:%M.%S`
tarih=$gun$ay$yil-$saat
echo $tarih
Ayrıntılı bilgi için man date ya da date --help ile yardım alabilirsiniz.
5.21. Bulunduğum dizindeki programları neden çalıştıramıyorum?
Yanıtlayan: Murat Koç
Çünkü bulunduğunuz dizin ".", $PATH ortam değişkeninde güvenlik sebebiyle bulunmuyor. Bulunduğunuz dizindeki programları çalıştırmak için programim yerine ./programim kullanın. Bir başka yol ise export PATH=$PATH:. ile ./ dizinini $PATH ortam değişkeninize eklemektir.
5.22. Bulunduğumuz dizindeki programları çalıştırmak için ./ dizininin PATH'a eklenmesinin güvenlik açığına neden olduğunu söylediniz. Bahsedilen güvenlik sakıncası nedir?
Yanıtlayan: Murat Koç
Bulunduğunuz dizindeki programlar kullanıcı programları olup güvenilir olmayabilirler. Dolayısıyla çalıştırılmaları özellikle ./ söylenerek yapılır. Tabi kendinizden eminseniz PATH'e ekleyebilirsiniz. Ayrıca: export PATH=".":$PATH şeklinde bir tanımlama yapmak ciddi bir güvenlik açığı olabilir. Bunun yerine export PATH=$PATH:. şeklinde yapmak daha güvenli olacaktır.
Şundan dolayı; ilk tanımlamada bulunduğunuz dizin verilen komut için aranılan ilk dizin olacaktir. Yani siz örneğin ls komutunu verdiğiniz zaman ilk önce bulunduğunuz dizinde ls adlı bir dosya olup olmadığına bakılır. Bu durumda örneğin bir kullanıcı bulunduğu, yani kendi ev dizininde ls diye bir çalıştırılabilir dosya yaratabilir ve içine örneğin,
echo "acemi:0:0:.... " >>/etc/passwd
/bin/ls
gibi veya daha düzenli bir bash betiği yazarak kendisine acemi adında root haklarına sahip bir kullanıcı açılmasını sağlayabilir. Bunu sağlaması ise root'un o kullanıcının ev dizinine giderek ls komutunu vermesi ile olur. Böylece ilk örnekte "." PATH tanımlasının en başında olduğu için bulunulan yerdeki ls'e bakılır ve acemi kullanıcısı açılmış olur. Bundan dolayı "." gibi tanımlamaları aslında eklememek, PATH'e eklenecekse de en sona eklemek gerekir.
5.23. Linux açıldığında NumLock tuşunun otomatik olarak etkin olmasını nasıl sağlarım?
Yanıtlayan: M. Umut Atasever
/etc/rc.local dosyasının sonuna
for t in 1 2 3 4 5 6 7 8
do
  setleds +num < /dev/tty$t > /dev/null
done
eklemesini yapın.
5.24. Kullandığım Linux çekirdeğinin sürümünü ve makinanın adını nasıl öğrenebilirim?
Yanıtlayan: M. Umut Atasever
uname -a komutunu kullanabilirsiniz.
5.25. Linux'ta silinen dosyalar nasıl geri alınabiliyor? (undelete)
Yanıtlayan: Barış Şimşek
Midnight Commander'ın Command menüsünden ext2 dosya sisteminde silinen dosyaları geri alabilirsiniz.
Dosyayı geri kurtarmak için bir mekanizma yoktur. Ancak bunu yapabilmeniz mümkün. Değişik yollardan birkaçı: (Bunların hepsi olasılık)
Midnight Commander, dosya sistemi işlevlerini kullanarak (sadece ext2fs ve ext3fs için geçerli olmak üzere) silinen dosyayı geri kurtarabiliyor.
Bunun dışında doğrudan disk üzerinde grep ile arama yapabilirsiniz.
# grep -b "kayip yazilarim" /dev/hda
-B ve -C gibi parametreler kullanışlı olabilir.
5.26. Linux açılırken ekrana çıkanları daha sonra nasıl görebilirim?
Yanıtlayan: Mehmet Kızılsakal
dmesg ile görebilirsiniz.
5.27. Sistem kaynaklarını nasıl görüntülerim?
Yanıtlayan: Barış Şimşek
top komutu ile bellek ve takas alanınızın ne kadarının kullanıldığını, ne kadarının boş olduğunu, ayrıca süreçlerinizin ne kadar işlemci ve bellek kullandığını görebilirsiniz.
5.28. Slackware dağıtımı için kaynak kodundan derlemek dışında bir çözüm yok mu?
Yanıtlayan: Enver ALTIN
http://www.linuxpackages.net/ adresinde Slackware için derlenmiş .tgz paketleri bulabilirsiniz.
5.29. Windows'dan telnet veya ssh ile baglandığımda işlev tuşları çalışmıyor. Mesela mc'nin menülerine ulaşamıyorum. Ne yapmalıyım?
Yanıtlayan: M. Umut Atasever
İşlev tuşları yerine ESC tuşu ile birlikte rakamları kullananın. Örneğin:
F3 yerine ESC + 3,
F10 yerine ESC + 0
5.30. Bir rpm paketini rpm -Uvf ile güncellemek istediğimde "error: failed dependencies" şeklinde bir hata veriyor. Sorun nedir?
Yanıtlayan: Enver ALTIN
Kurmak istediğiniz rpm paketi diğer başka paketlere de ihtiyaç duyuyor. Bu paketle *birlikte* onları da kurmalısınız (gerekmedikçe -f kullanmayın).
5.31. Linux altında CD nasıl yazarım?
Yanıtlayan: Nilgün Belma Bugüner
Linux'da CD Yazımı belgesinde anlatılıyor.
5.32. Internet'den çektiğimiz bir ISO dosyasını CD'ye nasıl yazabiliriz?
Yanıtlayan: Nilgün Belma Bugüner
Linux'da CD Yazımı belgesinde anlatılıyor.
5.33. CD yazmak için bilgileri nereden bulabilirim?
Yanıtlayan: Nilgün Belma Bugüner
Linux'da CD Yazımı belgesine bakın.
5.34. CD yazmak istediğimde cdrecord programı SCSI arabirimi kullanmadığım halde sürekli olarak 'Cannot open SCSI driver' hatası veriyor?
Yanıtlayan: Osman Bayazit
Çekirdeğin IDE CD yazıcınızı SCSI olarak görmesi için çekirdeğe "SCSI Emulator" desteği vermeli ve /etc/lilo.conf dosyanıza aşağıdaki gibi bir tanım satırı eklemelisiniz:
label=linux yazan gruba, append="hdX=ide-scsi" eklemelisiniz. hdX'de X yerine CDRW'ın takılı olduğu ide portunu yazmalısınız.
5.35. Takas alanım çalışmıyor? Sebebi ne olabilir?
Yanıtlayan: Barış Şimşek
Linux'unuz açılırken ekranda
Adding Swap: 208804k swap-space (priority -1)
gibi bir satır görmeniz gerekir. Eğer görmüyorsanız takas alanınız sistem açılırken eklenmiyor demektir. Sisteme girdikten sonra:
# swapon -av
komutu ile takas alanı çalışır hale getirebilirsiniz. Her açılışta takas alanınızın da açılmasını istiyorsanız açılış betiklerinize (genelde /etc/rc.d dizini altındadırlar):
/dev/hda2 none swap sw
şeklinde bir satır ekleyin. Burada takas alanınızı /dev/hda2 olarak ayırdığınızı varsaydım.
5.36. "Unable to find swap-space signature" mesajı ne anlama geliyor?
Yanıtlayan: Barış Şimşek
Bu hatayı alıyorsanız mkswap komutunu çalıştırmamışsınız demektir. mkswap, mkfs gibi dosya sistemi (ama takas dosya sistemi) oluşturur. Ancak oluşturulan dosya sisteminin tipini swap yapar.
5.37. LILO'yu kaldırmak istiyorum, nasıl yapabilirim?
Yanıtlayan: Barış Şimşek
Linux altında
# lilo -u /dev/hda
Windows/DOS altında
C:\fdisk /mbr
5.38. Swap eklemek istiyorum ama diskimde yeni bir takas bölümü oluşturmak için boş yerim yok. Ne yapmalıyım?
Yanıtlayan: Enver ALTIN
Linux için sistemdeki herhangi bir donanım, disk bölümlemeleri ve diğer nesneler, dosyalar yoluyla temsil edilir. Herhangi bir dosya ile /dev/hda5 arasında dosya kullanan kullanıcı yazılımları için bir fark yoktur. Bu nedenle sisteminize:
# dd if=/dev/zero of=/var/swapfile bs=1M count=128
# mkswap /var/swapfile
# swapon /var/swapfile
ile kolaylıkla 128 MB'lık bir takas dosyası ekleyebilirsiniz.
5.39. Linux'ta login ekranınında çıkan mesajı nasıl değiştirebiliriz?
Yanıtlayan: Devrim GÜNDÜZ
/etc/issue.net dosyasının içeriği, telnet girişi sırasında gösterilir. Ayrıntılı bilgi için, man issue.net komutu ile ilgili yardım sayfasına bakabilirsiniz.
5.40. Linux neden bu kadar yavaş?
Yanıtlayan: Enver ALTIN
Linux yavaş değildir, bazı dağıtımlarla birlikte gelen derlenmis çekirdek donanım uyumluluğunu arttırabilmek için sistemi minimum güçte çalıştırıyor olabilir.
Hızlandırmak için birkaç ipucu:
  • Sisteminizin IDE parametrelerini düzenleyin:
    # hdparm -c1 -d1 -k1 -X66 /dev/hda
    Burada:
    -c1: 32bits disk G/Ç (etkin).
    -d1: DMA kullanılsın (etkin).
    -k1: IDE soft-reset sırasındaki ayarları sakla. (Diskiniz kendi ayarlarını bir hata sonucunda sıfırlarsa bu ayarları hatirlayacak)
    -X66: UDMA66 Kipi 2 (etkin).
  • Gereksiz gördüğünüz tüm programları kapatın. Mümkünse çekirdeği kendiniz derleyin.
5.41. Eyvah! Linux root parolamı unuttum. Ne yapmalıyım?
Yanıtlayan: Nilgün Belma Bugüner
Sisteminiz açılırken, BIOS ekranını geçtikten hemen sonra LILO boot: komut satırında, çekirdek için:
linux single
komutunu verin. Sistem açıldıktan sonra doğrudan root yetkileriyle komut satırı ile karşılaşacaksınız. Parolanızı değiştirmek için passwd komutu verdikten sonra parolanızı yazın ve sisteminizi yeniden başlatın.
5.42. /dev/hda2'de ntfs sistemi var. Bağlamaya çalıştığımda çekirdeğinin ntfs'i desteklemediğini yazıyor. Nasıl destek verebilirim?
Yanıtlayan: Doruk Fişek ve : M. Özdoğan
Bunun için çekirdeği yeniden derlemeniz ve ntfs'i eklemeniz gerekebilir. Oradan "File System" sekmesinden NTFS'i açarsanız görebilirsiniz.
Eğer sistemde ntfs modül olarak varsa,
# modprobe ntfs
komutu ile bu modülü yükleyebilirsiniz. Bundan sonra aşağıdakine benzer bir satır ile ntfs dosya bölümünüzü bir dizine bağlayabilirsiniz:
# mount  -t ntfs /dev/hda2 /mnt/ntfs
5.43. "tar.gz dosyasını al, ./configure, make sonra da make install et çalışır." dediler, yapıyorum ama bazan olmuyor. Biraz daha bilgiye ihtiyacım var.
Yanıtlayan: Enver ALTIN
configure betiği, GNU autoconf tarafından, autogen.sh kullanılarak, configure.in içersindeki tanımlar yoluyla oluşturulan, programcıların kendi işlerini kolaylaştırmak için kullandıkları araçlardandır. Tam anlamıyla ifade etmek gerekirse, derlenmesi arzu edilen paketin bu sistem üzerinde çalışıp çalışamayacağı, çalışması mümkün ise hangi derleyici (compiler) ve seçeneklerle derleneceği, hangi ilintileyici (linker) seçeneklerinin kullanılacağı ve bunların hepsinden önce, derlenmesi istenen paketin ihtiyaç duyması muhtemel diğer programların ve kütüphanelerin denetlenmesi gibi işler configure tarafından yapılır.
configure betiği başarıyla sonuçlandıysa, tüm (alt) dizinlerin ve programın kaynak kodunun bulunduğu dizinin içersinde Makefile adında dosyalar oluşur. Bu dosyalar içersinde, make komutunun o dizinin içinde neler yapması gerektiği tanımlıdır. make komutu verdiğinizde, aslında /usr/bin/make, önce paketin kurulduğu dizin içersindeki Makefile dosyasını inceler. Bu dosya içersinde de alt dizinlerdeki Makefile dosyalarına bağlantılar vardır ve bu dosyalardaki tanımlara göre yine belirli bir sıra içersinde bazı işlemler yapılır (Derleyicinin çalıştırılması, her .c dosyasının derlenmesi, bağlayıcının [/usr/bin/ld] çalıştırılması gibi).
Makefile dosyaları içersinde işletilecek komutlar belli komut grupları altında tanımlıdır ve make komutuyla birlikte belirtilen parametre ile (make install komutunda install parametredir.) make'in bu komut gruplarından hangisinin işletileceği belirtilir, eğer belirtilmezse parametre olarak all verilmiş gibi all grubundaki komutlar işletilir. Dolayısıyla make ve make all aynıdır ve GNU autoconf/automake tarafından oluşturulan standart gruplardan install ve clean dışındaki tüm grupların işletilmesi anlamına gelir (tabii bu da Makefile içersinde tanımlıdır ve değiştirilebilir).
make install ile, Makefile içersindeki install adlı grubu işletmiş oluyoruz. Bu da, derlenmesi tamamlanmış ve bağlama (linking) işlemi yapılmış dosyaların ve bu program tarafından ihtiyaç duyulan diğer dosyaların sistemde istenen yerlere kopyalanması anlamına gelir. Eğer make install'dan önce, all kuralı uygulanmadıysa, yani make install'dan önce make komutu çalıştırılmamışsa, make all ile yapılması gereken işlemler de yapılacaktır. Kısaca, make install standart gruplardan clean dışındaki grupları işletir.
Örneğin:
$ configure --prefix=/usr --disable-debug
ile, derlenecek paketin, make install ile kurulacağı dizinler /usr dizininin altındaki dizinler olacaktır. Dolayısıyla programın çalıştırılabilir dosyasları /usr/bin altında, belgeleri /usr/doc altında, diğer programlarla ortak kullanılan dosyalar /usr/share altında, kütüphaneler /usr/lib altında, vs. olacak. Ayrıca hata ayıklama işlemini kolaylaştırmak için program içersine eklenen bazı yardımcı işlevler de --disable-debug seçeneği ile kapatılıyor.
$ make install
ile de önce all kuralı uygulanacak, daha sonra install kuralı uygulanacak ve program ilgili dizinlere yerleştirilecektir.
İpucu
configure tarafından derleyiciye akterılacak olan CFLAGS ve CXXFLAGS (g++/C++ için) gibi seçenekleri ortam değişkenleri ile oynayarak değiştirmek mümkün, ancak configure'den önce yapılmalı. Örnek:
$ CFLAGS="-O4 -march=i686 -fomit-frame-pointer -pipe" configure --prefix=/usr
5.44. Konsol modundayken bazı servisleri açıp/kapamak icin gereken yöntem nedir?
Yanıtlayan: Enver ALTIN
Standart bir yöntem yok. Birçok yazılım, SIGHUP için "yapılandırmayı yeniden okuma" ya da "yeniden başlatma" yapacak bir sinyal yakalayıcı tanımlıyor.
Örneğin inetd bu tür yazılımlardan biridir. /etc/services dosyası, ağ protokollerinin (TCP ve UDP) adlarının gerçekte hangi port numarasına eşit olduğu bilgilerinin tanımlandığı dosyadır. inetd/xinetd tarafından yönetilen hizmetler (telnet, rlogin, finger, time, ftp, pop3 gibi) için /etc/inetd.conf veya xinetd için /etc/xinetd.d/* basitçe port aç/kapat anlamında kullanılabilir. Ayrıca sistemi yeniden başlatmak gerekmez:
# killall -HUP inetd
veya
# killall -HUP xinetd
yeterli olur. Burada dikkat ederseniz killall kullandık. kill komutunu da kullanabilirdik. Ancak kill ve killall arasında bir fark var. kill ile bir süreç kimliği (PID) belirtmelisiniz (ps çıktısındaki gibi). örneğin sistemimdeki inetd'yi bulmak için:
# ps ax | grep inetd
komutunu veriyorum. Karşıma:
  PID TTY      STAT   TIME COMMAND
   74 ?        S      0:00 /usr/sbin/inetd
geliyor. inetd'yi yeniden başlatmak için:
# kill -HUP 74
komutunu vermem yeterli. Üstteki örnek, killall ile yapılan işlemin aynısı.
killall komutunun adının killall olmasının nedeni, sistemde belirtilen adda birçok süreç çalışma ihtimalinin olması. Örneğin makinanız çok sayıda web sunucusuna ev sahipliği yapıyorsa bu sunucuları hepsini birden tek komutla yeniden başlatabilirsiniz.
# killall -HUP httpd
Bu komut, sistemdeki tüm apache httpd süreçlerine bir SIGHUP (Hang-up signal - aç-kapa sinyali) [bkz: man 7 signal] gönderecektir.
Not
kill, süreçlere sinyal göndermek için kullanılır. kill için herhangi bir seçenek belirtilmezse SIGTERM sinyalinin gönderildiği varsayılır, bu da sinyali alan sürecin güvenli biçimde kapanması demektir.
5.45. Eposta günlük dosyalarını tail ile gözlüyorken, kullanıcıların pop loginlerini boşuna görmeyeyim dedim. Böyle birşeyi nasıl yapabilirim?
Yanıtlayan: Görkem Çetin
# tail -f /var/log/mail | grep -v "POP login"
komutunun işinizi gormesi gerekiyor.
Ek bilgi:| karakterinin solunda ve sağında iki komut bulunur. > karakterinin solunda bir komut, sağında ise bir dosya vardır. Aynısı < için de geçerlidir. Yukarıdaki işlemde kısaca "/var/log/mail dosyasının son kısımlarını sürekli ekrana verirken, içinde "POP login" geçen satırları ayıkla" demeye çalıştık.
Boru ( | ) karakteri bu işlemler için biçilmiş kaftandır. Üretilen bir verinin belirli kriterlere göre yeniden işlenmesine olanak tanır. Bilmeyenler için, grep'e verilen -v parametresi ise içinde belirli bir metin gecmeyen satırları ekrana göndermeye yarar.
Önceki Üst Ana Başlık Sonraki
4. Kısım - Masaüstü Başlangıç 6. Kısım - Linux Genel
Bir Linux Kitaplığı Sayfası