5. Konsol

  1. top ile baktığımda her zaman belleğin tamamına yakınının kullanıldığını görüyorum. Bunun nedeni nedir?
  2. Konsoldaki ekran koruyucusunun süresini nasıl ayarlarım?
  3. ls ile sadece dizinleri nasıl listelerim?
  4. Bulunduğum dizinde kaç tane altdizin olduğunu nasil öğrenirim?
  5. Bir dosyanın nerede olduğunu nasıl bulurum?
  6. İçinde belirli bir kelime geçen dosyaları nasıl bulurum?
  7. CVS ağacından sadece "tr.po" dosyalarını nasıl ayıklayıp paketleyebilirim?
  8. Nasıl tar dosyası oluşturabilirim?
  9. tar ile nasıl yedek alırım?
  10. dump ile nasıl yedek alırım?
  11. Bir .bz2 dosyasını nasıl açarım?
  12. Yanlışlıkla ikilik bir dosyayı cat ile ekrana yazdırdım. Konsol kullanılmaz hale geldi. Ne yapmalıyım?
  13. Bir önceki dizine nasıl dönerim? Bir üst dizine nasıl çıkarım?
  14. Bir dosyayı nasıl sıkıştırabilirim?
  15. Bir dosyanın türünü nasıl öğrenebilirim?
  16. Bir dizinin ne kadar yer kapladığını nasıl öğrenirim?
  17. Sabit disklerimin ne kadarını kullandığımı nasıl öğrenirim?
  18. Ne kadar bellek kullanıldığını nasıl öğrenirim?
  19. Bir dosyayı satır sayısına veya dosya boyuna göre nasıl bölerim?
  20. Bir bash betiği ile sistemin tarih-saat bilgilerini nasıl alırım?
  21. Bulunduğum dizindeki uygulamaları neden çalıştıramıyorum?
  22. Bulunduğumuz dizindeki uygulamaları çalıştırmak için ./ dizininin PATH'a eklenmesinin güvenlik açığına neden olduğunu söylediniz. Bahsedilen güvenlik sakıncası nedir?
  23. Linux açıldığında NumLock tuşunun otomatik olarak etkin olmasını nasıl sağlarım?
  24. Kullandığım Linux çekirdeğinin sürümünü ve makinanın adını nasıl öğrenebilirim?
  25. Linux'ta silinen dosyalar nasıl geri alınabiliyor? (undelete)
  26. Linux açılırken ekrana çıkanları daha sonra nasıl görebilirim?
  27. Sistem kaynaklarını nasıl görüntülerim?
  28. Slackware dağıtımı için kaynak kodundan derlemek dışında bir çözüm yok mu?
  29. Windows'dan telnet veya ssh ile bağlandığımda işlev tuşları çalışmıyor. Mesela mc'nin menülerine ulaşamıyorum. Ne yapmalıyım?
  30. Bir rpm paketini rpm -Uvf ile güncellemek istediğimde "error: failed dependencies" şeklinde bir hata veriyor. Sorun nedir?
  31. Linux altında CD nasıl yazarım?
  32. Internet'den çektiğimiz bir ISO dosyasını CD'ye nasıl yazabiliriz?
  33. CD yazmak için bilgileri nereden bulabilirim?
  34. CD yazmak istediğimde cdrecord yazılımı SCSI arabirimi kullanmadığım halde sürekli olarak 'Cannot open SCSI driver' hatası veriyor?
  35. Takas alanım çalışmıyor? Sebebi ne olabilir?
  36. "Unable to find swap-space signature" mesajı ne anlama geliyor?
  37. LILO'yu kaldırmak istiyorum, nasıl yapabilirim?
  38. Swap eklemek istiyorum ama diskimde yeni bir takas bölümü oluşturmak için boş yerim yok. Ne yapmalıyım?
  39. Linux'ta login ekranınında çıkan mesajı nasıl değiştirebiliriz?
  40. Linux neden bu kadar yavaş?
  41. Eyvah! Linux root parolamı unuttum. Ne yapmalıyım?
  42. /dev/hda2'de ntfs sistemi var. Bağlamaya çalıştığımda çekirdeğinin ntfs'i desteklemediğini yazıyor. Nasıl destek verebilirim?
  43. "tar.gz dosyasını al, ./configure, make sonra da make install yaz çalışır." dediler, yapıyorum ama bazan olmuyor. Biraz daha bilgiye ihtiyacım var.
  44. Konsol modundayken bazı servisleri açıp/kapamak icin gereken yöntem nedir?
  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?
  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.

  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

    komutunu kullanabilirsiniz.

  3. ls ile sadece dizinleri nasıl listelerim?

    $ ls -l | grep "^d"
  4. Bulunduğum dizinde kaç tane altdizin olduğunu nasil öğrenirim?

    Yanıtlayan: M. Umut Atasever

    $ ls -la |grep "^d" | wc -l
  5. Bir dosyanın nerede olduğunu nasıl bulurum?

    Yanıtlayan: M. Umut Atasever

    $ find BaşlanacakDizin -name "DosyaAdı" -print
  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.

  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"`
    
  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 ...
  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.

  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.

  11. Bir .bz2 dosyasını nasıl açarım?

    Yanıtlayan: M. Umut Atasever

    $ bzip2 -dv Dosyaadi.bz2
  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.

  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.

  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.

  15. Bir dosyanın türünü nasıl öğrenebilirim?

    Yanıtlayan: Alper Oğuz

    $ file dosya
  16. Bir dizinin ne kadar yer kapladığını nasıl öğrenirim?

    Yanıtlayan: M. Umut Atasever

    $ du -s dizinadi
  17. Sabit disklerimin ne kadarını kullandığımı nasıl öğrenirim?

    Yanıtlayan: M. Umut Atasever

    $ df -k
  18. Ne kadar bellek kullanıldığını nasıl öğrenirim?

    Yanıtlayan: M. Umut Atasever

    free komutunu kullanabilirsiniz.

  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 bağımsız değişkenleri 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.

  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.

  21. Bulunduğum dizindeki uygulamaları 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 uygulamaları çalıştırmak için uygulamam yerine ./uygulamam kullanın. Bir başka yol ise export PATH=$PATH:. ile ./ dizinini $PATH ortam değişkeninize eklemektir.

  22. Bulunduğumuz dizindeki uygulamaları ç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 uygulamalar kullanıcı uygulamaları 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.

  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.

  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.

  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 seçenekler kullanışlı olabilir.

  26. Linux açılırken ekrana çıkanları daha sonra nasıl görebilirim?

    Yanıtlayan: Mehmet Kızılsakal

    dmesg ile görebilirsiniz.

  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.

  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.

  29. Windows'dan telnet veya ssh ile bağlandığı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 kullanılabilir. Örneğin: F3 yerine ESC + 3, F10 yerine ESC + 0

  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).

  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.

  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.

  33. CD yazmak için bilgileri nereden bulabilirim?

    Yanıtlayan: Nilgün Belma Bugüner

    Linux'da CD Yazımı belgesine bakın.

  34. CD yazmak istediğimde cdrecord yazılımı 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.

  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.

  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.

  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
  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.

  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.

  40. Linux neden bu kadar yavaş?

    Yanıtlayan: Enver ALTIN

    Linux yavaş değildir, bazı dağıtımlarla birlikte gelen derlenmiş ç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 seçeneklerini 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ı hatırlayacak) -X66: UDMA66 Kipi 2 (etkin).

    • Gereksiz gördüğünüz tüm yazılımları kapatın. Mümkünse çekirdeği kendiniz derleyin.

  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.

  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 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
  43. "tar.gz dosyasını al, ./configure, make sonra da make install yaz ç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, yazılımcı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 yazılımları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 yazılımı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 seçenek ile (make install komutunda install bir seçenektir.) make'in bu komut gruplarından hangisinin işletileceği belirtilir, eğer belirtilmezse seçenek 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 yazılım 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 yazılımın çalıştırılabilir dosyaları /usr/bin altında, belgeleri /usr/doc altında, diğer yazılımlarla 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 yazılım 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 yazılım ilgili dizinlere yerleştirilecektir.

    İpucu

    configure tarafından derleyiciye aktarı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
    
  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 ait 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 portları açıp kapatmak için 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.

    Bilginize

    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.

  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. grep'e verilen -v seçeneği ise içinde belirli bir metin geçmeyen satırları ekrana göndermeye yarar.