You are on page 1of 73

Open Source Enterprise Centre

GNU/Linux Sertifikasyon Program

Linux 101 Ders Notlar

Son Guncelleme: 9 Subat 2007


Icindekiler
1 Linux, Knoppix ve bu egitim hakknda 1
1.1 Neden Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Knoppix Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Bu egitim neleri iceriyor? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 bashe giris 2
2.1 Kabuk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 bash mi kullanyorsunuz? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3 bash hakknda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.4 cd kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.5 Yollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.6 Mutlak Yollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.7 Goreli/Bagl yollar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.8 .. kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.9 .. kullanm, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.10 Goreli/Bagl Yol Ornekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.11 . Kavram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.12 cd ve ana dizin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.13 Diger Kullanclarn Home Dizinleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Linux Komutlarnn Kullanm 5


3.1 ls tanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Uzun dizin listeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Uzun dizin listeleri, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Dizinlere bakmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5 Ozyineli listeler ve inode listeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.6 inodelaranlamak, bolum 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.7 inodelaranlamak, bolum 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.8 inodelaranlamak, bolum 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.9 mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.10 mkdir -p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.11 touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.12 echo ve yonlendirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.13 echo ve yonlendirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.14 cat ve cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.15 mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4 Linkler yaratmak ve dosyalarsilmek 8


4.1 Katbaglantlar (hard links) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Katbaglantlar, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 Sembolik baglantlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4 Sembolik baglantlar, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.7 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.8 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.9 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.10 Sembolik Baglantlar, Ayrntlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.11 rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.12 rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.13 rm ve dizinler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

5 joker karakterler, Giris 11


5.1 Joker karakterler (wildcards), Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.2 Joker karakterler, Giris, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3 Uyusmazlklar(non-matches) Anlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.4 UyusmazlklarAnlamak, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.5 Joker karakter sozdizimi: * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.6 Joker karakter sozdizimi: ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.7 Joker karakter sozdizimi: [] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.8 Joker karakter sozdizimi: [!] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.9 Joker karakter ile ilgili uyarlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.10 Joker karakter ile ilgili uyarlar, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.11 Tek Trnak ile Cift Trnagn Kyaslanmas . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Duzenli Ifadeler 13
6.1 Duzenli ifade nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2 Glob kyaslamas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.3 Basit bir dizi parcas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.4 Basit karakter dizisi parcasnanlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.5 Metakarakterler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.6 [] Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.7 [] Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.8 Farkllasan sozdizimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.9 * metakarakteri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.10 Satr Basve Satr Sonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.11 Tam Satr Duzenli Ifadeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7 FHS ve dosyalarbulmak 15
7.1 Dosya Sistemi Hiyerarsi Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 Iki Bagmsz D.S.H.S Kategorisi: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.3 /usr dizinindeki ikincil hiyerarsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.4 Dosyalarbulmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.5 PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.6 PATHi duzenlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.7 which hakknda her sey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7.8 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.9 find ve joker karakterler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.10 find ile kucuk buyuk harf ayrmyapmadan aramak . . . . . . . . . . . . . . . . . . . . . . 18
7.11 find ve duzenli ifadeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.12 find ve turler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.13 find ve mtimelar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.14 -daystart secenegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.15 -size secenegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.16 Bulunan dosyalarn islenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.17 locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.18 updatedb kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.19 slocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

8 Surec (process) Kontrolu 20


8.1 xeyesbaslatmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
8.2 Sureci durdurmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.3 fg ve bg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.4 & Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.5 Birden cok sayda arkaplan sureci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8.6 Sinyallere giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.7 SIGTERM ve SIGINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.8 Buyuk olum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.9 nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8.10 ps komutu ile surecleri listelemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.11 Hem ormanhem de agaclargorebilmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

ii
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

8.12 u ve l ps secenekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.13 top kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8.14 nice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8.15 renice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

9 Yazisleme 24
9.1 Daha uzun bir boru hatt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.2 Metin isleme kasrgasbaslyor! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.3 echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9.4 cat, sort ve uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.5 wc, head, ve tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.6 tac, expand ve unexpand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.7 cut, nl ve pr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.8 tr, sed ve awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.9 od, split, ve fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.10 Paste, join, ve tee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.11 Yonlendirme (redirection) Kasrgas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.12 >> Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

10 Sistem ve ag dokumantasyonu 27
10.1 Linux sistem dokuman tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
10.2 Klavuz sayfalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
10.3 Klavuz sayfalar, devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.4 Klavuz sayfa bolumleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.5 Coklu klavuz sayfalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.6 Dogru klavuz sayfaybulmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.7 apropos ile ilgili hersey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.8 Klavuz Yolu (MANPATH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.9 GNU bilgisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.10Linux Dokumantasyon Projesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.11LDPye genel baks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.12Mail Listeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.13Haber gruplar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.14Satcfirmalar ve ucuncu-parti web siteleri . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.15Linux dansmanlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.16Yazlm ve donanm saglayclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.17Gelistiricilerin kaynaklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

11 Linux izin modeli 31


11.1 Bir kullanc, bir grup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
11.2 ls -l incelemesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
11.3 Ben kimim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
11.4 Hangi gruplarn uyesiyim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
11.5 Kullancve Grup HaklarnDegistirmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
11.6 Sahipligin Ozyineli Olarak Degistirilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
11.7 chmod Komutuna Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
11.8 kullanc/grup/digerleri Parcack Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11.9 Izinleri Sfrlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11.10Saysal Kalplar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11.11Saysal izin ifadelerinde sozdizim yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11.12umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.13suid ve sgidye giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.14suid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.15suid/sgid uyarlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.16suid ve sgidnin degistirilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.17Izinler ve dizinler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.18Dizinler ve sgid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.19Dizinler ve silme islemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
11.20Ozel ilk basamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

iii
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

12 vi Editoru 36
12.1 Via baslangc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
12.2 Dosya acma, kaydetme ve ckma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.3 Vida yazma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.4 Silme ve kopyalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
12.5 Arama ve eslestirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
12.6 Diger dosyalarn metne eklenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
12.7 Kabuk komutlarnn calstrlmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

13 Linux hesap yonetimi 38


13.1 /etc/passwd dosyas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
13.2 /etc/passwd hakknda ipuclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
13.3 /etc/shadow dosyas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
13.4 /etc/group dosyas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
13.5 Gruplara iliskin notlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
13.6 Elle kullancve grup yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.7 /etc/passwd dosyasnduzenlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.8 /etc/shadow dosyasnduzenlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.9 Parola belirleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
13.10/etc/group dosyasnduzenlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
13.11Home dizin yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
13.12Hesap yonetim araclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

14 Kullancortamnayarlama 41
14.1 fortune programna giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
14.2 logini anlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
14.3 Interaktifligin test edilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
14.4 /etc/profile ve /etc/skel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
14.5 export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
14.6 Degiskenlerin ihrac icin isaretlenmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
14.7 Export ve set -x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
14.8 set ile degiskenlerin ayarlanmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
14.9 Unset ve FOO= fark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
14.10Komutlarn calsmalarnetkilemek icin ihrac islemi . . . . . . . . . . . . . . . . . . . . . . 44
14.11env kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

15 Midnight Commander (MC) 45


15.1 Dizin panelleri arasnda gezinme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
15.2 Fare destegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
15.3 FTP islemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

16 Linux Dosya Sistemi 46


16.1 Blok Aygtlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
16.2 Tum Diskler ve Bolumler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
16.3 fdisk Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
16.4 fdisk Kullanm, Devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
16.5 Fdisk ve Otesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
16.6 Dosya Sistemlerini Yaratmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
16.7 Dosya sistemlerini mount etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
16.8 Takas bolumu olusturmak ve kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
16.9 Mount edilmis dosya sistemlerini gormek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
16.10Mount Secenekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
16.11fstab, Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
16.12Ornek bir fstab Dosyas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
16.13Ornek bir fstab, Devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
16.14Dosya sistemlerini Unmount Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
16.15fsckya Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
16.16fsck ile Ilgili Problemler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
16.17ext2 Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

iv
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

16.18ext3 Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52


16.19ReiserFS Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
16.20XFS Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
16.21JFS Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
16.22VFAT Dosya Sistemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

17 Sistemi Baslatmak 54
17.1 MBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
17.2 Cekirdek Acls Islemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
17.3 /sbin/init Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
17.4 LILOyu Inceleyelim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
17.5 LILO Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
17.6 LILO Hakknda Onemli Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
17.7 GRUBInceleyelim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17.8 GRUB Kullanm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17.9 dmesg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17.10/var/log/messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17.11Tek-kullancModu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
17.12Tek-kullanc(Single-user) Modunu Kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . 57
17.13Calsma Seviyelerini Degistirmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
17.14Sistemi Duzgun Kapatmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
17.15Sistemi Aniden Kapatmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
17.16OntanmlCalsma Seviyesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

18 Calsma Seviyeleri 58
18.1 Tek-kullancModu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
18.2 Calsma Seviyeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
18.3 elinit Komutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
18.4 Calsma Seviyesi Etiketi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
18.5 now ve halt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
18.6 init Konfigurasyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

19 Dosya Sistemi Kotalar 60


19.1 Kotalara Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
19.2 Cekirdek Destegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
19.3 Dosya Sistemi Destegi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
19.4 Kotalarn Konfigurasyonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
19.5 Kotalarn Konfigurasyonu, Devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
19.6 quota Komutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
19.7 KotalarGoruntulemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
19.8 edquota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
19.9 edquota, Devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
19.10edquotayAnlamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
19.11Degisiklikler Yapmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
19.12KotalarKopyalamak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
19.13Grup Kstlamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
19.14repquota Komutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
19.15repquota Secenekleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
19.16KotalarGoruntulemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
19.17Muhleti Belirlemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
19.18KotalarAclsta Kontrol Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

20 Sistem Loglar 64
20.1 syslogdye Giris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
20.2 LoglarOkumak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
20.3 LoglarKuyruktan Takip Etmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
20.4 Log Dosyalarngrep ile Kullanmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
20.5 Log Dosyalarnn Ozeti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
20.6 syslog.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

v
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

20.7 syslog.conf, Devam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65


20.8 Yeniden Yukleme ve Ek Bilgiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
20.9 Guvenlik Notu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
20.10logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
20.11Ileri Baslk: klogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
20.12Ileri Baslk: Alternatif Loglayclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

vi
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

1 Linux, Knoppix ve bu egitim hakknda


1.1 Neden Linux ?
Bu egitime geldiginize gore hepinizin kafasnda uc asag bes yukar olusmus bir Linux fikri vardr. Hatta
muhtemelen bazlarnz Linux kurmustur bile. Fakat kurmus olanlarnzn bile kafasnda Neden Linux ?
sorusu vardr.
Gercekten Neden Linux ? Bu soruya cevap vermeden once bir miktar Linuxu yuzeysel bile olsa
tanmak gerekmektedir.
Linux 1992 ylnda Linus Torvalds tarafndan baslatlan bir projedir. Temel olarak 1970lerden beri
suregelen Unix isletim sisteminin evlerde yaygn olan i386 (PC) tabanl makinalarda calsmasn he-
deflemistir. Bu baslangcn devamnda proje bircok kisi tarafndan desteklenmis ve su anda binlerce
yazlmcnn bir sekilde ilgilendigi dev bir proje halini almstr.
Linux diye bildigimiz dagtmlarn hepsi, Linux kerneli (cekirdegi) ve onun etrafndaki GNU yazlm-
lardan olusan bir Unix sistemidir aslnda. O zaman asl sorumuz neden Unix olacaktr ?
Unix temelde Windows ve DOS kullananlarmzn komut satr diye bildigi ortamdan ve X-Windows
sisteminden olusur. Bu ikisinin de gecmisi hem DOStan hem de Windowstan cok daha eskilere dayanr.
Unixin 1970lerden beri temel aldg en onemli ozellik cok gorevli (multi-task) ve cok kullancl (multi
user) olmasdr. Butunlesik bir isletim sistemi olan Unix, bu iki ozelligini hem komut satr ortamnda hem
de GUI ortam olan X-Windowsda korur. Dahas X-Windowsda yapabileceginiz hemen herseyi komut
satrndan (konsoldan) gerceklestirebilirsiniz.
Az once bahsettigimiz gibi Unixin temel ozelligi cok gorevli ve cok kullancl olmasdr. Bu sebeple
Unixde cok ciddi bir kullanc kstlamas vardr. Kullanclar, ancak izinleri olan harddisk alannda,
izinleri olan komutlar, kullanmalarna izin verilen hafza miktarnda ve hatta CPU gucu ile yaparlar. Bir
kullancnn bir programnn cokmesi bir baska kullancy ve makinann genel isletimini engellemez.
Otuz yldr gelistirilen bu ozellikler Unixi diger isletim sistemlerinden ayrmakta ve dunyann en cok
tercih edilen sunucu platformu yapmaktadr.
Iste bu noktada Unixle tansklg biraz daha ilerlemis bazlar iyi de kullanmas kesinlikle daha zor,
bir cok isi konsoldan yapyorsunuz, Windows gibi GUIden herseyi halletmek varken, 2006 senesinde ben
niye konsolu kullanaym diyebilir.
Burada bir seye acklk getirmek lazm. Konsol, dinazorluktan, ya da eski kafallktan hala kullanlan
bir sey degildir. Konsol kullanlmaktadr, zira bir sistem yoneticisinin islemleri en hzl ve en kolay yoldan
yapmasnn yolu konsoldur. Konsoldan bir iki satr ile hallettiginiz bir emri GUIden yapmak genelde cok
daha uzun zamannz alr. Belki daha da onemlisi, konsol ne yapmas gerektigini bilenler icindir, suraya
buraya tklayaym da nasl olsa hallederim bu isi diyerek sistemi kurcalayanlar icin degil.
Bir baska onemli nokta da Unixin gucunu biraraya gelmis binlerce kucuk programdan alyor olmasdr.
Bu kurs suresince size bu programlar ihtiyacmz dogrultusunda nasl birbiri ile ilintileyecegimizi, nasl
istedigimizi gibi sonuclar alacagmz gosterecegiz.
Ksa bir ornek ls komutu olabilir. DOS ortamndaki dir komutunun karslg olan ls komutu size
basitce bir dizinin icerigini gosterir. Diyelim ki bu dizin uzun ve icerigini sayfa sayfa gormek istiyoruz. Bu
noktada herhangi bir text dosyasn bize sayfa sayfa gosteren more komutu ile ls komutunu birlestiririz. En
basitinden ls -al more dediginizde ls komutunun ckts takip edebileceginiz gibi sayfa sayfa karsnza
gelir. Mesela ls komutu bir dizindeki dosyalar gosterirken, ls wc -l komutu ls komutunun cktsn
wc (wordcount) komutuna gonderek o dizinde kac dosya oldugunu gosterir. Goruyorsunuz iki alakasz
komutla ls komutuna yeni fonksiyonlar kazandrdk. Dahas bir dizinde kac dosya oldugunu bilgisayara
saydrdk. Kolaylkla bir baska komutu da bu sisteme ekleyip, her dosyay bizim icin teker teker yazcya
yollamasn saglayabilirdik veya baska bir sey. Birkac kelimelik bu tur komutlarla yapabileceginiz seylerin
ne kadar derine gidebildigini gorseniz sasarsnz. Dahas bir kabuk ortam gibi bir sahte-programlama dili
ile birlestirildiginde bu komutlar gercekten uygulama duzeyinde islerin altndan kalkabilirler.
Linux kullanmay ogrenmenizin sebeplerinden biri iste budur. Gerektigi gibi bilgisayarnz kontrol
edebilmeniz, ona istediginiz islemleri yaptrabilmeniz. Kendinizi ona degil onu kendinize uydurabilmeniz.

1.2 Knoppix Linux


Bu kurslar boyunca Knoppix adnda bir dagtm kullanacagz. CDden boot eden bir dagtm olan Knoppix
icin bilgisayarnzda harddiskiniz olmas bile gerekli degil, zira 96MB ve ustu RAMnz varsa Knoppix
harddiskinizi kullanmaz bile. Dahas Knoppix ile yaptgnz bir yanlslkla harddiskinizdeki bilgilere zarar
verme ihtimaliniz cok dusuktur. Isletim sistemini ise bozamazsnz zaten, cunku o CD Romda yazlamaz
bir halde duruyordur.

1
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Ote yandan yaklask 2GB yazlm yuklu olan Knoppix cdsi hemen hemen butun ihtiyaclarnza ce-
vap verebilecek ozelliklere sahiptir. Burada yaptgmz isleri, eve gittiginizde kolayca deneyebilir, Linux
kurulumu yapmadan (ileride onu da yapacagz) Linux kullanabilirsiniz.
Bilgisayarnzdaki donanmlar tanmas, Usb-diskinizden, ethernet kartnza kadar onlar tanyp kul-
lanabilmesi Knoppixin en onemli yanlarndan biri. Dahas daha aclstan dili Turkce olarak secebillir ve
kullanabilirsiniz. Ethernet, kablomodem, DSL ve seri modem ile Internete ckabilen Knoppix dagtm
sadece ogrenme amacl degil, kullanm acsndan da essizdir. Belki tek acmaz/problem, ulkemizde cok
sayda bulunan winmodem tabir edilen PCI modemlerle uyumsuz olmasdr. Yukarda saydgmz diger
yontemlerle ve external modemlerle Internete ckmakta ve islemlerinizi yapmakta bir sorun yasamazsnz.
Butun bu sebeplerle biz de Knoppix dagtmn kullanacagz egitim boyunca.
Gelelim egitimin icerigine.

1.3 Bu egitim neleri iceriyor?


Linux Temellerine hosgeldiniz. Bu kurda sizlere bash (Linuxdaki standart kabuk -shell-)i tanstracak,
ls, cp, mv gibi standart Linux komutlarnn tum potansiyelini nasl kullanabileceginizi gosterecek, Li-
nuxun izin ve sahiplik modellerini ve daha bircok kavram anlatacagz.
Bu kurun sonunda, Linux temelleri konusunda saglam bir zemin elde etmis olacak ve hatta baz temel
Linux sistem yonetim gorevlerini ogrenmeye hazr halde olacaksnz. Butun bu serinin sonunda ise bir
Linux sistem yoneticisi olmak icin gerek duyabileceginiz butun bilgilere sahip olacaksnz.

2 bashe giris
2.1 Kabuk
Eger daha once bir Linux sistemi kullandysanz sisteme girdiginizde asagdakine benzer bir komut satr
ile karslasacagnz bilirsiniz:

Bu komut satr cok farkl gorunebilir. Sisteminizin uzerinde calslan makina (hostname) bilgisini,
icinde bulundugunuz dizini veya her iki bilgiyi birden yanstyor olabilir. Ancak nasl gorunurse gorunsun
kesin olan bir sey vardr: Bunu goruntuleyen programa kabuk (shell) denir ve cok buyuk ihtimalle
sisteminizde sizi karslayan bash kabugudur.

2.2 bash mi kullanyorsunuz?


bash kullanp kullanmadgnz su sekilde kontrol edebilirsiniz:

$ echo $SHELL
/bin/bash

Eger ustteki ifade bir hata verirse veya yukardaki ornege benzemeyen bir sonuc verdiyse, bashten
farkl bir kabuk kullanyor olabilirsiniz. Bu durumda bile bu egitimin buyuk bir bolumu hala gecerli
olacaktr, fakat basha gecis yapmanz bu egitim surecinde sizin icin onemli bir avantaj olacaktr. (chsh
komutunu kullanarak kabugu degistirmek icin gerekli bilgi icin egitim serimizin 2. Bolumune bakn.)

2.3 bash hakknda


Bourne-again shell ifadesi icin bir tur ksaltma olan Bash, pek cok Linux sistemde ontanml kabuk ola-
rak karsnza ckar. Kabugun gorevi verdiginiz komutlara uyarak Linux sisteminizle etkilesime gecmenizi
saglamaktr. Komut vermeyi bitirince kabuga exit ya da logout komutu ile kendini sonlandrmasn soyle-
yebilirsiniz, hemen ardndan karsnza login ekran gelir. Bu arada, kabuk ile calsrken Control-D tus
kombinasyonuna basarak da bash kabugunu sonlandrabilirsiniz.

2
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

2.4 cd kullanm
Sizin de farkna varms olabileceginiz gibi bash komut satr dunyann en heyecan verici seyi saylmaz.
Isterseniz simdi de biraz dosya sistemi icinde gezinmek icin bash kullanalm. Komut satrnda iken
asagdaki komutu verin ($ karakterini yazmadan):
$ cd /

Bu komut ile bash kabuguna / icinde calsmak istedigimizi soylemis olduk. Bu ayn zamanda kok
(root) dizin olarak da bilinir; dosya sistemindeki tum dizinler bir agac olustururlar ve / bu agacn en
tepesinde ya da bu agacn koku kabul edilir.
cd komutu o anda calsmakta oldugunuz dizini belirler. cd komutunun bir ad da halihazrda calslan
dizin (current working directory) dir.

2.5 Yollar
bash kabugunun halihazrda calstg dizini gormek icin yazlabilecek komut:
$ pwd
/

Yukardaki ornekte, cd komutuna cevap olarak gelen / elemanna yol (path) denir ve cd komutuna
gitmek istedigimiz yeri soyler. Burada, / eleman mutlak yol (absolute path) olarak kullanlms. Gidilecek
olan dizinin, dosya sistemi agacnda, kokten itibaren ifade edilisine mutlak yol denir.

2.6 Mutlak Yollar


Birkac mutlak yol ornegi:
/dev
/usr
/usr/bin
/usr/local/bin

Gordugunuz gibi butun mutlak yol ifadelerinin ortak noktas / ile baslamalardr. Ornegin /usr/local/bin
yolunu yazarak, cd komutuna once / dizinine gitmesini, oradan usr dizinine, daha sonra da usr dizininin
altnda local ve onunda altnda bin dizinine gitmesi soyleniyor. Mutlak yol ifadeleri, her zaman / den
baslayarak kullanlr.

2.7 Goreli/Bagl yollar


Diger yol turu goreli yoldur. Bash, cd ve diger komutlar bu tur yollar daima icinde bulundugunuz dizine
gore yorumlar. Goreli yollar kesinlikle / ile baslamaz. Yani eger /usr dizini icinde isek:
$ cd /usr

/usr/local/bin dizinine gitmek icin:


$ cd local/bin
$ pwd
/usr/local/bin

yazabiliriz.

2.8 .. kullanm
Goreli yollarn icinde bir ya da daha cok .. dizini bulunabilir. .. dizini ozel bir dizindir ve bulundugunuz
dizinin ustundeki dizini gosterir. Yukardaki ornekten devam edecek olursak:
$ pwd
/usr/local/bin
$ cd ..
$ pwd
/usr/local

Gordugunuz gibi simdi icinde bulundugumuz dizin /usr/local dizinidir. Bu sekilde icinde bulundugu-
muz dizine gore geriye dogru gidebiliriz baska bir deyisle yukar dogru ckabiliriz.

3
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

2.9 .. kullanm, devam


Ek olarak, icinde bulundugumuz dizinin de yer aldg yani bir ust dizini temsil eden .. dizinini de
kullanabiliriz. Ornegin:
$ pwd
/usr/local
$ cd ../share
$ pwd

/usr/share

2.10 Goreli/Bagl Yol Ornekleri


Goreli yollar biraz karmask gorulebilir. Burada sonucta varlacak hedef dizinin gorulmedigi bir kac ornek
mevcuttur. Bu komutlar yazldktan sonra hangi dizin icerisine gidilecegini tahmin etmeye calsnz:
$ cd /bin
$ cd ../usr/share/zoneinfo

$ cd /usr/X11R6/bin
$ cd ../lib/X11

$ cd /usr/bin
$ cd ../bin/

Simdi bunlar bir de yazarak nereye gittigine baknz ve dogru tahmin edip etmediginizi gozlemleyiniz.

2.11 . Kavram
cd konusunu bitirmeden once birkac kucuk seyden daha bahsetmek gerekmektedir. Ilk olarak, . ile
temsil edilen ve halihazrda bulundugunuz dizin anlamna gelen ozel bir sembol daha vardr. Bu dizin
cd komutuyla birlikte kullanlmaz, genellikle bulundugunuz dizindeki baz programlar calstrmak icin
kullanlr:
$ ./program

Yukardaki ornekte halihazrda calslan dizin (ardndan) program isimli (calstrlabilir) dosya cals-
trlacaktr.

2.12 cd ve ana dizin


Ana dizinimizi degistirmek isteseydik soyle yazabilirdik:
$ cd

Parametresiz kullanmda cd, kullancy home dizininine goturecektir. root kullanclar icin home dizini
/root ve diger kullanclar icin ise /home/kullanc ad seklindedir. Peki ya acaba kendi home dizinimiz
icerisinde bir dosya belirlemek istersek ne yapmak gerekir? Mesela bir dosya argumann program ko-
mutuna parametre olarak gondermek isteyelim. Eger dosya kendi home dizinimiz icerisinde yer alyorsa,
yazlabilecek komut asagdaki sekilde dusunulebilir:
$ ./program /home/knoppix/dosyam.txt

Fakat yukardaki ormekte oldugu gibi her zaman tam yolu yazmak cok verimli olmayabilir. Neyse ki
(tilda) karakteri yardmyla ayn isi daha kolay bir sekilde halletmek mumkundur. Soyle ki:
$ ./program /~/dosyam.txt

2.13 Diger Kullanclarn Home Dizinleri


Kabuk icin komutunun, kullancnn home dizini anlamna geldigini soylemistik. Bunun yannda, yine
kullanlarak baska kullanclarn da home dizinlerine erismek mumkundur. Ornegin, knoppixin home
dizininde yer alan ogrencidosyasi.txt isimli dosyaya erismek istiyorsak asagdaki komut yazlabilir:
$ ./program ~knoppix/ogrencidosyasi.txt

4
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

3 Linux Komutlarnn Kullanm


3.1 ls tanm
Simdi ls komutuna hzlca goz atacagz. Muhtemelen ls komutunu onceden biliyorsunuz ve sadece onu
yazmann halihazrda bulundugunuz dizinin icerigini listeleyecegini biliyorsunuz:

$ cd /usr
$ ls
bin doc etc games include info lib local man sbin share src X11R6

-a secenegini belirterek bir dizindeki dosyalarn tumunu, gizli dosyalar . ile baslayanlar da dahil
olmak uzere gorebilirsiniz. Asagdaki ornekte de gorebileceginiz gibi, ls -a . ve .. ozel dizin linklerini de
gosterir:

$ ls -a
. .. bin doc etc games include info lib
local man sbin share src X11R6

3.2 Uzun dizin listeleri


ls komut satrnda bir ya da birden fazla dosya ya da dizin belirtebilirsiniz. Eger bir dosya belirtirseniz, ls
sadece o dosyay gosterecektir. Eger bir dizin belirtirseniz, ls bu dizinin icerigini gosterecektir. -l secenegi,
dosya haklarn, sahibi olan kisi ve gruplar, degisiklige ugradg zaman ve boyut bilgilerini gormek
istediginizde isinize yarayacaktr.

3.3 Uzun dizin listeleri, devam


Asagdaki ornekte -l secenegini /usr dizininin tam bir listesini almak icin kullanyoruz.

$ ls -l /usr
toplam 706
drwxr-xr-x 2 root root 303104 2003-03-23 21:10 bin
drwxr-xr-x 4 root root 73728 2003-03-23 19:50 doc
drwxr-xr-x 3 root root 2048 2002-07-04 18:54 etc
drwxr-xr-x 2 root root 8192 2003-03-23 16:36 games
drwxr-xr-x 63 root root 32768 2003-03-22 19:14 include
lrwxrwxrwx 1 root root 10 2002-08-08 15:02 info -> share/info
drwxr-xr-x 124 root root 217088 2003-03-23 21:10 lib
drwxrwsr-x 9 root staff 2048 2001-05-12 02:04 local
drwxr-xr-x 6 root root 2048 2002-08-21 22:09 man
drwxr-xr-x 2 root root 53248 2003-03-22 22:20 sbin
drwxr-xr-x 194 root root 24576 2003-03-23 20:30 share
drwxrwsr-x 4 knoppix knoppix 2048 2003-03-23 18:47 src
drwxr-xr-x 6 root root 2048 2003-02-13 08:36 X11R6

Ilk sutun listedeki her eleman icin izinleri gosterir. Bu bilgiyi nasl yorumlamanz gerektigini birazdan
acklayacagz. Bir sonraki kolon ise her bir dosya sistemi nesnesinin sahip oldugu linkleri gosterir, daha
sonra deginmek uzere bu ozelligi simdilik gececegiz. Ucuncu ve dorduncu sutunlar ise srasyla dosyann
sahibini ve ait oldugu grubu belirtir. Besinci sutun ise dosya buyuklugudur. Altnc sutun son mudahale
edilen tarih veya mtimedr. Son sutunda ise nesnenin ismi vardr. Eger nesne bir sembolik link ise,
> isareti ve devamnda sembolik linkin isaret ettigi adresi gorursunuz.

3.4 Dizinlere bakmak


Bazen bir dizinin icine degil de kendisine bakmak istersiniz. Bu gibi durumlar icin -d secenegini kullana-
bilirsiniz, bu sayede ls dizinlerin icine degil kendilerine bakar.

$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share


drwxr-xr-x 194 root root 24576 2003-03-23 20:30 ../share
lrwxrwxrwx 1 root root 12 2003-03-23 21:05 /usr -> /KNOPPIX/usr
drwxr-xr-x 2 root root 303104 2003-03-23 21:10 /usr/bin
drwxr-xr-x 2 root root 20480 2003-03-22 18:36 /usr/X11R6/bin

5
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

3.5 Ozyineli listeler ve inode listeleri


Bir dizinin kendisine bakmak icin -d kullanabileceginizi gordunuz ancak -R ile tam tersini de yapabilirsiniz
yani sadece bir dizinin icinde degil zincirleme olarak o dizinin icinde bulunan tum dizinlerin ve onlarn
da icinde bulunan ve... Bu sekilde mevcut tum dizinlerin icine bakabilirsiniz! Bunun cktsn burada
gostermiyoruz cunku boyle bir komutun ckts epey uzun olur ancak siz kendi sisteminizde hemen ls -R
ve ls -Rl komutlarnn deneyip sonucu gorebilirsiniz.
Son olarak, -i secenegi dosya sistemindeki nesnelerin inode numaralarn gostermek icin kullanlabilir:

$ ls -i /usr
6603072 bin 6603408 games 6603776 lib 6604116 sbin 6602956 X11R6
6603184 doc 6603524 include 6603888 local 6604230 share
6603296 etc 6603644 info 6604004 man 6604346 src

3.6 inodelar anlamak, bolum 1


Bir dosya sistemindeki her nesneye ozgun bir indeks numaras verilir, bu indekse de inode denir. Bu
biraz onemsiz, ya da gereksiz detay gibi gorunebilir ama bir cok dosya sistemi islemini anlamann temeli
inode mantgn anlamay gerektirir. Ornek olarak, her dizinde gordugunuz . .. baglantlarn dusune-
lim. Gercekte .. dizininin ne oldugunu tam olarak anlayabilmek icin /usr/localn inode numarasna bir
bakalm:

$ ls -id /usr/local
6603888 /usr/local

/usr/local dizininin inode numaras 6603888 imis, simdi de, /usr/local/bin/.. in inode numarasna
bakalm:

$ ls -id /usr/local/bin/..
6603888 /usr/local/bin/..

3.7 inodelar anlamak, bolum 2


Gordugunuz gibi, /usr/local/bin/.. ile /usr/localn inode numaralar ayn! Acga ckan bu bilgiden va-
rabilecegimiz nokta su: Eskiden, /usr/local dizinin kendisi olarak dusunurduk. Ama simdi, kesfettik ki
aslnda 6603888 inodeu dizinin kendisi, ayrca da bu inodea isaret eden iki tane de dizin tanm (linki)
var. Hem /usr/local, hem /usr/local/bin/.. de 6603888 inodeuna isaret ediyor.

3.8 inodelar anlamak, bolum 3


Aslnda ls -dl komutu ile 6603888 numaral inodea kac kere baglant yapldgn, baska bir deyisle ayn
yeri gosteren kac farkl ismin dosya sisteminde mevcut oldugunu gorebiliriz:

$ ls -dl /usr/local
drwxrwsr-x 9 root staff 2048 2001-05-12 02:04 /usr/local

Soldan ikinci sutuna bakacak olursak goruruz ki /usr/local (inode 6603888) dizinine 9 baglant (link)
vardr. Benim dizinimde bu inodea bagl olan birkac yolu gostermem gerekirse:

/usr/local
/usr/local/.
/usr/local/bin/..
/usr/local/games/..
/usr/local/lib/..
/usr/local/sbin/..
/usr/local/share/..
/usr/local/src/..

6
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

3.9 mkdir
Yeni dizinler yaratmak icin kullanlan mkdir komutuna hzl bir goz atalm. Asagdaki ornek /tmp altnda
3 yeni dizin yaratr, tic, tac ve toe.

$ cd /tmp
$ mkdir tic tac toe

Varsaylan olarak, mkdir komutu ust dizinleri sizin icin yaratmaz; yaratlmas istenilen dizinin tum
yolunda sondan bir onceki dizine kadar butun dizinlerin var olmas gereklidir. Bunun anlam /de/ne/me
dizinlerini yaratmak istiyorsanz, uc ayr mkdir komutu calstrmalsnz:

$ mkdir de/ne/me
mkdir: de/ne/me dizini olusturulamyor: Boyle bir dosya ya da dizin yok
$ mkdir de
$ mkdir de/ne
$ mkdir de/ne/me

3.10 mkdir -p
Ancak, mkdirin faydal opsiyonu -p ile mkdiri dizin yolunda var olmayan ust dizinleri yaratmasn
saglayabilirsiniz, asagda goruldigi gibi:

$ mkdir -p de/ne/me2

mkdir komutu hakknda daha detayl bilgi almak icin man mkdir yazarak mkdirin yardm sayfasna
basvurabilirsiniz. Bu yontem burada bahsedilen hemen hemen her komut icin gecerli olacaktr, (ornek
olarak man ls), sadece cd komutu bash kabugunun icinde geldigi icin bunun dsnda kalr.

3.11 touch
Simdi kopyalama, yeniden adlandrma, dosya ve dizin tasmak icin kullanlan cp ve mv komutlarna goz
atacagz. Buna baslamadan once /tmp de bir dosya olusturmak icin touch komutunu kullanacagz:

$ cd /tmp
$ touch benikopyala

touch komutu varolan bir dosyann mtime degerini gunceller (ls -l cktsndaki 6. sutunu hatrlayn).
touch komutuna parametre olarak verilen dosya mevcut degilse bos bir yeni dosya yaratlacaktr. Yu-
kardaki komutun sonucunda sfr boyutlu bir /tmp/benikopyala olusturmus oluyorsunuz.

3.12 echo ve yonlendirme


Simdi artk dosya varolduguna gore bu dosyaya biraz veri ekleyelim. Bunu echo komutu ile yapabiliriz, bu
komut kendisine gecilen argumanlar alp bunu standart cktya basar. Once echo komutunun kendisine
bir goz atalm:

$ echo "ilk dosya"


ilk dosya

3.13 echo ve yonlendirme


Ve simdi ayn echo komutunu bu sefer ckt yonlendirme teknigi ile kullanalm:

$ echo "ilkdosya" > benikopyala

Yukarda gordugunuz buyuktur isareti kabuga echonun cktsn benikopyala isimli bir dosyaya yonlen-
dirmesini soyler. Bu dosya eger mevcut degilse yaratlr, yok eger mevcut ise uzerine yazlr. ls -l komut ile
benikopyala dosyasnn 9 byte buyuklugunde oldugunu gorebiliriz cunku ilkdosya sozcuklerini, bosluk
karakterini ve yenisatr karakterini barndrr:

$ ls -l benikopyala
-rw-r--r-- 1 knoppix knoppix 9 2003-03-25 16:33 benikopyala

7
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

3.14 cat ve cp
Terminalde dosyann icerigini goruntulemek icin cat komutunu kullann:
$ cat benikopyala
ilkdosya

Simdi cp komutunun en basit seklini kullanarak benikopyala dosyasnn benikopyaladi isimli bir kop-
yasn ckarabiliriz:
$ cp benikopyala benikopyaladi

Detayl olarak incelersek goruruz ki bu ikisi gercekten de birbirinden ayr dosyalardr, inode numaralar
farkldr:
$ ls -i benikopyala benikopyaladi
8919 benikopyaladi 8901 benikopyala

3.15 mv
Simdi benikopyaladi dosyasn benitasidi olarak isimlendirmek icin mv komutunu kullanalm. Bu sefer
inode numaras ayn kalmakla birlikte bu inode numarasna sahip olan dosya ismi degismis olacaktr.
$ mv benikopyaladi benitasidi
$ ls -i benitasidi
8919 benitasidi

Tasnan (move) bir dosyann inode numaras, soz konusu dosya kaynak dosya ile ayn dosya siste-
minde bulundugu surece ayn kalr. Bu egitimin 3. bolumunde dosya sistemlerini daha detayl olarak
inceleyecegiz.

4 Linkler yaratmak ve dosyalar silmek


4.1 Kat baglantlar (hard links)
Daha once dizin girisleri ve inodelar arasndaki iliskiden bahsederken baglant terimini kullanmstk.
Aslnda Linux altnda iki tip baglant cesidi vardr. Daha once tartstgmz baglantlar kat baglantlard.
Sistem uzerindeki herhangi bir inode herhangi bir miktarda kat baglantya sahip olabilir, ve tum kat
baglantlar ortadan kalkana kadar da sistem uzerinde var olmaya devam edecektir. Yeni kat baglantlar
ln komutu kullanlarak yaratlabilir:
$ cd /tmp
$ touch ilklink
$ ln ilklink ikincilink
$ ls -i ilklink ikincilink
8940 ilklink 8940 ikincilink

4.2 Kat baglantlar, devam


Gorebildiginiz gibi, kat baglantlar bir dosyay iliskilendirmek icin inode seviyesinde calsmaktadr. Linux
sistemlerde, kat baglantlarn baz kstlamalar vardr. Bir kstlama, sadece dosyalara kat baglantlar
yapmaya izin verir, dizinlere vermez. . ve .. sistem tarafndan yaratlms dizinlere iliskilenmis kat
baglantlar olmasna ragmen bu dogrudur. root kullancs bile olsanz, kendinize ait dizinlere iliskilenmis
yeni kat baglantlar yaratamazsnz. Kat baglantlarn ikinci kstlamas da dosya sistemleri arasnda gecis
yaplamamasdr. Bunun anlam, / ve /usr dizinleri farkl dosya sistemlerinda bulunuyorsa /usr/bin/bash
dizininin icinde /bin/bash dizininin icindeki bir dosyaya kat baglant yapamazsnz.

4.3 Sembolik baglantlar


Pratikte, sembolik baglantlar kat baglantlardan cok daha sk kullanlrlar. Sembolik baglantlar ozel
bir tip dosya olup baska bir dosyaya dogrudan inode uzerinden degilde ismi ile iliskilenirler. Sembolik
baglantlar bir dosyann silinmesine engel olmazlar, hedef dosya ortadan kaybolursa, sembolik baglant
kullanlamaz hale gelir ya da krlr.

8
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

4.4 Sembolik baglantlar, devam


Bir sembolik baglant ln komutuna -s parametresi verilerek yaratlabilir.

$ ln -s ikincilink ucunculink
$ ls -l ilklink ikincilink ucunculink
-rw-r--r-- 2 knoppix knoppix 0 2003-03-25 16:39 ilklink
-rw-r--r-- 2 knoppix knoppix 0 2003-03-25 16:39 ikincilink
lrwxrwxrwx 1 knoppix knoppix 10 2003-03-25 16:40 ucunculink -> ikincilink

ls -l cktsnda sembolik baglantlar normal dosyalardan uc sekilde ayrdedilebilir. Birincisi, bu cktdaki


ilk sutun dosyann bir sembolik baglant oldugunu belirtmek icin l karakterini farkedebilirsiniz. Ikincisi,
sembolik baglantnn boyutu iliskilendigi hedef dosyasnn karakter saysn verir (yukardaki ornekte
ikincilink). Ucuncusu, son kolon hedef dosyann ismini goruntuler.

4.5 Sembolik Baglantlar, Ayrntlar


Sembolik baglantlar genelde kat baglantlardan daha esnektir. Dizinler de dahil olmak uzere herhangi bir
cesit dosya sistemi nesnesi icin sembolik baglant yaratmanz mumkundur. Ayrca, sembolik baglantlarn
yurutulmesi yollara bagl oldugu icin, mukemmel bir sekilde baska bir dosya sistemi uzerinde yer alan
nesneye de sembolik baglant olusturabilirsiniz. Fakat bu durum da sembolik baglantnn anlaslmasn
biraz zorlastrabilir.

4.6 Sembolik Baglantlar, Ayrntlar


/tmp isimli dizin altnda, /usr/local/bin isimli dizine sembolik baglant yaratmak istedigimiz bir durum
dusununuz. Bu durumda yazmamz gereken:

$ ln -s /usr/local/bin bin1
$ ls -l bin1
lrwxrwxrwx 1 knoppix knoppix 14 2003-03-25 16:42 bin1 -> /usr/local/bin

Ya da alternatif olarak:

$ ln -s ../usr/local/bin bin2
$ ls -l bin2
lrwxrwxrwx 1 knoppix knoppix 16 2003-03-25 16:43 bin2 -> ../usr/local/bin

4.7 Sembolik Baglantlar, Ayrntlar


Gordugunuz gibi, her iki sembolik baglant da ayn dizini gostermektedir. Fakat, eger ikinci sembolik
baglant baska bir dizin icerisine tasnrsa, bu baglant bagl yol yuzunden krlms (broken) olacaktr.

$ ls -l bin2
lrwxrwxrwx 1 knoppix knoppix 16 2003-03-25 16:43 bin2 -> ../usr/local/bin
$ mkdir yenidir
$ mv bin2 yenidir
$ cd yenidir
$ cd bin2
bash: cd: bin2: Boyle bir dosya ya da dizin yok

/tmp/usr/local/bin dizini mevcut olmadg icin, artk bin2 baglants ile dizin degistiremeyiz. Bir
baska deyisle bin2 baglants artk krlmstr.

4.8 Sembolik Baglantlar, Ayrntlar


Bu yuzden bazen bagl yol bilgisi ile sembolik link yaratmaktan kacnmak iyi bir fikir olabilir. Fakat
sembolik linklerin kullansl oldugu bir cok durum da vardr. /usr/bin altnda yer alan bir program icin
baska bir isim yaratmak istediginiz bir ornegi ele alalm:

$ ls -l /home/knoppix/.Xdefaults
-rw-r--r-- 1 knoppix knoppix 893 2000-02-28 03:26 /home/knoppix/.Xdefaults

9
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

4.9 Sembolik Baglantlar, Ayrntlar


root kullancs olarak, .Xdefaults icin xd adnda baska bir isim yaratmak istiyor olabilirsiniz. Bu
ornekte, komut satrlarnda yer alan # isaretinden de ackca anlasldg gibi root haklarna sahibiz.

# cd /home/knoppix
# ln -s /home/knoppix/.Xdefaults xd

4.10 Sembolik Baglantlar, Ayrntlar


Bu cozum calsacak olsa da, her iki dosyay da /usr/local/bin altna tasmaya karar verdigimiz anda bu
durum problem yaratacaktr:

$ mv /home/knoppix/.Xdefaults /home/knoppix/xd /usr/local/bin

Cunku sembolik baglantmz icin tam yol kullanms durumdayz, xd halen /home/knoppix/.Xdefaults
dosyasn gostermektedir ki bu baglant artk mevcut degildir, yani krlmstr. Bagl yol ve tam yollarn her
ikisinin de cok faydal oldugu durumlar vardr. Sonucta kendi uygulamanza en uygun olan tipi secmeniz
gerekmektedir. Genellikle bagl yol ya da tam yol duzgun bir sekilde calsr. Bu durumda asagdaki ornek
calsacaktr:

$ cd /home/knoppix
$ ln -s .Xdefaults xd
$ ls -l xd
lrwxrwxrwx 1 knoppix knoppix 10 2003-04-11 14:54 xd -> .Xdefaults

4.11 rm
Artk cp, mv ve ln komutlarnn nasl kullanldgn biliyoruz, simdi nesneleri dosya sistemi uzerinde
kaldrmay ogrenmenin zaman gelmistir. Normalde bu islem rm komutuyla yaplmaktadr. Dosyay kal-
drmak icin basitce bunlar komut satrnda belirlemek gerekmektedir.

$ cd /tmp
$ touch dosya1 dosya2
$ ls -l dosya
$ ls -l dosya1 dosya2
-rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya1
-rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya2
$ rm dosya2
$ ls -l dosya1dosya2
ls: dosya2: Boyle bir dosya ya da dizin yok
-rw-r--r-- 1 knoppix knoppix 0 2003-03-25 16:53 dosya1

4.12 rmdir
Dizinleri kaldrmak icin iki seceneginiz var. Dizinin altndaki butun nesneleri yok edebilir ve sonra rmdir
kullanarak dizinin kendisini kaldrabilirsiniz:

$ mkdir benimdir
$ touch benimdir/dosya1
$ rm benimdir/dosya1
$ rmdir benimdir

4.13 rm ve dizinler
rm komutunun ozyineli seceneklerini kullanp rme belirttiginiz dizini icerdigi nesnelerle birlikte kaldr-
masn soyleyebilirsiniz:

$ rm -rf benimdir

Genel olarak bir dizin agacn kaldrmak icin tercih edilen rm -rf dir. rm -f kullanrken dikkatli olun,
cunku bunun gucu iyi veya kotu niyetli olarak kullanlabilir.

10
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

5 joker karakterler, Giris


5.1 Joker karakterler (wildcards), Giris
Gunluk Linux kullanmnda cok defa bir operasyonu tek seferde birden fazla nesne icin calstrmak iste-
yebileceginiz (rm gibi) durumlarla karslasabilirsiniz. Boyle durumlarda, asagdaki gibi butun dosyalar
komut satrna yazmak cok gereksizdir:

$ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8

5.2 Joker karakterler, Giris, devam


Bu problemi cozmek icin, Linuxun kendi icinde yer alan joker karakter desteginin getirdigi avantajdan
yararlanabilirsiniz. Ayn zamanda (tarihsel nedenlerden dolay) globbing olarak da adlandrlan bu
destek, joker karakter modelini kullanarak tek seferde birden fazla dosyay belirlemenize olanak saglar.
Bash ve diger Linux komutlar joker karakter modeline bakarak ve dosya sistemi uzerinde bu modele uyan
dosyalar bularak komutu yorumlar. Bu durumda diyelim ki bulundugumuz dizinde dosya1, dosya2, ... ,
dosya8 isimli dosyalar varsa bu dosyalar asagdaki sekilde yok edebilirsiniz:

$ rm dosya[1-8]

Ya da daha basitce ismi dosya ile baslayan butun dosyalar yok etmek istediginizde asagdaki gibi
yazabilirsiniz:

$ rm dosya*

5.3 Uyusmazlklar (non-matches) Anlamak


Veya /etc icinde yer alan ve ismi g ile baslayan tum nesneleri listelemek istediginizde asagdaki gibi
yazabilirsiniz:

$ ls -d /etc/g*
/etc/gateways /etc/gnome-vfs-mime-magic /etc/gshadow
/etc/gconf /etc/gpm-root.conf /etc/gtansrc
/etc/gdm /etc/grep-dctrl.rc /etc/gtk
/etc/ggi /etc/groff /etc/gtk-2.0
/etc/gimp /etc/group /etc/guid-resolv.conf
/etc/gnome /etc/group.org
/etc/gnome-vfs-2.0 /etc/gs.Fontmap

Peki ya acaba herhangi dosya sistemi nesnesi ile uyusmayan bir yol belirlendiginde ne olacaktr?
Asagdaki ornekte, /usr/bin altnda yer alan, asdf ile baslayan ve jkl ile biten butun dosyalar listelemek
istiyoruz:

$ ls -d /usr/bin/asdf*jkl
ls: /usr/bin/asdf*jkl: Boyle bir dosya ya da dizin yok

5.4 Uyusmazlklar Anlamak, devam


Bu durumu soyle acklayabiliriz. Normalde mevcut dosya sisteminde yer alan bir ya da daha fazla nesne ile
uyusan bir model belirledigimizde kabuk, yazdgmz modeli her uyusan nesne boslukla ayrlacak sekilde
listeler. Fakat model herhangi bir nesne ya da nesnelerle uyusmuyorsa, kabuk ifadeyi oldugu gibi brakr.
Ve sonucta ls, /usr/bin/asdf*jkl dosyasn bulamaz ve hata verir. Buradaki kural sudur: Kullanlan model,
sadece modelin belirledigi nesne ya da nesneler sistemdeki nesnelerle uyusuyorsa aclmaktadr.

5.5 Joker karakter sozdizimi: *


Artk joker karakterlerin nasl calstgn anladgmza gore, biraz da joker karakterlerin sozdizimine goz
atalm. joker karakterler arasnda birkac ozel karakter kullanabilirsiniz; iste bunlardan bir tanesi:

11
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Yldz (asterix) * isareti sfr veya daha fazla karakterle eslesecektir. Bunun anlam * olan yere herhangi
bir sey gelebilecegidir. Ornekler:
/etc/g* belirtimi /etcnin altnda g ile baslayan tum nesnelerle eslesir.
/tmp/my*1 beliritim /tmpnin altnda my ile baslayan ve 1 ile biten tum nesnelerle eslesir.

5.6 Joker karakter sozdizimi: ?


?

Soru isareti ? herhangi bir tek karakterle eslesir. Ornekler:


dosyam? belirtimi dosyam ile baslayp bir tane daha karakter iceren nesnelerle eslesir.
/tmp/notlar?txt belirtimi hem /tmp/notlar.txt, hem /tmp/notlar txt dosyasyla eslesir, eger mev-
cutlarsa.

5.7 Joker karakter sozdizimi: []


[]

Bu joker karakterler ? ile benzerdir, ancak daha fazla kesinlikte ayrm yapma sansn verir. Bu joker
karakterleri kullanmak icin, [] arasnda eslemek istediginiz tum karakterleri koymalsnz. Sonucta elde
edilen eslesme bu karakterlerin herhangi birinin tek eslesmesini verecektir. - (eksi) isaretini bir aralk
vermek icin kullanabilirsiniz, hatta birden fazla aralg birlikte kullanabilirsiniz. Ornekler:
dosyam[12] belirtimi dosyam1 ve dosyam2 ile eslesecektir. Wildcard, calslan dizindeki en bu dos-
yalardan en az bir tanesi mevcut olacak sekilde genisletilecektir.
[Cc]hange[Ll]og belirtimi Changelog, ChangeLog, changeLog, ve changelog ile eslesecektir. Gordu-
gunuz gibi, koseli parantez joker karakterlerini kullanmak kucuk / buyuk harf eslesmelerindeki
kombinasyonlar yakalamak icin faydal olacaktr.
ls /etc/[0-9]* komutu /etc nin altnda rakamla baslayan tum dosyalar listeler.
ls /tmp/[A-Za-z]* komutu /tmp nin altnda kucuk ya da buyuk harfle baslayan tum dosyalar
listeler.

5.8 Joker karakter sozdizimi: [!]


[!]

[!] yaps [] yapsna benzemektedir. Ancak bu sefer [] parantezde yer alan karakterle eslestirme yerine,
parantezler icerisinde bulunmayan karakterler ile eslestirme yaplmaktadr.
Ornekler:
rm dosyam[!9]

bu komut ismi dosyam9 olan dosya dsndaki tum dosyalar yok eder.

5.9 Joker karakter ile ilgili uyarlar


Burada joker karakter kullanrken dikkat edilmesi gereken baz noktalara deginecegiz. Bash wildcard ile
ilgili karakterler (?, [, ], *) yazldg zaman buna gore ozel bir islem yapacagndan, bir komuta para-
metre gecirirken bu karakterler kullanlacaksa dikkat edilmelidir. Ornegin, [fo]* ifadesini iceren bir dosya
yaratmak istedigimizde asagdaki yazl olan komut yapmak istedigimiz seyi gerceklestirmeyecektir:
$echo [fo]* > /tmp/yenidosyam.txt

Eger [fo]* modeli, dizin icerisinde herhangi bir dosya ile eslesiyorsa, bu durumda /tmp/yenidosyam.txt
dosyas icerisinde gormeyi beklediginiz [fo]* ifadesi yerine bu eslesen dosyalar goreceksiniz. O halde
cozum nedir? Bunun icin gerekli cozumlerden birisi karakterlerinizi tek trnak icerisinde yazmanzdr. Bu
yaklasm, kabuga bu karakterler uzerinde hic bir joker karakter islemi yapmamas gerektigini anlatr.
$echo [fo]* > /tmp/yenidosyam.txt

12
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

5.10 Joker karakter ile ilgili uyarlar, devam


Bu yaklasm kullandgnzda yeni dosyanz beklediginiz gibi [fo]* karakter dizimini icerecektir. Alternatif
olarak, ters bolu (backslash) kullanarak karakterlerinizin bash icin, joker karakter yerine normal karakter
anlamna gelmesini saglayabilirsiniz. (escape characters)
$ echo \[fo\]\* > /tmp/yenidosyam.txt

Yukarda anlatlan her iki yaklasmda ayn sekilde calsacaktr. Ters bolu (backslash) karakterinin bu
sekilde kullanmndan da bahsettigimize gore, eger karakter olarak backslash (\) kullanmak istiyorsanz
bunu tek trnak icinde ya da \\seklinde yazabileceginizi soyleyebiliriz.

5.11 Tek Trnak ile Cift Trnagn Kyaslanmas


Cift trnagn da tek trnakla ayn sekilde calsacagn bilmelisiniz, fakat sunu da belirtmek gerekir ki cift
trnak tek trnaga benzer bir sekilde calssa da kabugunu baz snrl genisletme islemlerine izin verir. Bu
yuzden, yukarda da gosterilen joker karakter olarak da anlaml ifadeleri komut olarak kullanacaksanz
en iyi secim tek trnak olacaktr. Eger joker karakter genisletmesine iliskin daha ayrntl bilgi edinmek
istiyorsanz komut satrnda man 7 glob yaznz. Trnak kullanmna iliskin daha fazla bilgi edinmek
istiyorsanz komut satrnda man 8 glob yazarak QUOTING baslkl bolumu okuyunuz.

6 Duzenli Ifadeler
6.1 Duzenli ifade nedir?
Duzenli ifadeler (regex veya regexp de denir) yaz kalplarn ifade etmek icin kullanlan ozel bir
bicimdir. Linux sistemlerinde, arama ve degistirme islerinde oldugu kadar yaz kalplarnn bulunmasnda
da duzenli ifadeler kullanlr.

6.2 Glob kyaslamas


Duzenli ifadelere bakarken duzenli ifade sozdiziminin (sentaksnn) onceki egitimdeki (bu bolumun so-
nundaki Kaynaklar baslgnn altndaki Bolum 1e bakn) dosya ismi aclm (globbing) kurallarna ben-
zedigini dusunebilirsiniz. Ancak sakn bunu sizi aldatmasna izin vermeyin; bu iki kavram ancak ve ancak
cok yuzeysel olarak birbirlerini andrrlar. Duzenli ifadeler de dosya ismi aclm kurallar da her ne kadar
baslangcta benzer gibi gorunseler de aslnda cok farkl kurallara sahip ve farkl durumlarda kullanlan
iki sistemdir.

6.3 Basit bir dizi parcas


Uyarmz yaptktan sonra duzenli ifadelerin en basit turune bakalm, basit dizi parcas. Bunun icin
grep komutunu kullanacagz. Bu komut bir dosyann icerigini tarayp belli bir duzenli ifade kalbna uyan
ksmlar bulur. grep, duzenli ifade kalbna uyan her satr basar ve buna uymayan satrlar da gormezden
gelir:
$ grep bash /etc/passwd
root:x:0:0:root:/home/root:/bin/bash
knoppix:x:1000:1000:Knoppix User:/home/knoppix:/bin/bash

Yukarda, grep programna ilk parametre olarak bir duzenli ifade gecildigini ve ikinci parametre olarak
bir dosya ismi verildigini gorebilirsiniz. Grep /etc/passwd dosyasndaki her satr okur bash olarak verilmis
basit karakter dizi parcasnn o satrda mevcut olup olmadgna, baska bir deyisle o satrn kendisine verilen
duzenli ifade kalb ile eslesip eslesmedigine bakar. Eger bir eslesme soz konusu olursa ilgili satr basar,
olmazsa bir sonraki satra gecer

6.4 Basit karakter dizisi parcasn anlamak


Genellikle eger belli bir karakter dizisini aryorsanz bunu herhangi bir ozel karakter kullanmadan
oldugu gibi yazabilirsiniz. Ancak ve ancak aradgnz karakter dizisinin icinde +, ., *, [, ], ve karakterle-
rinden biri ya da birkac var ise o zaman bunlar trnak icine almanz ve bunlardan once tersbolu karakteri
basmanz gerekir. Birkac basit ornege daha bakalm:

13
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

/tmp (/tmp karakter dizisini arar)

[kutu] ([kutu] karakter dizisini arar)

komik (*komik* karakter dizisini arar)

ldso (ld.so karakter dizisini arar)

6.5 Metakarakterler
Duzenli ifadeler ile calsrken yukardaki orneklerde inceledigimiz aramalardan cok daha karmask arama-
lar metakarakterleri kullanarak gerceklestirebilirsiniz. Bu metakarakterlerden biri . (nokta) karakteridir
ve bu herhangi bir karakter anlamna gelir:

$ grep dev.hda /etc/fstab


/dev/hda1 swap swap defaults 0 0
/dev/hda2 /mnt/hda2 auto noauto,user,exec 0 0

Bu ornekte gordugunuz gibi programn /etc/fstab dosyasna bakarak urettigi cktda dev.hda gibi bir
karakter dizisi mevcut degildir. Ancak grep programnn aradg dev.hda karakter dizisi degil dev.hda
kalb idi. Hatrlarsanz . herhangi bir karakter anlamna geliyordu. Gordugunuz gibi . metakarakteri
islevsel olarak komut satrndaki dosya ismi aclm mekanizmasndaki ? metakarakterine benzemektedir.

6.6 [] Kullanm
Eger . sembolunu kullanarak yaptgmzdan daha ozel bir eslesme isteseydik [ ve ] sembollerini (koseli
parantez karakterleri) kullanarak belli bir karakter kumesini gosterebilirdik:

$ grep dev.hda[10] /etc/fstab


/dev/hda1 swap swap defaults 0 0

Gordugunuz gibi bu sozdizim kural da tpk dosya ismi aclmlarndaki [] ozelligine benzemektedir.
Iste duzenli ifadelerle ilgili dikkat etmeniz gereken noktalardan biri daha: Sozdizimi olarak benzer gorunen
ama birebir ayn olmayan baz kurallar duzenli ifadeleri ogrenmeyi guclestirebilir.

6.7 [] Kullanm
Koseli parantezlerin anlamn [ karakterinden hemen sonra bir karakteri koyarak tersine cevirebilirsiniz.
Bu durumda koseli parantezlerin icindeki karakterler degil de onlarn dsnda geriye kalan diger karakter-
lerden herhangi biri yakalanr. Bu arada lutfen dikkat edin: duzenli ifadelerde [] kullanrken dosya aclm
kurallarnda [!] kullanyorduk:

$ grep dev.hda[^10] /etc/fstab


/dev/hda2 /mnt/hda2 auto noauto,user,exec 0 0

6.8 Farkllasan sozdizimi


Koseli parantezler icindeki sozdiziminin farkl olduguna dikkatleri cekmekte fayda var. Mesela koseli pa-
rantez icinde bir . karakteri yazarsanz bu gercekten de nokta karakterini yakalamak istediginizi gosterir
tpk yukardaki orneklerde 1 ve 2 karakterlerinin eslesmesinde oldugu gibi. Koseli parantezlerin dsnda
ise . nokta karakteri herhangi bir karakterin yerine gecer ve basna
karakteri gelmedigi surece ozel olarak nokta karakterinin yakalanmasn zorunlu klmaz. Bundan fayda-
lanarak /etc/fstab dosyasnda dev.hda iceren tum satrlar su komut ile bulabiliriz:

$ grep dev[.]hda /etc/fstab

Alternatif olarak soyle de yazabilirdik:

$ grep "dev\.hda" /etc/fstab

Her iki duzenli ifade de /etc/fstab dosyasndaki herhangi bir satr ile eslesmeyecektir.

14
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

6.9 * metakarakteri
Baz metakarakterler kendi baslarna herhangi bir sey ile eslesmezler ancak bunun yerine kendilerinden
once gelen karakterin anlamn degistirirler. Bunlardan biri de * (yldz) karakteridir ve kendinden once
gelen karakterin sfr ya da daha cok tekrar eden seklini yakalar. Birkac ornege bakacak olursak:

ab*c (abbbbcyi yakalar ama abqcyi yakalamaz)

ab*c (abcyi yakalar ama abbqbbcyi yakalamaz)

ab*c (acyi yakalar ama cbayi yakalamaz)

b[cq]*e (bqeyi yakalar ama ebyi yakalamaz)

b[cq]*e (bccqqeyi yakalar ama bcccyi yakalamaz)

b[cq]*e (bqqcceyi yakalar ama cqeyi yakalamaz)

b[cq]*e (bbbeeeyi yakalar)

.* (herhangi bir karakter dizisini yakalar)

foo.* (foo ile baslayan herhangi bir karakter dizisini yakalar)

ac satr ab*c regex ile eslesir cunku * metakarakteri kendisinden once gelen ifadenin sfr defa tekrar
etmesine (yani hic bulunmamasna) izin verir. Sunu da eklemek gerekir ki * metakarakteri temel olarak
* glob karakterinden daha farkl bir sekilde yorumlanmaktadr.

6.10 Satr Bas ve Satr Sonu


Burada ayrntl olarak inceleyecegimiz ve srasyla satr bas ve satr sonunu ifade eden son metakarakter-
ler ve $ metakarakterleridir. Duzenli ifadenizin en basnda metakarakterini kullanarak modelinizin satr
basnda bulunmasn zorlayabilirsiniz. Asagdaki ornekte # karakteri ile baslayan herhangi bir satrla
eslestirme yapmak icin # duzenli ifadesini kullanyoruz:

$ grep ^# /etc/apt/sources.list
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.

6.11 Tam Satr Duzenli Ifadeler


ve $ metakarakterleri tum satr ile eslestirme yapmak icin birlikte kullanlabilir. Ornegin, asagdaki
ornekte yer alan duzenli ifade icerisinde herhangi bir sayda diger karakterlerin yer aldg, # ile baslayan
ve . karakteri ile sonlanan bir satrla eslestirmeyi saglayacaktr:

$ grep ^#.*\.$ /etc/fstab


# CDROMs are managed through the apt-cdrom tool.

Yukardaki ornekte, $ karakterinin kabuk tarafndan yorumlanmasn engellemek icin tum ifadeyi tek
trnak karakterleri arasnda yazdk. Tek trnak olmasayd, daha grep yorumlamadan $ karakteri duzenli
ifade icerisinden yok olacakt.

7 FHS ve dosyalar bulmak


7.1 Dosya Sistemi Hiyerarsi Standard
Dosya Sistemi Hiyerarsi Standard linux sistemi uzerindeki bir dizinin planlamasn belirleyen bir bel-
gedir. D.S.H.S, dagtm-bagmsz yazlm gelistirmeyi daha basit hale getirmek icin ortak bir planlama
saglamak amacyla ortaya atlmstr. D.S.H.S asagdaki dizinleri belirlemektedir. (Direk olarak D.S.H.S
spesifikasyonundan alnmstr):

/ (kok -root- dizini)

15
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

/boot (acls yukleyiciye -boot loader- ait statik dosyalar)

/dev (aygt dosyalar)

/etc (uzerinde calslan -host- makinaya ait sistem konfigurasyonu)

/lib (paylaslan temel kutuphaneler ve cekirdek modulleri)

/mnt (bir dosya sistemini gecici olarak baglamak icin baglant noktas)

/opt (Sonradan eklenebilen -add-on uygulama yazlm paketleri)

/sbin (gerekli ikili/calsabilir -binary- sistem dosyalar)

/tmp (gecici dosyalar)

/usr (ikincil hiyerarsi)

/var (degisken bilgiler)

7.2 Iki Bagmsz D.S.H.S Kategorisi:


D.S.H.S planlama belirlemesi iki bagmsz dosya kategorisi oldugu fikrini temel alr; paylaslabilir -
paylaslamaz, ve degisken - statik. Paylaslabilir bilgi ana makinalar (hosts) tarafndan paylaslabilir
ancak paylaslmayan bilgi verilen ana makinaya ozgudur (konfigurasyon dosyalar gibi). Degisken bilgi
duzenlenebilir ve degistirilebilirken statik bilgi degistirilemez (fakat bu kural sistem kurulumu ve bakm
icin gecerli degildir.)
Asagdaki tablo, bu kategoriler icine girebilecek dizin ornekleri ile bu 4 olas kombinasyonu ozetlemek-
tedir. Yine bu tablo da D.S.H.Sden alnmstr.

+---------+-----------------+-------------+
| | shareable | unshareable |
+---------+-----------------+-------------+
|static | /usr | /etc |
| | /opt | /boot |
+---------+-----------------+-------------+
|variable | /var/mail | /var/run |
| | /var/spool/news | /var/lock |
+---------+-----------------+-------------+

7.3 /usr dizinindeki ikincil hiyerarsi


/usr altnda, root dosya sistemine cok benzeyen ikincil bir hiyerarsi goreceksiniz. Makina ackken /usr
dizinin olmas gerek sart olmadgndan bu dizin bir ag uzerinde paylaslabilir (paylaslabilir) ya da bir
CD-ROM icinden baglanabilir (statik). Bir cok Linux kurulumunda /usr dizinin paylasm kullanlmasa
da root daki birincil hiyerarsi ile /usr deki ikincil hiyerarsi arasndaki fark gozetmenin faydasn alglamak
cok onemlidir.
Burada D.S.H.Ssi ile ilgili soylenecekler bu kadardr. Dokumann kendisi oldukca kolay anlaslr
oldugundan daha ayrntl bilgi icin kullanabilirsiniz. Eger dokuman okursanz Linux D.S.H.Ssi hakknda
daha bir cok sey ogreneceginizin kesin oldugunu soyleyebiliriz.

7.4 Dosyalar bulmak


Linux sistemleri iclerinde yuzlerce dosya barndrmaktadr. Her ne kadar bu dosyalarn yerlerini kaybet-
meyecek kadar usta olsanz bile, buyuk bir ihtimalle bir tanesini bulmak icin arasra yardma ihtiyac duya-
caksnz. Linuxte dosyalar bulmak icin birkac tane farkl arac yer almaktadr. Asagdaki konu baslklar
bu araclar gostermekte ve isiniz icin gerekli olan dogru arac bulmanza yardmc olmaktadr.

16
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

7.5 PATH
Bir program komut satrnda calstrdgnzda, kabuk aslnda bir grup dizin arasnda yazdgnz komutu
aramaktadr. Ornegin, ls yazdgnzda, kabuk gercekte bu komutun /usr/bin altnda yer aldgn bilemez.
Onun yerine dizinlerin tutuldugu ve birbirlerinden iki nokta ile ayrldg PATH cevre degiskenine basvurur.
PATHin icinde yazl olan degeri gormek icin asagdaki gibi yazabiliriz:

$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:
/usr/local/sbin:/usr/local/bin:/usr/games:.

PATH degiskeninin sahip oldugu bu degere gore (sizdeki degiskenin degeri farkl olabilir, kabuk yazlan
ls komutu icin oncelikle /usr/local/bin daha sonra /usr/bin altnda arama yapacaktr. Buyuk bir ihtimalle
ls /usr/bin altnda yer almaktadr, bu yuzden kabuk burada komut arama islemini bitirecektir.

7.6 PATHi duzenlemek


Elemanlar atayarak kendi PATH degiskeninizi degistirebilirsiniz:

$ PATH=$PATH:~/bin
$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:
/usr/local/sbin:/usr/local/bin:/usr/games:.:/home/knoppix/bin

Ayrca, her ne kadar mevcut olan PATH degiskenini kullanmak kadar kolay olmasa da PATH degiskeni
icerisinden baz elemanlar silmeniz de mumkundur. Bunun icin en iyi yol, olmasn istediginiz yeni PATH
degerinin yazmaktr:

$ PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/knoppix/bin

7.7 which hakknda her sey


Aradgnz programn PATH ile verilen dizinlerden birinde olup olmadgn which komutu ile bulabilirsiniz.
Ornegin, asagdaki komut ile Linux sistemimizin sagduyuya sahip olup olmadgn sorgulayabiliriz:

$ which sagduyu

Asagdaki ornekte ise ls komutunun nerede bulundugunu gorebiliriz:

$ which ls
/usr/bin/ls
"which -a"

Son olarak -a secenegine dikkat etmelisiniz. Bu secenek kullanldgnda which komutu PATH degiske-
ninde tanml tum dizinlerde aradgnz programn olup olmadgn gosterir:

$ which -a ls
/bin/ls
whereis

Eger bir programn yerini ogrenmek dsnda onunla ilgili daha cok bilgiye erismek istiyorsanz whereis
komutunu denemelisiniz:

$ whereis ls
ls: /bin /bin/ls /usr/share/man/man1/ls.1.gz

Buradan goruruz ki ls program iki dizinde bulunmaktadr, /bin and /usr/bin. Buna ek olarak
/usr/share/man dizininde de ls ile ilgili bir man sayfas oldugu bilgisini ediniriz. man ls yazdgnzda
karsnza gelen sayfa yukarda belirtilen sayfadr. whereis ayn zamanda kaynak arama, alternatif arama
yollar tanmlama ve srads girdileri arama gibi ozelliklere de sahiptir. Detayl bilgi icin lutfen whereis
man sayfasn inceleyin.

17
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

7.8 find
find alet cantanzdaki araclardan biridir. find komutu ile artk sadece program dosyalar ile snrl de-
gilsiniz, her turlu dosyay cok cesitli kriterlere gore arayabilirsiniz. Ornegin /usr/share/doc dizini ve alt
dizinlerinde README dosyasn bulmak icin su komutu vermeniz yeterlidir:

$ find /usr/share/doc -name README


/usr/share/doc/aalib1/README
/usr/share/doc/adduser/examples/README
/usr/share/doc/afio/README

7.9 find ve joker karakterler


-name parametresine deger gecerken dosya aclmndaki (glob) joker karakterleri kullanabilirsiniz ancak
bu durumda onlar cift trnak icine almanz veya onlerine ters bolu (backslash) koymanz gerekir (ki bash
tarafndan aclmayp find komutuna olduklar gibi gonderilebilsinler). Ornegin uzantya sahip README
dosyalarn bulmak icin su komutu verebiliriz:

$ find /usr/share/doc -name README\*


/usr/share/doc/LANG/fr/xtel/README_IMINITEL.txt.gz
/usr/share/doc/a2ps/README.gz
/usr/share/doc/aalib1/README

7.10 find ile kucuk buyuk harf ayrm yapmadan aramak


Elbette arama yaparken buyuk kucuk harf ayrm yapmak istemeyebilirsiniz:

$ find /usr/share/doc -name [Rr][Ee][Aa][Dd][Mm][Ee]*

Veya daha basit olarak:

$ find /usr/share/doc -iname readme\*

Gordugunuz gibi -iname secenegi buyuk kucuk harf ayrmn ortadan kaldrr.

7.11 find ve duzenli ifadeler


Eger duzenli ifadelere alsksanz -regex secenegini kullanarak belli bir kalpla eslesecek sekilde dosya
isimlerini arayabilirsiniz. -iname secenegine benzer sekilde -iregex secenegi ile de buyuk kucuk harf ayrm
yaplmasn engelleyebilirsiniz.

7.12 find ve turler


-type secenegi ile belli tipte dosyalar uzerinden arama yapabilirsiniz. Bu secenege gecebileceginiz arguman-
lar sunlardr: b (blok cihaz), c (karakter cihaz), d (dizin), p (isimlendirilmis boru), f (normal dosya),
l (sembolik baglant) ve s (soket). Ornegin /usr/bin dizinindeki vim sozcugunu iceren sembolik linkleri
aramak icin:

$ find /usr/bin -name *vim* -type l


/usr/bin/evim
/usr/bin/gvim
/usr/bin/gvimdiff
/usr/bin/rgvim
/usr/bin/rvim
/usr/bin/vimdiff

7.13 find ve mtimelar


-mtime secenegi dosyalar son guncelleme zamanlarna gore aramanz saglar. mtime secenegine verilen
deger 24-saatlik zaman periyodu formatndadr ve genellikle + (verilen zamandan sonra) veya - (verilen
zamandan once) ile kullanlr. Ornegin su senaryoya bir bakalm:

18
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ ls -l ?
-rw------- 1 root root 0 Jan 7 18:00 a
-rw------- 1 root root 0 Jan 6 18:00 b
-rw------- 1 root root 0 Jan 5 18:00 c
-rw------- 1 root root 0 Jan 4 18:00 d
$ date
Mon Jan 7 18:14:52 EST 2002

Son 24 saat icinde olusturulmus dosyalar arayabilirsiniz:

$ find . -name \? -mtime -1


./a

Veya icinde bulundugunuz 24 saatten once olusturulmus dosyalar arayabilirsiniz:

$ find . -name \? -mtime +0


./b
./c
./d

7.14 -daystart secenegi


Eger ek olarak -daystart secenegini de kullanrsanz zaman periyodlar 24 saat oncesinden degil gunun
baslama anndan baslar. Ornegin dun ve evvelki gun olusturulmus dosyalar listelemek icin:

$ find . -name \? -daystart -mtime +0 -mtime -3


./b
./c
$ ls -l b c
-rw------- 1 root root 0 Jan 6 18:00 b
-rw------- 1 root root 0 Jan 5 18:00 c

7.15 -size secenegi


-size secenegi dosyalar buyukluk kriterine gore aramanz saglar. Aksi belirtilmedigi surece -size secene-
gine 512-bytelk bloklar cinsinden buyukluk verildigi kabul edilir ancak bunun sonuna bir tak eklemek
isleri kolaylastrabilir ve daha dogal klabilir. Kullanabileceginiz taklar sunlardr: b (512-bytelk blok),
c (byte), k (kilobyte), ve w (2-bytelk sozcuk). Bunlara ek olarak + oneki ile verilen buyuklukten daha
buyuk dosyalar ve - oneki ile de daha kucuk dosyalar arayabilirsiniz. Ornegin /usr/bin dizini icinde boyu
50 bytetan kucuk olan dosyalar bulmak isterseniz:

$ find /usr/bin -type f -size -50c


/usr/bin/bison.yacc
/usr/bin/kdvi
/usr/bin/krdb
/usr/bin/pydoc2.1
/usr/bin/pydoc2.2
/usr/bin/rgrep
/usr/bin/texi2pdf

7.16 Bulunan dosyalarn islenmesi


Pekcok degisik kritere gore arayp buldugunuz onca dosya ile ne yapacagnz merak ediyor olmalsnz! find
komutu buldugu dosyalar uzerinde islem yapma kabiliyetine de sahiptir ve bunun icin -exec seceneginden
faydalanr. Bu secenek arguman olarak ; ile sonlandrlan ve calstrlabilir bir komut alr ve her {} gor-
dugu yere de bulmus oldugu dosya ismini koyarak ilgili komutu calstrr. Bunun anlamann en kolay yolu
su ornege bakmak:

$ find /usr/bin -type f -size -50c -exec ls -l {} ;


-rwxr-xr-x 1 root root 29 2002-04-04 12:29 /usr/bin/bison.yacc
-rwxr-xr-x 1 root root 30 2001-12-01 07:14 /usr/bin/kdvi
-rwxr-xr-x 1 root root 27 2000-09-24 14:46 /usr/bin/krdb
-rwxr-xr-x 1 root root 45 2002-07-29 22:39 /usr/bin/pydoc2.1

19
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

-rwxr-xr-x 1 root root 48 2002-07-29 23:19 /usr/bin/pydoc2.2


-rwxr-xr-x 1 root root 31 2001-11-28 17:36 /usr/bin/rgrep
-rwxr-xr-x 1 root root 36 2002-09-07 10:08 /usr/bin/texi2pdf

Gordugunuz gibi find komutu bir hayli guclu bir komuttur. UNIX ve Linuxun yllarca suren gelisti-
rilmesi boyunca bu komut da gelistirilmistir. find komutunun daha pek cok faydal secenegi vardr. Ilgili
man sayfasnda bunlar bulabilirsiniz.

7.17 locate
Simdiye dek which, whereis ve find komutlarn ele aldk. find calsrken biraz vakit gectigini farketmis-
sinizdir cunku uzerinde her dizine tek tek girip bakmak zorundadur. locate komutu ise bir veritabann
kullanarak isleri biraz hzlandrabilir. Bu komut yol isminin herhangi bir ksm ile eslesme yapabilir sadece
dosya ismine bakmak zorunda degildir. Ornegin:
$ locate bin/ls
/bin/ls
/bin/lspci
/sbin/lsmod
/sbin/lspci
/sbin/lspnp
/usr/bin/lsattr
/usr/bin/lsdev
/usr/bin/lsof
/usr/bin/lspgpot
/usr/bin/lss16toppm
/usr/sbin/lsof
/usr/sbin/lsusb

7.18 updatedb kullanm


Pekcok Linux sistemi periyodik olarak veritabann guncelleyen bir surec (process) calstrr. Eger siste-
miniz yukardaki komuta asagdaki gibi bir hata ile cevap verirse o zaman bir veritaban olusturmak icin
uptadedb komutunu calstrmanz gerekir:
$ locate bin/ls
locate: /var/spool/locate/locatedb: No such file or directory
$ su
Password:
# updatedb

updatedb komutunun isini tamamlamas uzun bir sure alabilir. Eger gurultucu bir harddiskiniz varsa
tum dosya sistemi indekslenirken basnz epey agryabilir.

7.19 slocate
Pek cok Linux dagtmnda locate komutu yerine artk slocate komutu kullanlmaktadr. Genellikle locate
isimli bir sembolik baglant oldugu icin hangisini kullanaym diye tereddut etmenize gerek yoktur. slocate
secure locate yani guvenli locate anlamna gelmektedir. Bu komut kullandg veritabannda dosya
ve dizin izinlerini de depolar ve boylece normal kullanclar erisim izninine sahip olmadklar dizine ba-
kamazlar. slocate komutunun kullanm sekli locate komutunda oldugu gibidir ancak ckt bilgisi komutu
calstran kullancya gore degisebilir.

8 Surec (process) Kontrolu


8.1 xeyes baslatmak
Surec kontrolunu ogrenmek icin once bir surec baslatalm:
$ xeyes -center red

xeyes penceresinin birden acldgn ve krmz gozlerin fareyi takip ettigini goreceksiniz. Bu arada bir
sey daha farkedeceksiniz: Komut satrna donmediginizi.

20
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

8.2 Sureci durdurmak


Komut satrna geri donebilmek icin Control-C tus kombinasyonuna basmalsnz (genellikle Ctrl-C veya
C seklinde gosterilir):

^C
$

bash komut satrna geri dondunuz ancak xeyes penceresi de kayboldu. Aslnda isi yapan surec tama-
men sonlandrlms, oldurulmus durumda. Control-C ile sureci oldurmek yerine Control-Z ile durdurabi-
lirdik:

$ xeyes -center red


^Z
[1]+ Stopped xeyes -center red
$

Simdi gene bash komut satrna dondunuz ama bu sefer xeyes penceresi durmas gereken yerde duru-
yor. Ancak fare ile oynarsanz goreceksiniz ki gozler sizi takip etmiyor artk, donup kalms durumdalar.
Eger xeyes penceresi uzerine baska bir pencereyi surukleyip sonra cekerseniz goreceksiniz gozler yeniden
cizilmiyor bile. Surec hicbir sey yapmyor su anda yani Durmus (Stopped) halde.

8.3 fg ve bg
Sureci durdurulmus olmaktan ckarmak ve yeniden calsr hale getirmek icin onu bash komutlarndan
biri olan fg komutu on plana cekebiliriz:

$ fg
xeyes -center red
^Z
[1]+ Stopped xeyes -center red
$

Simdi de yine bir bash komutu olan bg ile sureci arkaplanda calstralm:

$ bg
[1]+ xeyes -center red &
$

Harika! xeyes sureci su anda arkaplanda calsyor ve bizim de karsmza kullanabilecegimiz bir komut
satr geldi.

8.4 & Kullanm


Eger xeyes dogrudan arkaplanda calstrmak isteseydik (Control-Z ve sonra da bg kullanmak yerine),
xeyes komutunun sonuna & (ampersand) eklememiz yeterli olacakt:

xeyes -center blue &


[2] 4386

8.5 Birden cok sayda arkaplan sureci


Simdi arkaplanda bir krmz ve bir de mavi xeyes surecimiz var. Bunlar bash komutlarndan biri olan
jobs komutu ile listeleyebiliriz:

$ jobs -l

[1]- 4205 Running xeyes -center red &


[2]+ 4386 Running xeyes -center blue &

21
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Sol sutundaki saylar bash kabugunun bu surecleri baslatrken onlara atadg surec numaralardr. Iki
numaral surec (baska bir deyisle job) yannda bir + (art) sembolu vardr ve bu da surecin su anda
calsmaktan olan surec oldugunu gosterir yani fg komutunu verirseniz onplanda calsmaya baslayacak
olan surec budur. Tabi eger isterseniz numarasnn vererek baska bir sureci de onplana cekebilirsiniz. fg 1
komutu krmz xeyes surecini onplana cekecektir. Bir sonraki sutun ise surec IDsini yani pid numarasn
gosterir karsmzdaki listede (bunun gelmesini de jobs komutuna verdigimiz -l secenegine borcluyuz). Son
olarak her iki surec (job) da Running yani calsyor durumda ve bunlar baslatan komut satrlarn da
en sagda gorebilirsiniz.

8.6 Sinyallere giris


Surecleri oldurmek, durdumak ya da devam ettirmek icin, Linux isletim sistemi sinyal olarak bilinen
ozel bir iletisim sekli kullanr. Bir surece belli bir sinyal yollayarak o sureci sonlandrabilir, durdurabilir, ya
da baska seyler yapabilirsiniz. Aslnda Control-C, Control-Z, ya da fg, bg gibi komutlar kullandgnzda
yaptgnz tam da budur bash kabugunun belli bir surece belli bir sinyal gondermesini saglamaktasnzdr.
Bu sinyaller kill komutuna surec numaras (pid) verilerek de gonderilebilir:

$ kill -s SIGSTOP 4386


$ jobs -l
[1]- 4205 Running xeyes -center red &
[2]+ 4386 Durduruldu (sinyal) xeyes -center blue

Gordugunuz gibi kill komutu isminin cagrstrdg sekilde illa ki bir sureci oldurmek zorunda degildir.
-s secenegi kullanlarak kill komutunun bir surece herhangi bir sinyali gondermesi saglanabilir. Linux
sureclerine SIGINT, SIGSTOP ya da SIGCONT sinyallerinden biri gonderildiginde sras ile bunlar
sonlandrr, durdurur ya da devam ettirir. Bir surece yollayabileceginiz baska sinyal turleri de vardr;
bunlardan bazlar uygulamann ozelliklerine gore yorumlanacaktr. Belli bir surecin hangi sinyale kars
nasl tepki verecegini ogrenmenin en guzel yolu ilgili sureci baslatan komutun man sayfasna bakp oradaki
SIGNALS bolumunu okumaktr.

8.7 SIGTERM ve SIGINT


Eger bir sureci oldurmek (sonlandrmak) isterseniz pek cok seceneginiz vardr. Aksi belirtilmedigi surece
kill komutu SIGTERM sinyalini gonderir ve bu Control-C ile yollanabilen SIGINT sinyalinden farkl
olmakla birlikte benzer sonuc uretir:

$ kill 4205
$ jobs -l
[1]- 4205 Sonlandrld xeyes -center red &
[2]+ 4386 Durduruldu (sinyal) xeyes -center blue

8.8 Buyuk olum


Surecler hem SIGTERM hem de SIGINT sinyallerini dikkate almayp gormezden gelebilirler; bunu ya
bilerek ve isteyerek yaparlar ya da bir sekilde durmus veya taklmslardr. Bu gibi durumlarda bir balyoz
kullanmak gerekebilir ve devreye SIGKILL sinyali girer. Bir surec SIGKILL sinyalini gormezden gelemez:

$ kill 4386
$ jobs -l
[2]+ 4386 Durduruldu (sinyal) xeyes -center blue
$ kill -s SIGKILL 4205
$ jobs -l
[2]+ 4205 Surec durduruldu xeyes -center blue

8.9 nohup
Belli bir isi (sureci) baslattgnz terminal o isin kontrol terminali olarak adlandrlr. Baz kabuklar
ontanml olarak (bash degil) siz logout komutu ile terminalden cknca arkaplandaki islere SIGHUP
sinyalini yollayp onlarn sonlanmasna yol acarlar. Eger siz terminalden logout komutu ile cktgnzda
sureclerinizin bu sekilde sonlandrlmasn istemiyorsanz o zaman sureci baslatrken nohup secenegini
kullanmanzda fayda vardr:

22
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ nohup make &


$ exit

8.10 ps komutu ile surecleri listelemek


Yukarda kullandgmz jobs komutu icinde bulundugumuz mevcut bash oturumunda baslatlan surecleri
listeliyordu. Sisteminizdeki tum surecleri gormek icin kullanmanz gereken komut ise ps komutudur ve bu
komuta a ve x seceneklerini vermeniz gereklidir.

$ ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:04 init
2 ? SW 0:00 [keventd]
3 ? SWN 0:00 [ksoftirqd_CPU0]
4 ? SW 0:01 [kswapd]
5 ? SW 0:00 [bdflush]
6 ? SW 0:00 [kupdated]

Bu komutun ckts olan listenin ancak kucuk bir ksmn yukar yazdk cunku genellikle bu liste cok
daha uzun olur. Bu liste size makinann o anda ne yaptgnn bir fotografn verir ancak goz atlacak pek
cok veri vardr icinde. Eger ax seceneklerini kullanmadan ps komutunu calstracak olsaydnz sadece size
ait ve belli bir terminalin kontrolu altndaki surecleri gorurdunuz. ps x size tum surecleri gosterir, belli
bir terminal tarafndan kontrol edilmeyenler dahil. Eger ps a seklinde kullanms olsaydnz o zaman da
belli terminallere bagl ve herkese ait surecleri gorurdunuz.

8.11 Hem orman hem de agaclar gorebilmek


Her surec ile ilgili farkl bilgileri de listeleyebilirsiniz. forest (orman) secenegi surec hiyerarsisini gorme-
nizi ve sisteminizdeki bircok surecin arasndaki iliskiyi alglamanz saglar. Bir surec baska bir surec
baslattgnda bu yeni surece cocuk (child) surec denir. forest secenegi kullanlarak elde edilen bir ps
cktsnda ebeveyn surecler yani cocuk surecleri baslatan surecler solda gorunurken cocuk surecler de saga
dogru dallanacak sekilde listelenirler.

$ ps x --forest
PID TTY STAT TIME COMMAND
318 ? S 0:00 /bin/sh /etc/X11/xinit/xinitrc
444 ? S 0:00 \_ kwrapper ksmserver --restore
2932 ? S 0:00 kdeinit: kio_uiserver
495 ? S 0:00 /usr/bin/kdesud
493 ? S 0:00 kdeinit: kcookiejar
462 ? S 0:10 kdeinit: kicker

8.12 u ve l ps secenekleri
u ve l secenekleri a ve x seceneklerine eklenebilen seceneklerdir ve surecler hakknda daha cok bilgi
almanz saglarlar:

$ ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 237 0.0 0.4 3196 1168 tty1 S 10:21 0:00 /bin/bash -login
root 238 0.0 0.4 3196 1168 tty2 S 10:21 0:00 /bin/bash -login
root 239 0.0 0.4 3196 1168 tty3 S 10:21 0:00 /bin/bash -login
root 240 0.0 0.4 3196 1168 tty4 S 10:21 0:00 /bin/bash -login
root 3606 0.0 0.5 3128 1440 ttyp1 S 11:10 0:00 /bin/bash
knoppix 5054 0.5 0.8 3128 2096 ttyp0 S 11:30 0:00 /bin/bash
knoppix 5195 0.0 0.5 3508 1532 ttyp0 R 11:32 0:00 ps au

8.13 top kullanm


Eger kendinizi surekli ps komutunu calstrr ve neler olup bittigini anlamaya calsr durumda bulursanz
ihtiyacnz olan esas komut top komutudur. top komutu surekli guncellenen bir surec listesi basmann
yan sra ozet bilgi vermeyi de ihmal etmez:

23
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ top
11:34:16 up 1:13, 0 users, load average: 0.43, 0.21, 0.12
47 processes: 45 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 3.0% user, 1.8% system, 0.0% nice, 95.2% idle
Mem: 255680K total, 249136K used, 6544K free, 10624K buffers
Swap: 393552K total, 43852K used, 349700K free, 37780K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
309 root 14 0 204M 132M 6644 S 2.5 52.9 2:23 XFree86
5050 knoppix 11 0 11316 10M 9356 R 0.7 4.2 0:01 kdeinit
3849 knoppix 10 0 38532 36M 13612 S 0.5 14.7 0:45 kword
5282 knoppix 13 0 1016 1016 808 R 0.5 0.3 0:00 top
1 root 8 0 52 48 28 S 0.0 0.0 0:04 init
2 root 9 0 0 0 0 SW 0.0 0.0 0:00 keventd
3 root 19 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0
4 root 9 0 0 0 0 SW 0.0 0.0 0:01 kswapd
5 root 9 0 0 0 0 SW 0.0 0.0 0:00 bdflush

8.14 nice
Her surecin bir oncelik derecesi vardr ve Linux buna gore surecin calsma hzn ayarlar. Bir surecin
onceligini bu surecin isminin basna nice yazp baslatmak suretiyle ile ayarlayabilirsiniz:
$ nice -10 xmms /cdrom/Demos/Audio/opensource.ogg

Oncelik ayarna nice dendigi icin buna yuksek bir deger verdiginiz takdirde diger sureclere neza-
ket sergilediginizi, onlara CPU icin oncelik tandgnz hatrlamak zor olmayacaktr. Aksi belirtilmedigi
surece, surecler 0 oncelikli olarak baslarlar, yani yukarda oggnin 10 ile baslatlmas demek, oggnin
CPUya ne kadar ihtiyac olursa olsun onceligi diger sureclere tanmas ve boylece onlarn normal hzda
calstrlmasna izin vermesi demektir. Sureclerin nice derecesini ps ve top komutlarnn yukardaki
cktlarndaki NI sutununda gorebilirsiniz.

8.15 renice
Nice komutu, sadece calstrdgnz anda, bir komutun onceligini belirler. Eger calsmakta olan bir komu-
tun onceligini degistirmek isterseniz renice kullanmanz gerekir.
$ ps l 3849
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 3849 456 10 0 59556 44208 select S ? 1:02 kword
$ renice 10 3849
3849: eski oncelik 0, yeni oncelik 10
$ ps l 3849
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 3849 456 17 10 59556 44208 select SN ? 1:03 kword

9 Yaz isleme
Yonlendirme Bir komutun cktsn bir dosyaya yonlendirmek icin > operatorunu kullanrz, soyle ki:
$ echo "dosya" > kopyasi

Ckty yonlendirmeye ek olarak, oldukca guclu bir kabuk ozelligi olan pipe (boru)lar da kullanabiliriz.
Baglantlar kullanarak bir komutun cktsn digerine girdi olarak vermemiz mumkun. Su ornege bir bakn
$ echo "merhaba dunyali" | wc
1 2 16

karakteri soldaki komutun cktsnn sagdaki komuta girdi olarak verilmesini saglamaktadr. Yukar-
daki ornekte echo komutu merhaba dunyali cumlesini sonunda bir satr sonu ile birlikte basar. Normalde
bu cktnn terminalde gozukmesi lazm fakat yaptgmz baglant onu wc komutuna yonlendirdi ve boylece
satr, kelime ve karakter (bosluk ve satr sonu dahil) saylarn ogrendik. Bir boru ornegi Iste bir baska
ornek:

24
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ ls -s | sort -n

Bu durumda, ls -s normalde mevcut dizinin listesini her dosyann boyu dosya isminden once ge-
lecek sekilde terminal ekranna basacakken biz bu ckty borudan gecirip sort -nye yonlendirdigimiz icin
karsmza cktnn saysal olarak sralanms sekli gelmektedir. Ev (home) dizininizdeki buyuk dosyalar
bir baksta tespit etmek icin gercekten guzel bir yontem!
Asagdaki onekler biraz daha karsktr ancak boru mekanizmas ile ne kadar guclu ve becerikli islemler
gerceklestirilebildigini gostermeleri bakmndan faydaldr. Simdiye dek gormediginiz baz komutlarla
karslasabilirsiniz, bunun sizi yavaslatmasna lutfen izin vermeyin. Bunun yerine boru mekanizmasn
yani bir cktnn bir sonraki programa girdi olarak nasl gecildigini anlamaya odaklann. Boylece bun-
lardan gunluk Linux kullanmnzda bolca faydalanabilirsiniz. Skstrlmslar acan boru hatt Nomalde
skstrlms bir dosyay acmak ve arsivi cozmek icin sunu yaparsnz:

$ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar

Bu yontemin dezavantaj diskinizde skstrlmams bir ara dosya barndmasdr. tar yazlm dogrudan
standart girdiden okuyabildigi icin (yani buna parametre olarak illa ki diskteki bir dosyay gecmeniz
gerekmedigi icin) yukardaki sonucun aynsna soyle bir boru hatt kullanarak, daha pratik ve ekonomik
bir sekilde erisebiliriz:

$ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -

Vay canna! Skstrlms arsiv (tarball) dosyamz bir anda aclverdi ve arada ortaya ckan gecici bir
dosyaya da ihtiyac duymadk.

9.1 Daha uzun bir boru hatt


Bir baska ornege bakalm:

$ cat dosyam.txt | sort | uniq | wc -l

cat komut ile myfile.txt dosyasnn icerigini elde edip bunu sort komutuna girdi olarak veriyoruz.
sort komutu bu girdiyi alnca tum satrlar alfabetik olarak sralyor ve urettigi ckty boru uzerinden
uniq komutuna aktaryor ve bu program da tekrar eden satrlar iptal ediyor (yani birbirinin ayns olan
satrlardan sadece bir tane gorunuyor) ve bu sonucu wc -l komutuna veriyor. wc komutunu daha once
gormustuk, -l secenegi ile birlikte kullanldgnda bu komut sadece ve sadece satr saysn verir. Birkac
test dosyas olusturup bu boru hattnn etkilerini inceleyebilirsiniz.

9.2 Metin isleme kasrgas baslyor!


Simdi standart Linux metin isleme komutlarnn uzerinden frtna gibi gececegiz. Bu bolumde bir hayli
yogun bir icerik aktardgmz icin her komuta dair detayl bir suru ornek veremeyecegiz bu yuzden de
sizden buray okuduktan sonra ilgili komutlarn man sayfalarna bakmanz istiyoruz. Bunlar inceleyin ve
degisik seceneklerle oynayn, ogrenmenin en guzel yolu budur. Genel kural olarak bu komutlar kendisine
verilen metin dosyalarnn icerigini uygun sekilde isleyip ekrana basarlar, dosyann kendisine kalc olarak
mudahale etmezler. Bu frtna turundan sonra girdi ve ckt yonlendirmeye biraz daha detayl bakacagz.
Evet, tunelin ucundaki sg goreceksiniz :)

9.3 echo
echo kendisine verilen argumanlar terminale basar. -e secegini kullanrsanz escape dizisi olarak tabir
ettigimiz ozel karakter kombinasyonlarnn da duzgun olarak yorumlanmasn saglarsnz, misal: echo -e
foo
nfoo komutu ekrana once foo basar, bir satr asag iner baska bir deyisle yenisatr karakteri basar ve
sonra yine bir kez foo basar. -n secenegini kullanrsanz cktya en sonra otomatik olarak eklenen yenisatr
karakterinin baslmasn engelleyebilirsiniz.

25
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

9.4 cat, sort ve uniq


cat: cat komutu bir dosyann icerigini terminal ekranna basar. Bir boru hattna ilk girdiyi vermek icin
faydal bir komuttur, misal cat foo.txt vesaire vesaire.
sort: sort komutu komut satrnda kendisine belirtilen dosyann icerigini alfabetik olarak sralayp ba-
sar. Elbette sort komutu da boru uzerinden kendisine aktarlan girdiyi kabul edecek sekilde tasarlanmstr.
man sort ile bu komutun ne kadar farkl sralama isleri icin pratik sekilde kullanlabilecegini gorebilirsiniz.
uniq: uniq sralanms bir dosyay ya da boru hatt uzerinden kendisine yollanan veriyi alr ve bunun
icindeki birbirinin ayns olan satrlar ayklar.

9.5 wc, head, ve tail


wc: wc komut satrnda kendisine belirtilen dosyay (ya da boru hattndan gelen veriyi) okur ve bu
dosyann satr, sozcuk ve byte saysn ekrana basar. man wc ile detayl bilgi edinebilirsiniz.
head: head komutu bir dosyann ya da boru hattndan gelen verinin ilk on satrn basar. -n secenegi
ile kac satr baslacagn belirleyebilirsiniz.
tail: Bu komut bir dosyann ya da boru hattndan akan verinin son on satrn basar. -n secenegi ile
kac satr baslacagn belirleyebilirsiniz.

9.6 tac, expand ve unexpand


tac: tac da tpk cat komutu gibidir, su farkla ki okudugunu tersten basar. Yani son okunan satr ilk
olarak baslr, dosyann ilk satr ise en son baslr.
expand: expand komutu girdideki tab karakterlerini bosluk karakterine donusturur. -t secenegi ile tab
duraklarn belirleyebilirsiniz.
unexpand: unexpand girdideki bosluklar tab karakterine donusturur. -t secenegi ile tab duraklarn
belirleyebilirsiniz.

9.7 cut, nl ve pr
cut: cut komutu belli bir dosyadaki ya da girdideki karakterle ayrlms alanlar cekip ckarr.
nl: nl girdideki her satrn basna sra ile artan bir say ekler. Ozellikle program kaynak kodu turunden
dosyalara goz atarken ya da bunlarn cktsn alrken faydaldr.
pr: pr komutu bir dosyay sayfalara boler, yazc cktlarnda faydaldr.

9.8 tr, sed ve awk


tr: tr bir tur karakter donusturme aracdr, girdideki belli karakterleri cktdaki baska karakterlere tasvir
etmek icin kullanlr.
sed: sed cok guclu, veri aksn islemeye yonelik (stream-oriented) metin editorudur.
awk: awk kolay kullanml, satr tabanl bir metin isleme dilidir.

9.9 od, split, ve fmt


od: od komutu girdiyi alp sekizlik ya da onaltlk bicimde basar.
split: split komutu buyuk bir dosyay alp bunu kucuk dosyalara ayrr.
fmt: fmt paragraf kenarlar toplanacak sekilde paragraf yeniden bicimlendirir. Bu yetenek bircok text
editor icerisinde yer alsa bile bilinmesi gereken komutlardan bir tanesidir.

9.10 Paste, join, ve tee


paste: paste iki ya da daha fazla dosyay girdi olarak alr, giris dosyalarndan gelen ardsl satrlar birbiri
ardna ekler ve sonuc satrlarn ckt yapar. Text tablolar ve kolonlar yaratmak icin oldukca kullansldr.
join: join de paste komutuna benzese de tek bir satrda birlesecek seyleri eslestirmek icin, her girdi
satrnda bir alan kullanr.
tee: tee kendi girdisini hem dosyaya hem de ekrana basar. Bir seyin logunu tutmak ama ayn zamanda
ckty ekranda da gormek istediginizde bu komut gayet kullansl olabilir

26
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

9.11 Yonlendirme (redirection) Kasrgas


Bash komut satrlarnda kullanlan >a benzer olarak, bir dosyay komuta yonlendirmek icin < de kulla-
nabilirsiniz. Bir cok komuta girdi olmas icin komut satrlarnda dosya ad belirleyebilirsiniz. Fakat baz
komutlar sadece standart girdiden alnan girislerle calsmaktadr.
Bash ve diger kabuklar herefile kavramna destek verirler. Bu yontem sizin belli bir gozcu deger
ile sonlanms ve komut cagrmndan sonra gelen satrlarda bir komuta girdi belirtmenize olanak saglar.
Ornegin:
$ sort <<END
> elma
> armut
> muz
> END
armut
elma
muz

Bu ornekte, END ile sonlanan ve girdinin bittigini ifade eden kelimeyi ve bundan once de elma, armut
ve muz kelimelerini yazdk ve sort program bu girdinin sralanms sekli ile geri dondu.

9.12 >> Kullanm


>> kullanmnn << ile benzerlik gostereceginin dusunecek olasanz da aslnda bu ikisi birbirinden
farkldr. >> basitce ckty > nin yaptg gibi dosyaya yazmak yerine dosyann sonuna yazar. Ornegin:
$ echo merhaba > dosyam
$ echo oradakiler. > dosyam
$ cat dosyam
oradakiler.

O da ne! merhaba kelimesini kaybettik. Aslnda az once kastettigimiz:


$ echo merhaba > dosyam
$ echo oradakiler. >> dosyam
$ cat dosyam
merhaba
oradakiler.

idi. Bu daha iyi degil mi?

10 Sistem ve ag dokumantasyonu
10.1 Linux sistem dokuman tipleri
Temel olarak bir Linux sisteminde uc cesit dokuman kaynag vardr: klavuz sayfalar (manual pages),
bilgi sayfalar (info pages) ve /usr/share/doc icinde bulunan uygulamalar ile gelen dokumanlar. Bu
bolumde, dsardan yardm almadan once bu uc kaynag nasl inceleyecegimizi ve onlardan nasl ya-
rarlanabilecegimizi gorecegiz.

10.2 Klavuz sayfalar


Klavuz dosyalar, ya da man sayfalar UNIX ve Linux referans dokumanlarnn temellerini olusturur.
Ideali herhangi bir komut, konfigurasyon dosyas veya kutuphane dosyas hakknda man sayfasna bakarak
bilgi edinebilmenizdir. Pratikte ise Linux ozgur bir yazlmdr ve baz man sayfalar daha yazlmams
veya cok onceden yazlms olup guncelligini yitirmis olabilir. Yine de man dosyalar yardma ihtiyacnz
oldugunda ilk baklmas gereken adreslerdir.
Bir man sayfasna ulasmak icin basitce man ve istediginiz baslg yazn. Ekrana ckan dokumandan
ckmak icin qya basmanz gerekir. Mesela ls komutu hakknda bilgi almak icin:
$man ls

yazmanz gerekir.

27
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

10.3 Klavuz sayfalar, devam


Bir man sayfasnn plann bilmek ihtiyacnz olan bilgiye hzlca ulasmanza yardmc olabilir. Bir man
sayfasnda genellikle asagdaki bolumleri bulacaksnz:
NAME Komutun ismi ve bir satrlk acklamas
SYNOPSIS Komutun nasl kullanlacag
DESCRIPTION Komutun fonksiyonalitesi hakknda derinlemesine acklama
EXAMPLES Komutun nasl kullanlacagna yonelik oneriler
SEE ALSO Ilgili baslklar (genellikle man sayfalar)

10.4 Klavuz sayfa bolumleri


Klavuz sayfalarn iceren dosyalar, /usr/share/man (baz eski sistemlerde ise /usr/man) dizininde bulu-
nur. Bu dizindeki klavuz sayfalarnn yaplandrlmas asagdaki gibidir.
man1 Kullanc Programlar
man2 Sistem Programlar
man3 Kutuphane fonksiyonlar
man4 Ozel dosyalar
man5 Dosya bicimleri
man6 Oyunlar
man7 Cesitli, diger

10.5 Coklu klavuz sayfalar


Baz baslklar birden fazla bolumde bulunur. Bunu gostermek icin, bir baslk icin varolan tum klavuz
sayfalarn gosteren whatis komutunu kullanalm:

$ whatis printf
printf (1) - format and print data
printf (3) - formatted output conversion

Bu durumda, man printf dogrudan bolum 1 de bulunan sayfaya gidecektir (User Programs). Eger
bir C program yazyor olsaydk bolum 3deki sayfa daha fazla ilgimizi cekerdi (Library functions). Ozel
bir bolumdeki bir klavuz sayfasn komut satrnda belirterek cagrabiliriz. printf(3) icin sunu yazabiliriz:

$ man 3 printf

10.6 Dogru klavuz sayfay bulmak


Kimi zaman verilen baslk icin dogru klavuz sayfay bulmak zordur. Bu durumda man -k kullanarak
klavuz sayfalarn NAME bolumununde arama yapabilirsiniz. Bunun bir altdizi aramasi olduguna dikkat
edin. Dolaysyla man -k ls benzeri bir komut, cok fazla ckt verecektir. Bir ornekle bunu gorelim:

$ man -k manual
Gnome (1) [gnomine] - manual page for Gnome gnomine 1.4.0.4
apropos (1) - search the manual page names and descriptions
c2man (1) - generate manual pages from C source code

10.7 apropos ile ilgili hersey


Bu ornek aslnda birden fazla sey anlatyor! Oncelikle, apropos komutu man -k ile tam olarak ayn isi
yapar. (Bir sr olarak, man -k komutu verdiginizde arka tarafta apropos komutunun calstgn soyleyelim)
Ikinci onemli nokta ise makewhatis komutu. Bu komut Linux sistemindeki tum klavuz sayfalar tarar,
whatis ve apropos komutlarnn veritabann olusturur. Genellikle, bu is, root tarafndan periyodik olarak
tekrarlanr ve veritabanlarnn guncel tutulmas saglanr:

# makewhatis

man komutu ile ilgili daha fazla bilgi alabilmek icin klavuz sayfasna bakabilirsiniz:

$ man man

28
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

10.8 Klavuz Yolu (MANPATH)


man program, baslangc olarak ilgili sayfalar /usr/share/man, /usr/local/man, /usr/X11R6/man, ve bir
ihtimal /opt/man dizinlerinde arar. Baz durumlarda, bu baklacak yollara yeni bir tane dahe eklemek
gerekebilir. Bunun icin, /etc/man.conf dosyasn, bir yaz editoruyle acp, asagdaki gibi bir satr eklemek
yeterlidir:

MANPATH /opt/man

Bu ekleme ile, /opt/man/man dizini altndaki klavuz sayfalarda bulunacaktr. Ama bu yeni klavuz
sayfalarn whatis komutunun veritabanna eklemek icin makewhatis komutunu yeniden calstrmak ge-
rektigini unutmayn.

10.9 GNU bilgisi


Klavuz sayfalarnn bir eksigi, yardml metinleri (hypertext) desteklememeleri. Bu durumda, bir dosya-
dan digerine kolaylkla atlamak mumkun olmuyor. Bunu farkeden GNU uzmanlar, yeni bir dokuman-
tasyon yontemi gelistirdiler: info (bilgi) sayfalar. Bircok GNU program artk info sayfalar biciminde
kapsaml bir dokumantasyonla geliyor. info sayfalarn okumaya info komutuyla baslayabilirsiniz:

$ info

info komutunun bu sekilde kullanlmas, sistemde ulaslabilen sayfalarn bir indeksini getirir. Bu
cktnn icinde ok tuslaryla hareket edebilir, yldz simgesi ile isaretlenmis olan baglantlar enter tusuyla
izleyebilir, ya da q tusu ileckabilirsiniz. Buradaki tuslar Emacsdeki gibidir, dolaysyla Emacs editorune
alsknsanz, islemlerinizi kolayca yapabilir, yonunuzu rahatlkla belirleyebilirsiniz.Komut satrndan ozel
bir info sayfas da cagrabilirsiniz:

$ info diff

info sayfalar hakknda daha fazla bilgi elde etmek isterseniz, info sayfasini okumanz oneririm. Su
ana kadar bahsettigimiz temel kullanm yontemleriyle, bu isi basitce yapabilirsiniz:

$ info info
/usr/share/doc

Linux sisteminizde son bir yardm kaynag daha var. Cogu programlar, farkli formatlardaki ek belge-
lerle dagtlyor. Bu formatlardan bazlar, duzyaz (text), PDF, PostScript, HTML vb. dir. Sisteminizdeki
/usr/share/doc dizinine (baz eski sistemlerde /usr/doc) girdiginizde, hepsi belli bir uygulamayla gelmis,
uzunca bir dizin listesi goreceksiniz. Bu dokumanlari incelemek baz cevherleri ortaya ckarmanz da
saglayabilir. Man sayfalarnda veya info sayfalarnda bulamayacagnz detaylara, ancak baz egitmenlerde
veya ilave teknik dokumanlarda rastlayabilirsiniz. Hzl bir aramayla, okunabilecek ne kadar cok malzeme
oldugunu gorebilirsiniz.

$ cd /usr/share/doc
$ find . -type f|wc -l

10.10 Linux Dokumantasyon Projesi


Sistemde bulunan dokumanlara ek olarak, internet uzerinde de Linux konusunda cok iyi kaynaklara
ulasabilirsiniz. Linux Dokumantasyon Projeside, bir grup gonullunun, butunlesmis ve ozgur bir Linux
dokumantasyon seti olusturmak icin calsmaya karar vermesiyle baslams. Bu projenin varolus amac,
Linux dokumantasyonunun parcalarn, kullanm ve arama yaplmas kolay, ortak bir platformda birles-
tirmektir. Linux Dokumantasyonu Projesine http://www.linuxdoc.org/ adresinden ulasabilirsiniz.

10.11 LDPye genel baks


LDP asagdaki baslklar iceriyor:

Rehberler - genis kapsaml kitaplar, ornegin The Linux Programmers Guide

HOWTO kaynaklar - konuya ozel, derinlemesine kaynaklar, ornegin DSL HOWTO

29
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

SSS (Skca Sorulan Sorular) - en sk sorulan sorular ve cevaplar, ornegin Brief Linux FAQ
Klavuz sayfalar - komutlara ozel yardm sayfalar (Linux sisteminizde man komutuyla ulastgnz
dosyalarn aynlardr).

Hangi bolumde arastrma yapmanz gerektigini bilmiyorsanz, arama kutularn kullanabilirsiniz. Boy-
lece konu baslgna gore arama yaparak bilgiye ulasrsnz. LDP bunlara ek olarak Linux Gazette ve
LinuxFocus gibi baz baglant ve kaynak listesi de sunuyor. Ayrca ilgili mail listelerine ve haber arsivlerine
de LDP uzerinden ulasabilirsiniz.

10.12 Mail Listeleri


Linux gelistiricileri icin en onemli ortak calsma ortam mail listeleridir. Cogu zaman projeler, birbi-
rinden cok uzakta yasayan, neredeyse dunyann iki ayr ucundaki kisilerin ortak calsmasyla olusuyor.
Mail listeleri, bu gelistiricilere, proje uzerinde calsan diger kisilerle iletisim kurma, tartsma ve bilgi
alsverisinde bulunma olanag saglyor. Bu mail listelerinden en bilineni cekirdek gelistiricilerinin Linux
Kernel Mailing List adl listesidir. Adresi: http://www.tux.org/lkml/.
Gelistirme ortamna sagladg destegin yansra, mail listeleri, normal kullanclar icin de, soru sorma
ve uzman kisilerden veya diger kullanclardan cevap alma aracdr. Ornegin, farkl Linux dagtmlar,
yeni uyelerine destek amacyla mail listeleri olusturmuslardr. Kullandgnz dagtmn mail listelerine
ulasmak icin, dagtcnzn web sayfasn kullanabilirsiniz. Yukarda verdigimiz adresten, Linux cekirdek
gelistiricilerinin listesinde LKML FAQ (Linux cekirdek gelistiricileri mail listesi, Skca Sorulan Sorular)
ksmn incelerseniz, liste uyelerinin sk sk ayn sorunun sorulmasn pek hos karslamadklarn gorecek-
siniz. Bu yuzden, sorunuzu listeye gondermeden once liste arsivlerini incelemeniz daha dogru bir yontem
olacaktr. Dahas, bu yontem size vakit kazandracaktr.

10.13 Haber gruplar


Internet haber gruplar, mail listelerinin bir benzeridir ama e-mail yerine NNTP denen (Network News
Transfer Protocol) Ag Haberleri Aktarma Iletisim Kural temeline dayanr. Haber gruplarna katlmak
icin slrn veya pan gibi bir NNTP istemcisi kullanmak gerekiyor. Haber gruplarnn ilk akla gelen avan-
taj, sadece istediginiz zaman tartsmalara katlyor olmanz.Boylece sizin dsnzda gelisen tartsmalar
elektronik posta kutunuzu doldurmuyor.
Genele hitap eden listeler comp.os.linux ile baslar. Listeye LDPnin sitesinden,
http://www.linuxdoc.org/linux/#ng adresiyle ulasabilirsiniz.
Mail listeleri gibi, haber gruplar da arsivlenir. Populer bir haber grubu arsivi sitesi olarak Deja News
ornek gosterilebilir.

10.14 Satc firmalar ve ucuncu-parti web siteleri


Farkl Linux dagtmlarnn web sitelerinden, guncellenmis dokumanlar, kurulum talimatlar, donanm
uyumluluk/uyumsuzluk acklamalar ve daha bircok konuda destek alnabilir. Ornek siteler:

Redhat Linux
Debian Linux
Gentoo Linux
SuSE Linux
Caldera
Turbolinux

10.15 Linux dansmanlar


Baz Linux dansmanlar, hem ucretsiz hem de ucretli olarak Linux dokumantasyonu saglyorlar. Bu
dansmanlardan bazlarn asagda gorebilirsiniz:

LinuxCare
Mission Critical Linux

30
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

10.16 Yazlm ve donanm saglayclar


Son yllarda bircok yazlm ve donanm firmas, urunlerine Linux destegini eklediler. Bu firmalarn sitele-
rinden, hangi donanmlarn Linuxu destekledigini, yazlm gelistirme araclarn, aclms kaynak kodlarn,
baz donanmlarn Linux uyumu icin hazrlanms suruculerini ve daha bircok bilgiyi alabilirsiniz. Bu
hareketin ornekleri soyle sralanabilir:
IBM ve Linux
Compaq ve Linux
SGI ve Linux
HP ve Linux
Sun ve Linux
Oracle ve Linux

10.17 Gelistiricilerin kaynaklar


Tum bunlara ek olarak, baz yazlm ve donanm firmalar, Linux gelistiricileri ve sistem yoneticileri icin
cok iyi kaynaklar olusturmus durumdalar. Bunlarn icinde en basarl olanlardan birisi, yazlm/donanm
firmas IBMin developerWorks Linux ortamdr.

11 Linux izin modeli


11.1 Bir kullanc, bir grup
Bu bolumde, Linuxun izin ve sahiplik modelini inceleyecegiz. Daha once gordugumuz uzere, her dosyann
sahibi olan bir kullanc ve bir grup vardr. Linuxun izin modellerinin ozunde bu vardr. Dosyalarn sahibi
olan kullanc ve gruplar, ls -l komutuyla listeleyebilirsiniz:
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 579816 2002-09-12 00:51 /bin/bash
Bu ornekte, /bin/bash calstrlabilir dosyasnn sahibinin root kullancs ve root grubu oldugunu
goruyoruz. Linux izin modeli, herbir dosya icin belirlenen uc ayr izin katmanndan olusur. Bu uc katman,
dosya sahibinin izinleri, grubun izinleri ve tum diger kullanclarn izinleridir.

11.2 ls -l incelemesi
ls -l komutumuzun cktsn inceleyelim.
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 579816 2002-09-12 00:51 /bin/bash
Ilk -rwxr-xr-x bolumu, dosya izinlerinin sembolik gosterimidir. Bastaki tire (-) karakteri dosyann tipini
belirtir. Bu ornekteki dosya normal bir dosyadr. Diger dosya cesitleri ve onlar ifade eden karakterler
soyledir:
d dizin l sembolik baglant c character special device b block special device p fifo s socket Uc
adet uclu grup
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 579816 2002-09-12 00:51 /bin/bash
Dosya tipini belirten karakteri takip eden uc adet uclu harf grubu goruyoruz. Ilk uclu grup dos-
yann sahibinin haklarn, ikinci grup dosyann sahibi olan grubun haklarn, son uclu grupta diger tum
kullanclar icin gecerli olan haklar simgeler.
rwx r-x r-x
Burada, r harfi, dosyann iceriginin okunmasna izin verildigi anlamna gelir. w harfi dosyaya yaz
yazlabilecegini (bu ayn zamanda degisiklik yapma ve silme islemlerini de kapsar), x harfi de dosyann
calstrlabilecegini gosterir. Tum bunlar biraraya getirdigimizde goruyoruz ki, ornegimiz olan dosyay
herkes okuyabilir ve calstrabilir ama sadece sahibi (root) dosyann degistirilmesi konusunda hak sahibi-
dir. Dolaysyla, tum kullanclar bu dosyay kopyalama hakkna sahipken, sadece rootun guncelleme ya
da silme hakk vardr.

31
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

11.3 Ben kimim?


Bir dosyann sahibi olan kullancy ve grubu degistirmeyi gormeden once, halihazrda calsan kullancnn
kim oldugunu ogrenme ve grup uyelikleri hakknda bilgi alma yontemini inceleyelim. Eger bilgisayar
actktan sonra su komutunu hic calstrmadysanz, bilgisayar acarken girdiginiz kullanici olarak devam
ediyorsunuz demektir. Eger sk sk su komutunu calstryorsanz, o anda hangi kullancyla calstgnz
hatrlamayabilirsiniz. Bu durumda whoami komutunu kullanabilirsiniz:

# whoami
root
# su knoppix
$ whoami
knoppix

11.4 Hangi gruplarn uyesiyim?


Hangi gruplara uye oldugunuz ogrenmek icin groups yazmanz yeter:

$ groups
knoppix dialout fax voice cdrom floppy
tape sudo audio dip video games users usb

Bu ornekteki kullanc, knoppix, dialout, fax, voice, cdrom, floppy, tape, sudo, audio, dip, video, games,
users, usb gruplarna uyedir. Diger kullanclarn grup bilgilerini de ogrenebilirsiniz. Bunun icin, groups
komutuna arguman olarak kullanc adlarn vermelisiniz:

$ groups root daemon


root : root
daemon : daemon

11.5 Kullanc ve Grup Haklarn Degistirmek


Bir dosyann ya da baska bir dosya sistemi nesnesinin sahip oldugu kullanc ya da grubu degistirmek
icin srasyla chown ve chgrp komutlarn kullanabilirsiniz. Bu komutlarda herbiri bir isim ve bunu takip
eden bir ya da daha fazla dosya ismi ile kullanlr.

# chown root /etc/passwd


# chgrp users /etc/passwd

Ayrca isterseniz chown komutunun alternatif bir kullanm ile tek seferde dosya sahibini ve sahip
oldugu grubu degistirebilirsiniz.

# chown root.users /etc/passwd

superuser olmadgnz surece chown komutunu kullanmamalsnz ancak dosyann ait oldugu grubu sa-
hip oldugunuz gruplardan birisi olarak belirlemek amacyla chgrp komutunu normal kullanc durumunda
da kullanabilirsiniz.

11.6 Sahipligin Ozyineli Olarak Degistirilmesi


chown ve chgrp komutlarnn her ikisi de bir dizin agacndaki tum dosya ve dizinlerin sahip olduklar
kullanc ve gruplar ozyineli olarak degistirmek amacyla -R opsiyonuna sahiptirler. Ornegin:

# chown -R knoppix /home/knoppix

11.7 chmod Komutuna Giris


chmod ve chown komutlarnn herhangi bir dosya sistemi nesnesinin ait olduklar grup ve kullancy
degistirdigini soyledik. Ayrca dosya ve dizinler uzerinde tanml ve ls -l listelemesiyle gordugumuz dosya
sistemi nesnelerinin yazma-okuma-calstrma izinlerini de chmod komutu ile degistirebiliyoruz. chmod iki
ya da daha fazla parametre almaktadr: izinlerin nasl degisecegini belirleyen durum parametresi (mode),
bunu izleyen ve izin isleminin uzerinde uygulanacag dosya ya da dosyalarn isimleri. Soyle ki:

32
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ chmod +x Desktop/KNOPPIX.desktop

Yukardaki ornekte durum parametremiz +x olarak belirlenmistir. Tahmin edeceginiz gibi +x bu soz
konusu dosyay hem kullanc hem de grup ya da baska herhangi birisi icin calstrlabilir hale getirecektir.
Eger bir dosyann tum calstrlma izinlerini kaldrmak istiyorsak, yapmamz gereken:
$ chmod -x Desktop/KNOPPIX.desktop

11.8 kullanc/grup/digerleri Parcack Yaps


Su ana kadar chown komutunun tum orneklerinde izinler user, group ve other seklinde tanmlanan her uc
nesne icin de uyguland. Genellikle bu ucluden bir ya da ikisi icin izin belirlenmesi daha uygundur. Bunu
yapmak icin bu ucluden birisini temsil eden sembolik karakter ile birlikte izin tipini + ya da - olarak
belirtiriz. u karakterini user, g karakterini group ve o karakterini other icin kullanrz:
$ chmod go-w Desktop/KNOPPIX.desktop

Yukardaki ornekte KNOPPIX.desktop dosyasna yazma hakkn dosyann ait oldugu grup ve diger
herhangi bir kullanc ya da grup icin kaldrdk. Ama dosyann sahibi olan kullanc icin bu hakk
degistirmedik.

11.9 Izinleri Sfrlamak


Izin bitlerini acg kapamak icin hepsinin birden sfrlayabiliriz. = operatorunu kullanarak, chmod ko-
mutuna ilgili dosya icin sadece belirledigimiz haklar vermek ve bunlar dsndaki haklar da vermemek
istedigimizi soyleyebiliriz.
$ chmod =rx Desktop/KNOPPIX.desktop

Yukarda uclunun tamam icin KNOPPIX.desktop dosyas uzerinde okuma ve calstrma hakkn ver-
dik ama write hakkn vermedik. Uclunun belli birtanesi icin haklar ayarlamak istiyorsanz asagdaki
ornekte gosterildigi gibi= operatorunden once bu ucluden ilgili olan belirttiginiz sembolu yazabilirsiniz.
$ chmod u=rx Desktop/KNOPPIX.desktop

11.10 Saysal Kalplar


Su ana kadar chmod komutu ile dosya haklarn duzenlemek icin hep sembolik kalplar kullandk. Oysa
bu is icin cok sk kullanlan bir baska yontem daha var, 4 basamakl bir sekizli sistem says. Bu saysal
izin ifadelerinde herbir basamak bir izin grubunu ifade eder. Ornegin 1777 ifadesinde, 777 rakamlar
dosyann sahibi olan kullancnn, grubun ve diger kullanclarn izinlerini ifade eder. Bastaki 1 ise ozel
izinleri ifade eder, bu ozel izinler konusuna bu bolumun sonunda girecegiz. Asagdaki tabloda bu sekizli
sistem saylarnn nasl yorumlandgn goruyorsunuz:
kalp rakam
rwx 7
rw-6
r-x 5
r--4
-wx 3
-w-2
--x 1
---0

11.11 Saysal izin ifadelerinde sozdizim yaps


Saysal ifadeler cogunlukla, bir dosya uzerindeki haklarn tamamyla ilgili bir duzenleme yaplacaksa
kullansldr. Asagdaki ornegi inceleyecek olursak:
$ chmod 0755 Desktop/KNOPPIX.desktop
$ ls -l Desktop/KNOPPIX.desktop
-rwxr-xr-x 2 knoppix knoppix 124 2003-04-25 09:56 Desktop/KNOPPIX.desktop

bu ornekte -rwxr-xr-x ifadesine denk gelen 0755 kalb kullanlms. Yani dosyann sahibi olan kul-
lanc tum haklara sahipken, gruba ve diger kullanclara sadece okuma ve calstrma haklar veriliyor.

33
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

11.12 umask
Bir islem yeni bir dosya yarattgnda, o dosyayla ilgili haklar da, kendisine en uygun olacak sekilde
belirler. Genellikle herkesin okuyabilecegi ve yazabilecegi kalp olan 0666 belirlenir ve bu kalp aslnda
tahmin edilenden ve istenenden daha fazla toleransldr. Neyse ki, Linux yeni bir dosya yaratldgnda
umask dedigimiz yapya dansr. Dosyaya baslangcta verilen haklar, umask degerine baklarak, daha
gercekci ve guvenilir bir seviyeye dusurulur. Komut satrnda umask yazdgnzda o andaki umask ayarnz
gorebilirsiniz:

$ umask
0022

Linux sistemlerde umask standart olarak 0022 olarak ayarlanmstr. Bu diger kullanclarn dosya-
larnz (eger ulasabilirlerse) okuyabilecegi ama degistiremeyecegi anlamna gelir. Yeni dosyalarn daha
guvenli olmas icin umask ayarn degistirebilirsiniz:

$ umask 0077

Bu umask degeri, dosyann grubunun ve diger kullanclarn, yeni dosya uzerinde hicbir hakka sa-
hip olmamalarna sebep olur. Bu umask degeri gruba ait kullanclarn ve digerlerinin yeni yaratlan
dosyalar uzerinde ontanml olarak herhangi bir izne sahip olmalarn engeller. Peki o halde bu umask
nasl calsr? Dosyalar uzerinde is yaparken kullanlan duzenli (normal) izinlerden farkl olarak umask
dedigimiz deger hangi izinlerin OLMAYACAGINI belirler. Izin-saysal karslk tablomuza bakp 0077
umask degerinin ne anlama geldigini cozmeye calsalm:
_
Izin say
rwx 7
rw-6
r-x 5
r--4
-wx 3
-w-2
--x 1
---0

Tabloya gore 0077 ifadesinin son iki rakam rwxrwx izin durumuna karslk gelmektedir. Simdi de
lutfen umask degerinin hangi izinlerin iptal edilecegine dair bilgi icerdigini hatrlayn. Bu bilgileri birlikte
dusunursek goruruz ki grup ve diger izinler kapatlrken kullanc izinlerine dokunulmayacaktr.

11.13 suid ve sgidye giris


Makineyi actgnzda ve bir oturum actgnzda yeni bir kabuk sureci baslar. Bunu zaten biliyorduk, ama
bununla ilgili bilemeyeceginiz birsey daha var ki, o da bu yeni kabuk sureci (aslnda bash) sizin kullanc
bilginizle calsr. Boylece, sizin sahibi oldugunuz dosya ve dizinlere ulasabilir. Aslnda, bizler kullanc
olarak, bizim admza islemler yapan programlara tam anlamyla baglyz. Cunku kullanc bilgilerimizi
verdigimiz programlar, dosya sisteminde, bizim iznimizin olmadg herhangi bir nesneye ulasamayacaktr.
Ornegin, normal kullanclar passwd dosyasna yazma hakkna sahip degildir, cunku root dsndaki tum
kullanclarn yazma hakk kaldrlmstr:

$ ls -l /etc/passwd
-rw-r--r-- 1 root users 1239 2003-04-25 10:19 /etc/passwd

Oysa ki, normal kullanclarn da, en azndan dolayl olarak, bu dosya uzerinde degisiklik yapmaya
ihtiyac olabilir, ornegin sifrelerini degistirecekleri zaman. Ama normal kullanclar bu dosya uzerinde
yazma hakk yoksa nasl olacak bu islem?

11.14 suid
Linux izin modelinde suid ve sgid isimli iki ozel bit vardr. Eger calstrlabilir bir dosyann suid
biti ayarlanmssa, o dosya, o anda calstran kullanc degilde, asl sahibi olan kullancnn adyla calst-
rlyormus gibi olur. Simdi /etc/passwd dosyasyla ilgili problemimize geri donelim. passwd calstrlabilir
dosyasna baktgmzda sahibinin root kullancs oldugunu goruruz:

34
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 24680 2002-04-07 17:59 /usr/bin/passwd

Burda gordugumuz bir detay daha var. Dosya sahibi olan kullancnn izinlerini ifade eden uclude
x yerine s harfi bulunuyor. Bu s harfi, ilgili dosya icin suid ve calstrlabilirlik bitlerinin ayarlandgn
belirtiyor. Bu nedenle, passwd komutu calstgnda, o anda calstran kullanc degil de root kullancs ta-
rafndan calstrlyormus gibi olacaktr ve passwd komutu root haklaryla calsnca, /etc/passwd dosyasn
da bir problem olmadan duzenleyebilecektir.

11.15 suid/sgid uyarlar


suidnin nasl calstgn gorduk, sgidde ayn sekilde calsr. Programlarn, o anda calsan kullancnn
degilde programn uzerindeki grup haklarna gore calsmasna dayanr.
suid ve sgid hakknda birkac onemli ipucu verelim. suid ve sgid bitleri ls -l listelemesinde x harfinin
bulundugu yerde bulunurlar. Eger hem x hemde suid bitleri aktifse, listede s (kucuk harf olarak) gorulur.
Ama, x biti aktif degil, suid biti aktifse S (buyuk harf olarak) goruntulenir.
Bir baska onemli nokta: suid ve sgid bitleri bircok durumda cok kullansl gibi gorunselerde, baz dik-
katsiz kullanmlarda sistemin guvenliginde onemli acklara sebep olabilirler. Bu yuzden ne kadar az suidli
program olursa o kadar iyidir. passwd komutu da, suidye kesin olarak ihtiyac duyan birkac programdan
biridir.

11.16 suid ve sgidnin degistirilmesi


suid ve sgid bitlerinin ayarlanmalar ve iptal edilmeleri su ana kadar gordugumuz izin ayarlar ile ayndr.
Ornegin suid bitinin ayarlanmas soyledir:

# chmod u+s /usr/bin/program

Burada da bir dizin uzerinden sgid bitinin kaldrlmasn goruyoruz. Biraz ileride de sgid bitinin dizinler
uzerindeki etkilerini inceleyecegiz.

# chmod g-s /home/knoppix

11.17 Izinler ve dizinler


Su ana kadar normal dosyalarn izinlerinden bahsettik. Konu klasorler olunca, isler biraz degisiyor.
Klasorler de izin konusunda ayn kalplar kullanrlar, ama yorumlanmalar biraz farkldr. Bir klasor icin,
read hakk o klasorun iceriginin goruntulenebilmesi, write hakk klasor icinde dosya yaratlabilmesi,
execute hakk da klasor icindeki altdizinlere ulaslabilmesi anlamna gelir. execute biti ayarlanmamssa,
klasor icinde ulaslabilir olmayan dosya sistemi nesneleri oldugu anlamna gelir. read biti ayarlan-
mamssa, klasor icinde goruntulenemez nesneler vardr. Bu nesneler ancak, disk uzerindeki tam yolu
bilindiginde ulaslabilir.

11.18 Dizinler ve sgid


Bir dizinin sgid biti ayarlanmssa, bu dizinin grup bilgileri, icinde yaratlan herhangi bir dosya sistemi
nesnesine de yansyacaktr. Bu ozellik, ayn gruba uye olan birkac kullancnn kullanacag bir dizin agac
olusturulacagnda, kullansl olacaktr. Soyle ki:

# mkdir /home/grupalani
# chgrp benimgrubum /home/grupalani
# chmod g+s /home/grupalani

Burada, benimgrubum uyesi olan tum kullanclar /home/grupalani altnda dosya veya dizin yarata-
bilir ve bu yeni dosya ve dizinlerin grubu, otomatik olarak benimgrubum atanacaktr. Yeni nesnelerin,
benimgrubum uyesi olan diger kullanclar tarafndan okunabilirlik, yazlabilirlik ve calstrabilirlik ayar-
lar, o dosyann yaratcs olan kullancnn umask degerine bagldr.

35
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

11.19 Dizinler ve silme islemi


Linux dizinleri standart ayarlar aslnda gunluk kullanmda cok ideal ayarlar degildir. Normal olarak,
bir klasore ulasma hakk olan kisinin o klasor icindeki bir dosyay silme veya yeniden adlandrma hakk
olmas beklenir. Bireysel kullanclarn dizinleri boyledir ve en uygunu da budur.
Ancak bircok kullancnn eristigi ve kullandg klasorler icin ozellikle /tmp ve /var/tmp, bu uygula-
mann baz zararlar olabilir. Tum kullanclarn erisme hakk olmas, ayn zamanda silme veya degistirme
hakk olmas anlamna da gelir, yani bir kullanc digerinin dosyalarn, sahibi olmadg halde, silebilir veya
degistirebilir. Bu nedenle /tmp klasorunu onemli isler icin kullanmamakta fayda var, cunku herhangi bir
kullanc rm -rf /tmp/* yazarak tum dosyalar silebilir.
Neyse ki Linux, yapskan bit ozelligiyle bu problemi de cozuyor. /tmp dizinini yapskan biti ayar-
lanmssa (chmod +t ile), bu dizindeki dosyalar sadece root, dizinin sahibi (genellikle root) ya da o
dosyann sahibi silebilir veya yeniden adlandrabilir. Tum Linux dagtmlarnda, /tmp dizininin yapskan
biti ayarlanmstr, ancak goruldugu gibi sadece /tmp dizininde degil bircok yerde yapskan bit ise yara-
maktadr.

11.20 Ozel ilk basamak


Bu bolumu sona erdirmeden once, saysal ifadelerde bahsi gecen ilk basamaktan bahsedelim. Gordugunuz
gibi ilk basamak yapskan bitlerin, suid ve sgid bitlerinin ayarlanmas icin kullanlyor:

suid sgid stickymode basamak


on on on 7
on on off 6
on off on 5
on off off 4
off on on 3
off on off 2
off off on 1
off off off 0

Bir gruba (workgroup) ait bir dizinin izinlerin, 4 basamakl saysal ifadelerle ayarlanmas ile ilgili
olarak su ornege bakalm:

# chmod 1775 /home/groupfiles

12 vi Editoru
Tum Linux sistemlerinde, kullanclarn zevklerine hitap eden cesitli metin editorleri vardr. Bunlarn
arasnda, Unix sistemler icin ozel olarak tasarlanms olan vi editoru en cok kullanlan editorlerin basnda
gelir. Vi, baslangcta karmask gorunse de hz ve verimi ile her kullancnn isini buyuk olcude ko-
laylastracak bir editordur. En cok kullanlan komut takmlarn ogrendikten sonra vidan vazgecmenin
ne kadar guc oldugunu goreceksiniz.

12.1 Via baslangc


PC editorlerin buyuk cogunlugunda klavye, editor komutlarn almak ve baslan tuslar ekrana gondermek
icin kullanlan iki gruba ayrlmstr. Kullanc ayn anda hem komut isletip hem de yaz yazabilir. Bu tip
editorler genis bir klavye haritasna sahip olduklar icin, ornegin fonksiyon tuslarn veya klavyenin en
sagndaki saysal tuslar da kullanyor olabilirler. vi n tasarm asamasnda bu durumdan kacnlms,
standart ds klavyesi olan bilgisayarlarn da var olabilecegi dusunulerek klavye uzerinde kullanlmas
gereken tuslarn saysn mumkun oldugunca indirilmesine calslmstr. Burada karsmza vi editorunun
calsma asamasnda uc ayr islev geliyor. Birincisi, bilgisayara komutlarn girdisi srasnda kullanlan
komut modu, ikincisi yaz yazarken kullanlan yaz modu ve satr modu.
Komut modunda klavye uzerinde gorevi olan tum tuslar, bilgisayar komut vermek icin kullanlyor.
Yaz modunda ise diger editorlerdekine benzer sekilde yaz yazmak mumkun oluyor. Klavye modunu
degistirdiginizde klavye tuslarnn islevleri de hemen degisiyor. vi editorunu ilk calstrdgnz anda komut
moduna girersiniz. Bu anda her tusa ait bir komut calstrlmaya hazrdr (ornegin j bir karakter asag, k
bir karakter yukar gider). Bu anda kullanc yaz moduna gecmek isterse i tusuna basabilir. Yaz moduna
iken klavyeden girilen her karakter ekranda gorunur. Bundan sonras daktilo kullanmaya benzer. Tekrar

36
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

komut moduna gecmek icin ESC tusu yardmc olur. Bir dosya yazarken veya duzeltmede bulunurken her
iki yazm stili arasnda surekli gidip geldiginizi farkedeksiniz. Bunlara ek olarak dosya islemleri veya esleme
yaparken iki mod da kullanlmaz. Linux kullancs vi uzerinde calsrken en alt satrda vi mesajlarn
gorur ve gerektigi zaman satr modunda komutlar girer. Satr moduna gecmek icin : (iki nokta ustuste)
karakteri kullanlr. Bu tusa basldgnda ekrann en altnda bir satr aclr ve vi sizden bir komut girmenizi
bekler. vi komutunu yazp entera bastktan sonra tekrar editor komut moduna gecersiniz.

12.2 Dosya acma, kaydetme ve ckma


Bir vi oturumunu 4 ayr sekilde acabilirsiniz. Yeni ve bos bir dosya icin:

$vi

varolan bir dosya icin:


$vi dosya_adi

imlecin, aclacak dosyada n numaral satrda durmas icin:

$vi +n dosya_adi

imlecin, aranan bir kalbn ilk bulundugu yerde durmas icin:

$vi +/"aranan kalp" dosya adi

via ilk girdiginiz anda komut modunda olursunuz. Yaz moduna gecmek icin i veya a tusuna basn.
Bu andan itibaren zamannzn buyuk bir ksmn gecireceginiz yaz moduna atlarsnz. Bkana kadar
yazp once ESC tusuna, ardndan iki kere Z tusuna basn. Bu komut dizisi once dosyay kaydedecek,
sonra da vi editorunden ckmanz ve kabuga donmenizi saglayacaktr. vi a yeni baslayanlarn yaptklar
en sk hatalardan biri yaz modundan komut moduna gecerken ESC tusuna basmamalardr. w komutu
ZZ komutuna benzer calsr, hafzada halihazrda bulunan dosyay, editorden ckmadan diske kaydeder.
Eger isimsiz bir dosyada uzerinde calsyorsanz (ornegin vi dosya adi yerine sadece vi yazarak editore
girmisseniz) dosyay sabit diske yazmak icin w satr komutunu kullanmalsnz. Bunun icin:

:w benimdosyam

yazp satr moduna gecerek komutu girmelisiniz.


Vi editorunden ckmak icin :q yazn.

12.3 Vida yazma


Simdi vi yardmyla bir dosya uzerinde denemeler yapalm. Asagdaki komutlar kabuk satrnda iken
yazn:

$ vi deneme

Ekran silinecek ve solda karakterlerinin bulundugu bir goruntuyle karslasacaksnz. Yaz moduna
gecmek icin i tusuna basn ve birkac satr metin girin. Tekrar komut satrna donmek icin ESC tusuna
basn. Simdi klavyenizdeki yon tuslaryla metin icinde gezinebilir yada : tusu ile satr moduna gecebilir-
siniz.

12.4 Silme ve kopyalama


Yaz modunda iken backspace tusu yardmyla, komut modunda iken ise x komutu ile istediginiz kadar
harfi silmeniz mumkundur. dd komutu ise imlecin uzerinde bulundugu satr siler ve alttaki tum satrlar
bir satr yukar alr. Ilgili komutlar ksaca listelemek istersek: dd bulundugu satrn tumunu siler ndd
n satr siler D satr imlecten itibaren siler dw bir kelime siler dG dosyann sonuna kadar siler p son
silinen karakteri imlecten sonra ekle P son silinen karakteri imlecten once ekle u son degisikligi geri al x
imlecin bulundugu karakteri sil X imlecten onceki karakteri sil nX imlecten oncek n karakteri sil Silinen
karakter veya karakter gruplarnn hafzaya kaydedildigini soylemistik. Bu hafza gecici bir tampon vazifesi
gorur. yy komutu uzerinde bulundugu satr kopyalar. Eger komuttan once say girilirse o kadar satr
kopyalanr. Ardndan kullanc metin uzerinde istedigi yere gelip p tusuna basarak hafzadaki satrlar
imlecin bulundugu satrn altndan itibaren basar. yy komutu yerine Y de tercih edilebilir.

37
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

12.5 Arama ve eslestirme


vida calsrken arama yapmak isteyebilirsiniz. Eger uzerinde calstgnz metin uzun ise belirli bir ke-
lime veya kelime gruplarn aramak cok zaman alabilir. Komut modunda iken / karakterine basarak
arama/tarama moduna gecin. Ekrann en alt ksmnda bir satr aclacaktr. Aramak istediginiz kelimeyi
yazn ve ENTER tusuna basn. vi editoru imlecin bulundugu yerden itibaren girilen anahtar sozcugu metin
icinde tarayacaktr. Eger aranan kelime bulunmussa satr imlecini bunun uzerine konumlandrr. / ko-
mutu dosyann sonuna dogru arama yaparken ? komutu basa dogru gider. Ayn kelimeyi tekrar aratmak
icin n tusuna basn. Arama islemi, / komutu yardmyla yaplmssa ileri dogru, ? komutu yardmyla
yaplmssa geriye dogru tekrar baslayacaktr. Metindeki baz kelimeleri degistirmek istediginizde ise s
komutu yardmnza kosacaktr:

:[x,y]s/eski_ifade/yeni_ifade/tercih

komutu x ve y numaral satrlara arasnda, eski ifade kalbn, yeni ifade kalbyla degistirecektir. Tercih
ksmna gireceginiz c karakteri her degistirme isleminden once kullancdan onay isterken, i karakteri,
arama ve degistirme srasnda buyuk-kucuk harf ayrm yaplmamasn saglar.

12.6 Diger dosyalarn metne eklenmesi


Imlecin bulundugu yerden itibaren ikinci.txt dosyasn halihazrda calstgnz metne kopyalamak icin:

:r ikinci.txt

12.7 Kabuk komutlarnn calstrlmas


vi altnda iken kabuk komutlarn, hatta kabugun kendisini bile calstrmak mumkundur. :! ile komut
ismini girebilirsiniz. Asagdaki komut vidan ckmadan ls komutunu calstracak ve sonucu ekrana vere-
cektir.

:!ls -la

Bunun yansra komut cktsn ekran yerine uzerinde calstgmz metine aktarmak icin asagdaki vi
komutunu kullann:

:r! ls -al

13 Linux hesap yonetimi


13.1 /etc/passwd dosyas
Bu bolumde Linuxun hesap yonetimi mekanizmasn inceleyecegiz. Sistemdeki tum kullanclarn bilgi-
lerinin bulundugu /etc/passwd dosyasyla baslayalm. less /etc/passwd yazarak, kendi sisteminizdeki
dosyay goruntuleyebilirsiniz. Bu dosyadaki herbir satr, bir kullanc hesabn belirtir. /etc/passwd dos-
yasndan bir ornek satr ele alalm:

knoppix:x:1000:1000:Knoppix User:/home/knoppix:/bin/bash

Gordugunuz gibi, bu satrda cok fazla bilgi yokmus gibi duruyor. Aslnda /etc/passwd dosyasndaki
her satr : ile ayrlms birkac parcadan olusur.
Ilk ksm kullanc adn belirtir (knoppix), ikinci bolumde bir x harfi goruyoruz. Eski Linux sistemle-
rinde, bu ksmda sifrelenmis bir halde parolalar bulunurdu ve bu parolalar kullanc girisinde onaylama
icin kullanlrd. Ama yeni Linux sistemlerinin neredeyse tamamnda, sifreler baska bir dosyada tutuluyor.
Ucuncu alandaki (1000) ifadesi, kullancnn numarasn, dorduncu alandaki (1000) ifadesi de, bu kul-
lancnn bagl oldugu grubu belirtir. Biraz sonra (1000) numaral grubun nerede tantldgn da gorecegiz.
Besinci bolum, bu hesabn duzyaz olarak bir acklamasn icerir, bu ornekte, acklama kullancnn
tam ad olarak verilmis. Altnc bolumde, kullancnn home dizininin yeri belirtilir. Son olarak, yedinci
ksmda o kullanc icin standart olarak aclacak olan kabugu ifade eder. Bu kabuk kullanc bilgisayara
girdiginde otomatik olarak aclan kabuktur.

38
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

13.2 /etc/passwd hakknda ipuclar


Eger dikkat ettiyseniz, /ets/passwd dosyasnda, sizin bilgisayara girerken kullandgnz hesap dsnda
bircok hesap daha oldugunu gormussunuzdur. Bunun sebebi, farkl Linux bilesenlerinin, guvenligi art-
trmak amacyla, kendilerine ait kullanc hesaplar bulunmasdr. Bu sistem hesaplarnn kullanc nu-
maralar 100den kucuktur ve bircogunda standart kabuk alannda /bin/false ifadesi yeralr. /bin/false
program bir hata mesaj verip ckmaktan baska hicbirsey yapmadg icin, bu sistem hesaplarnn normal
kullanclar tarafndan kullanlmasn engeller. Bu hesaplar sadece sistem ici kullanm icindir.

13.3 /etc/shadow dosyas


Kullanc hesaplarna ait bilgilerin /etc/passwd dosyasnda tutuldugunu gorduk.Linux sisteminde bu dos-
yayla ortak calsan bir dosya daha vardr: /etc/shadow dosyas. Bu dosya /etc/passwd dosyas gibi herkes
tarafndan okunabilir bir dosya degildir. Bu dosyann icerigi, sadece root tarafndan goruntulenebilen,
sifrelenmis parola bilgilerinden ibarettir. Bu dosyadan alnms bir satr inceleyelim:

knoppix:$1$inZ2aQ4f$Us10Oa1moVCgbwXsx.a.E.:12167:0:99999:7:::

Yine herbir satr ayr bir kullanc hesabyla ilgili bilgileri iceriyor ve herbir bolum : ile ayrlms du-
rumda. Ilk ksm bu parola bilgisinin hangi kullancya ait oldugunu belirtir. Ikinci ksmda ise kullancnn,
parolas sifrelenmis bir halde bulunur. Diger alanlarn acklamalarn da asagdaki tabloda bulabilirsiniz:

3. Alan 1/1/1970ten, son sifre degisimine kadar gecen gun says.

4. Alan Parola degistirebilme izni verilene kadar gecen gun says (serbest degisiklik icin 0dr)

5. Alan Sistemin, kullancdan parolasn degistirmesini isteyecegi zamana kadarki gun says (-1 :
asla)

6. Alan Kullancnn, parolann gecersiz kalacag gunden, kac gun once uyarlacag (-1: uyar yok)

7. Alan Parolann iptalinden, hesabn sistem tarafndan otomatik iptal edilmesine kadar gecen gun
says (-1: iptal yok)

8. Alan Hesabn iptal edildigi gun says (-1: hesap hala aktif)

9. Alan Daha sonra kullanlmak uzere ayrlmstr.

13.4 /etc/group dosyas


Simdi de, /etc/group dosyasna gozatalm. Linux sistemindeki tum grup bilgileri bu dosyada tutulur.
Ornek bir satra bakalm:

knoppix:x:1000:

/etc/group dosyasndaki satrlarn anlamlarn inceleyelim. Ilk ksm grubun adn barndryor. ikinci
alanda ise bir parola goruntusu olarak x karakteri bulunur. Ucuncu ksmda, bu gruba ait olan grup
numarasn verir. Bu ornekte bos olarak gozuken dorduncu bolumde de bu gruba uye olan kullanclarn
isimleri vardr.
/etc/passwd dosyas ile ilgili olarak verdigimiz ornekte, grup numaras olarak 1000 vard. Bu, knoppix
kullancsnn, knoppix grubunun bir uyesi oldugu anlamna geliyor. Ama /etc/group dosyasnda, knoppix
grubunun bilgilerinin arasnda uye olarak knoppix kullancsnn belirtilmedigine dikkat edin.

13.5 Gruplara iliskin notlar


Baz sistemlerde, tum yeni kullanc hesaplar icin yeni bir grup aclr ve yeni kullanc bu grupla iliskilen-
dirilir. Hatta o kullanc ve grubun numaralar dahi ayn verilir. Baz sistemlerde ise, tum yeni kullanc
hesaplar, bir standart users (kullanclar) grubuna uye yaplr. Bu fark tamamen sahip oldugunuz
sistemde, sizin tercihinize kalmstr. Her kullanc icin birde grup olusturulmas, kendi dosyalar uzerin-
deki erisim haklarn daha kolay ayarlayabilmesi ve guvendigi kisileri kendi grubuna uye yapabilmesi
kolaylklarn da yannda getirir.

39
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

13.6 Elle kullanc ve grup yaratma


Simdi kendi kullanc ve grubunuzu yaratma isleminin nasl yaplacagna bakalm. Bunu ogrenmenin en
iyi yolu, sistemde elle yeni bir kullanc yaratmaktr. Baslamadan once EDITOR degiskeninizin, en cok
kullandgnz editor olarak ayarlanp ayarlanmadgn kontrol edelim:

# echo $EDITOR
vim

Eger ayarlanmamssa, asagdaki komutla EDITOR degiskeninizi ayarlayabilirsiniz:

# export EDITOR=/usr/bin/emacs

Simdi sunu yazn:

# vipw

Simdi /etc/passwd dosyasn, sectiginiz editorle aclms durumda goreceksiniz. Sistemdeki passwd
ve group dosyalarn duzenlemek istendiginde vipw ve vigr komutlarnn onemini kavramak gerekir. Bu
komutlar, sistem icin kritik olan passwd ve group dosyalarn acarken ekstra tedbirli olurlar ve islem
sonrasnda dogru bicimde kapatlmasn (kilitlenmesini) saglarlar. Boylece hayati onemi olan bu dosyalar
zarar gormez.

13.7 /etc/passwd dosyasn duzenlemek


Yukardaki komutlar yazdktan sonra /etc/passwd dosyanz karsnza geldi. Simdi alttaki satr ekleyin:

deneme:x:3000:3000:Deneme kullanicisi:/home/deneme:/bin/false

Bu satr sayesinde, sisteme deneme adl ve numaras 3000 olan bir kullanc eklemis olduk. Bu kul-
lancy henuz yaratmadgmz ama numaras 3000 olan gruba uye yaptk. Istersek bu kullancy users
grubuna da ekleyebilirdik. Bunun icin grup numaras olarak 3000 degilde, o grubun numarasn verme-
miz gerekirdi. Yeni kullancmz icin Deneme kullanicisi bilgisini ekledik, home dizinini /home/deneme
olarak belirledik ve standart kabugunu da /bin/false olarak ayarladk. Kabuk ayarn guvenlik amacyla
/bin/false olarak sectik. Eger bir test kullancs degilde normal bir kullanc yaratyor olsaydk, standart
kabuk olarak /bin/bash girecektik. Simdi degisiklikleri kaydedelim ve ckalm.

13.8 /etc/shadow dosyasn duzenlemek


Simdi, bu yeni kullancmz icin /etc/shadow dosyasna yeni bir giris yapmamz gerekiyor. Bunun icin
vipw -s yaznca, daha onceden sectigimiz editor, /etc/shadow dosyasyla birlikte karsmza gelecektir.
Simdi, varolan kullanclardan (parolas olan ve standart sistem kullanclarndan daha uzun olan) bir
tanesinin bilgilerini iceren satr kopyalayn:

knoppix:$1$inZ2aQ4f$Us10Oa1moVCgbwXsx.a.E.:12167:0:99999:7:::

Buradaki kullanc adn, yeni olusturdugunuz kullanc ad ile degistirin ve diger tum bilgilerin ayn
kaldgna (sifrelenmis parolann goruntusu dahil) dikkat edin.

deneme:$1$inZ2aQ4f$Us10Oa1moVCgbwXsx.a.E.:12167:0:99999:7:::

Simdi kaydedip ckn.

13.9 Parola belirleme


Tekrar komut satrna donmus durumdasnz. Simdi, yeni kullancmz icin bir parola belirleme zaman:

# passwd deneme
Enter new UNIX password: (deneme kullanicisi icin bir parola girin)
Retype new UNIX password: (deneme kullanicisi icin belirlediginiz parolay
tekrar girin)

40
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

13.10 /etc/group dosyasn duzenlemek


/etc/passwd ve /etc/shadow dosyalarn duzenledik. Simdi /etc/group dosyasnda yaplmas gereken ayar-
lar inceleyelim. Bunun icin komut satrna sunu yazalm:

# vigr

/etc/group dosyanz, editorle birlikte aclms ve duzenlemelerinize hazr olarak karsnzda duruyor.
Eger yeni yaratlan kullancy, varolan gruplardan birine uye yapacaksanz, bu dosyaya yeni bir grupla
ilgili bilgiler girmenize gerek yoktur. Ama yeni deneme kullancs icin bir grup yaratacaksanz asagdaki
satr dosyaya eklemeniz gerekiyor:

deneme:x:3000:

simdi kaydedip ckn.

13.11 Home dizin yaratma


Islemimiz bitmek uzere. Simdi de yeni kullancmzn home dizinini yaratmak icin asagdaki komutlar
yazalm:

# cd /home
# mkdir deneme
# chown deneme.deneme deneme
# chmod o-rwx deneme

Artk kullancmzn home dizini olmas gereken yerde ve hesap kullanma hazr. Eger bu hesab
kullanacaksanz, vipw ile deneme kullancsnn standart kabuk bilgisini /bin/bash olarak degistirmeniz
gerekiyor. (Hatrlarsanz, guvenlik icin bu bilgi /bin/false olarak ayarlanmst)

13.12 Hesap yonetim araclar


Bir kullancnn yaratlmasn ve ilgili ayarlarn nasl yaplacagn gorduk. Yeri geldikce Linuxta va-
kit kazandrc cesitli hesap yonetim islerini gorecegiz. Ayrca unutmayn ki, bir komut hakknda bilgi
aradgnzda, klavuz sayfalar yardmnza kosacaktr.
newgrp: Standart ayarlar geregi, bir kullancnn yarattg dosya uzerindeki haklar ayarlanrken o
kullancnn /etc/passwd dosyasndaki grup bilgileri de dikkate alnr. Eger o kullanc baska gruplara da
uye ise, newgrp thisgroup yazarak, o anda bagl oldugu grubu thisgroup olarak degistirebilir. Boylece yeni
yarattg bir dosyann izinleri belirlenirken bu thisgroup grubu dikakte alnr.
chage: Bu komut /etc/shadow dosyasndaki parolann eskimesi ve degistirilmeye zorlanmas ile ilgili
surelerin goruntulenmesi ve degistirilmesi icin kullanlr.
gpasswd: Genel amacl bir grup yonetim aracdr.
groupadd/groupdel/groupmod: /etc/group dosyasna grup ekleme, silme ve duzenleme yapmak icin
kullanlrlar.
useradd/userdel/usermod: /etc/passwd dosyasna kullanc ekleme, silme ve duzenleme yapmak icin
kullanlrlar. Bu komutlarn ayrca cok yararl baska fonksiyonlar da vardr. Bunun icin klavuz sayfalarna
bakabilirsiniz.
pwconv/grpconv: passwd ve group dosyalarn, yeni nesil golgeli parola bicimine donusturmekte kul-
lanlrlar. Ancak artk Linux sistemlerinin tamamnda golgelenmis parola yontemi kullanldgndan, bu
komutlara hicbir zaman ihtiyacnz olmayacaktr.
pwunconv/grpunconv: passwd, shadow ve group dosyalarn eski tip, golgelenmemis parola bicimine
donusturmeye yararlar. Bu komutlara da hicbir zaman ihtiyacnz olmayacaktr.

14 Kullanc ortamn ayarlama


14.1 fortune programna giris
Kullandgnz kabugun pek cok secenegi vardr ve bunlar kendi keyfinize gore sekillendirebilirsiniz. Ancak
simdiye dek bu degisiklikleri kalc hale getirip her login olusunuzda otomatik olarak gerceklesecek sekilde
nasl ayarlayabileceginize deginmedik. Simdiye dek bunlar her seferinden komut satrndan elle girmeniz

41
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

gerekiyordu. Bu bolumde ise baslangc dosyalarn duzenleyerek ortamnz nasl ozellestirebileceginize


deginecegiz.
Baslangc olarak giris annda ilginc mesajlarla karslasma isini ayarlayalm. Ornek bir mesaj gormek
icin fortune komutunu calstrn:
$ fortune
Dont Worry, Be Happy.
-- Meher Baba

.bash
profile Simdi oyle bir ayarlama yapalm ki fortune komutu her login oldugumuzda bir kere calssn. En
sevdiginiz metin duzenleyiciyi kullanarak home dizininizdeki .bash
profile dosyasn acn. Eger boyle bir dosya mevcut degilse yaratmaktan cekinmeyin. En basa su satr
yazn:
fortune

Simdi kabuktan ckn ve tekrar girin. xdm, gdm ve kdm gibi bir goruntu yoneticisi kullanmyorsanz
sisteme giris yapar yapmaz eglenceli bir mesaj ile karslasacaksnz:
login:
Password:
You will have good luck and overcome many hardships.
$

login kabugu bash baslatldgnda home dizininizdeki .bash profile dosyasn okur ve oradaki her ko-
mutu komut satrndan girilmiscesine calstrr. Buna dosyay okuma (sourcing) denir.
Bash, nasl baslatldgna bagl olarak farkl davranr. Eger bir login kabugu olarak baslatlrsa
yukardaki gibi davranr yani once sistem genelinde tanmlanms olan /etc/profile dosyasnda yazlanlar
sonra da size ozel /.bash
profile dosyasn okur ve buradaki komutlar uygular.
Bash kabugunu login kabugu olarak calstrmann iki yontemi vardr. Birinci yontem siz sisteme giris
yaptgnzda (login) uygulanan yontemdir yani -bash isimli surec calstrlr. Bunu surec listesinde de
gorebilirsiniz:
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
knoppix 5065 0.1 0.8 3136 2128 ttyp0 S 11:04 0:00 /bin/bash

Goreceginiz liste muhtemelen cok daha uzun olacaktr ancak en azndan bir tane COMMAND sutunu
gormelisiniz ve bunun altnda da kabugunuzun ismi yazmal, bizim ornegimizde /bin/bash yazdg gibi.

14.2 logini anlamak


Bash kabuguna login kabugu olarak calsmasn soylemenin bir yolu daha vardr: login komut satr
secenegini kullanarak. Bu secenek bazen terminal oykunuculeri (xterm gibi) tarafndan actklar bash
oturumlarnn acls esnasnda login mekanizmasn calstrmak icin kullanlr.
Sisteme girdiginizde, kabugunuzun birkac kopyas daha calsyor olacaktr. Bu kabuklar login ile
baslatlmadkca veya surecin adnda bir tire (dash) olmadkca, gercek anlamda sisteme giris kabuklar
olmayacaklardr. Eger bir kabuk sizden bir bilgi isteme veya bir bilgi bekleme durumuna gecerse interaktif
kabuk olarak adlandrlr. Eger kabuk, sisteme giris kabugu degil ama interaktif olarak aclrsa, /etc/profile
ve /.bash profile dosyalarn tanmayacak, kaynak olarak /.bashrc dosyasna bakacaktr.
interactive login profilerc yes yes sourceignore yes no ignoresource no yes sourceignore no no ignore-
ignore

14.3 Interaktifligin test edilmesi


rsh ve scp gibi komutlar calstrldgnda, kabugunuz gercekten interaktif olmadg halde /.bashrc dos-
yasn kaynak olarak secebilir. Bu onemlidir, cunku fortune komutundaki gibi gorevi sadece ekrana birsey
yazmak olan komutlarla interaktif olmayan bu kabuk oturumlarn kolaylkla kirletebilirsiniz. Bu yuzden,
baslangc dosyasndaki bir yazy ekrana yazdrmadan once, halihazrda calsmakta olan kabugun PS1
degiskenini kontrol ederek, gercekten interaktif bir kabuk olup olmadgn denetlemek faydal olacaktr:

42
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

if [ -n "$PS1" ]; then
fortune
fi

14.4 /etc/profile ve /etc/skel


Sistem yoneticisi olarak /etc/profile dosyasyla cok yakn iliskileriniz olacaktr. Her ne kadar ilk giriste
tum kullanclar tarafndan kullanlyor olsa da, bu dosyay calsr konumda tutmak onemlidir. Ayrca
yeni yaratlms kullanc hesaplarnn sisteme ilk girislerinde herseyin dogru calsmasn saglamak icin de,
bu dosya guclu bir aractr.
Ama bazen, yeni kullanclar icin standartlar belirlemek isterken, bir yandan da degisiklikler yapma
hakkn o kullanclara vermek istersiniz. Bu durumda /etc/skel dizini devreye girer. Yeni bir kullanc
hesab acmak istediginizde kullandgnz useradd komutu, /etc/skel dizini altndaki tum dosyalar, yeni
yaratlan kullancnn home dizinine kopyalar. Dolaysyla, /etc/skel dizininin altna yardmc .bash profile
ve .bashrc dosyalar koyarak, yeni kullanclarnza iyi bir baslangc sunabilirsiniz.

14.5 export
Kabuk degiskenleri, tum yeni aclan kabuklarda ayn sekilde kullanlmak amacyla isaretlenebilirler. Bu
islem ihrac (export) icin isaretlenme olarak adlandrlr. Kendi kabugunuzda da ihrac icin isaretlenmis
degiskenlerin listesini gorebilirsiniz.

$ export
declare -x HOME="/home/knoppix"
declare -x HZ="100"
declare -x LANG="tr_TR"
declare -x LANGUAGE="tr"
declare -x LOGNAME="knoppix"
declare -x MAIL="/var/mail/knoppix"
declare -x OLDPWD
declare -x PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:
/usr/local/sbin:/usr/local/bin:/usr/games:."
declare -x PWD="/home/knoppix"
declare -x SHELL="/bin/bash"
declare -x SHLVL="2"
declare -x TERM="xterm"
declare -x USER="knoppix"

14.6 Degiskenlerin ihrac icin isaretlenmesi


Eger bir degisken ihrac icin isaretlenmemisse, yeni aclan kabuklar bu degiskenin ayarlarn goremeyecek-
tir.Ancak, bir degisken export built-inine (ihrac yerlesigine) gecirilerek kolaylkla isaretlenebilir:

$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar

Bu ornekte FOO ve BAR degiskenleri ayarlanms durumdalar ama sadece BAR degiskeni ihrac icin
isaretlendi. Yeni bir kabuk oturumu acldgnda, FOO degeri kaybolacaktr. Bu yeni kabuk oturumu
kapatldgnda, orjinal kabugun hala hem FOO hemde BAR degerlerini korudugu gorulecektir:

$ exit
$ echo $FOO $BAR
foo bar

43
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

14.7 Export ve set -x


Bu yap sayesinde, /.bash profile veya /etc/profileda yaratlan ve ayarlanan degiskenler ihrac icin
isaretlendiginde, tekrar ayarlanmalarna gerek kalmaz. Ama baz degiskenler ihrac icin isaretlenemezler,
sistemin kalclg icin, bunlarn /.bashrc dosyasna ve profile konmas gerekir. Bu tercihler set yerlesik
ozelligiyle (built-in) ayarlanr.:
$ set -x
-x, kabugun calstrdg tum komutlar ayn zamanda ekrana da yazmasn saglar:
$ echo $FOO
+ echo foo
foo
Bunlar baz beklenmedik benzerlikleri ve kabuk davranslarn anlamamzda yardmc olur. -x tercihini
iptal etmek icin set +x yapmak yeterlidir. set yerlesigiyle ilgili tum tercihleri bash klavuz sayfasnda
bulabilirsiniz.

14.8 set ile degiskenlerin ayarlanmas


set yerlesigi tercihe bagl olarak, degiskenlerin ayarlarnn yaplmas icinde kullanlabilir. Ancak bu tip
kullanmlarda zorunlu degildir. Ornegin set FOO=foo kabuk komutu FOO=foo ile tamamen ayn isi
yapar. Bir degiskenin ayarlarnn iptal edilmesi de unset yerlesigi ile yaplabilir:
$ FOO=bar
$ echo $FOO
bar
$ unset FOO
$ echo $FOO

14.9 Unset ve FOO= fark


Aradaki fark soylemek her ne kadar zor olsa da, bu komutlar bir degiskenin degerini sfrlamakla ayn
sey degildir. Bunu anlamann bir yolu, set yerlesigini, halihazrdaki tum degiskenleri listelemesei icin
parametresiz olarak cagrmaktr:
$ FOO=bar
$ set | grep ^FOO
FOO=bar
$ FOO=
$ set | grep ^FOO
FOO=
$ unset FOO
$ set | grep ^FOO
set yerlesigini parametresiz olarak cagrmakla export yerlesigini kullanmak hemen hemen ayndr.
Aradaki temel fark, set yerlesigi sadece ihrac icin isaretlenmis olanlar degil, tum degiskenleri listeler.

14.10 Komutlarn calsmalarn etkilemek icin ihrac islemi


Cevre degiskenlerini ayarlayarak, komutlarn calsmalarn etkilemek mumkundur. Yeni kabuk oturumlar
gibi, kabuk penceresi uzerinden calstrdgnz programlar da, sadece ihrac icin isaretlenmis degiskenleri
gorebilecektir. Ornegin man komutu, yaz dosyasnda bir sayfadan digerine gecerken kullanacag program
icin PAGER degiskenine bakar.
$ PAGER=less
$ export PAGER
$ man man
Pager degiskeninin less olarak ayarlanmas, man komutunun ekranda dosyann sadece bir sayfasn
goruntuleyecegini, bir sonraki sayfaya gecmek icin space tusunu bekleyecegini gosterir. Ama PAGER
degiskenini cat olarak ayarlarsak, tum yaz dosyasnn tamam, ara vermeksizin, bir kerede goruntulene-
cektir.
$ PAGER=cat
$ man man

44
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

14.11 env kullanm


Biraz onceki islemde, eger PAGER degiskenini tekrar less olarak degistirmeyi unutursanz, man (ve
daha bircok komut) goruntuleyecekleri yaz dosyalarn, bir kerede ara vermeden gosterecektir. PAGER
degiskeninin sadece bir kereligine cat olarak ayarlanmasn isterseniz, env komutunu kullanmalsnz:

$ PAGER=less
$ env PAGER=cat man man
$ echo $PAGER
less

Bu durumda PAGER degiskeni cat degeriyle birlikte ihrac edilecektir, ancak kabuk oturumundaki
PAGER degeri degismeden kalacaktr.

15 Midnight Commander (MC)


Midnight Commander (MC), Norton Commander benzeri bir dosya yoneticisi ve dizin goruntuleyicisidir.
Yeni baslayanlarn cok sevecegi bircok ozellik ve ipucu ile, MC en hzl ve en kullansl arac kabul edilir.
Aslnda MCnin klavuz sayfas 2500 satra yakndr ama biz burada en onemli kullanm alanlarn in-
celeyecegiz. Hemen hemen tum Linux dagtmlaryla birlikte gelen, dosya tasma, kopyalama veya silme
islemlerini, hem yerel makinede, hemde ftp ile network uzerinden en hzl gerceklestirmenizi saglayacak
olan MCyi calstrmak icin komut satrna:

$mc

yazmak yeterli. MCdeyken Ctrl-o secenegi ile tekrar komut satrna donebilir, yine ctrl-o ile mcye
gecebilirsiniz. Ustte F9 tusu ile ulasabileceginiz menu cubugu gorunur. Ok tuslaryla bu menu cubugunda
gezinebilir, enter tusu ile de o secenege girebilirsiniz. Ekrann altnda da, MCde skca kullanlan fonksiyon
tuslaryla ulasabileceginiz tercihler bulunur. Bazen bu tercihler siz ilgili tusa bastgnzda calsmayabilir.
Bu, fonksiyon tus takmnn farkl ozellikler icin ayarlandg anlamna gelir. Bu durumda ilgili degisiklikleri
yapmanz gerekecektir. Ayarlar
Menu cubugundan Options sekmesini secip Configuration ksmna girdiginizde yapabileceginiz
ayarlar gorebilirsiniz. Tab tusuyla tercihler arasnda gezip space tusuyla da tercihi aktif hale getirebilir
veya aktif olan bir tercihi iptal edebilirsiniz. Buradaki ayarlardan bir tanesi lynx-like motion dur. Bu
tercih aktif oldugunda bir dizinin icine girmek icin sag ok tusu, bir onceki dizine donmek icinde sol ok
tusu kullanlabilir. Boylece enter tusuna bagl kalmaktan kurtulmus olursunuz.

15.1 Dizin panelleri arasnda gezinme


Goruntunuz temel olarak iki ayr parcaya bolunmus gibidir. Sagda ve solda bulunan bu paneller bu-
lundugunuz dizinlerinin iceriklerini goruntulemenizi saglar. Bir panelden digerine tab tusuyla gecebilirsi-
niz. Aktif olan panel, isaretlenmis olandr ve herhangi bir operasyonda kaynak olarak bu isaretli dosya
alnacaktr. Kopyalanacak isaretli dosya diger paneldeki dizine kopyalanacaktr. Tab tusuyla paneller
arasnda gezinip, yukarda anlattgmz gibi, ilgili hedef dizini bulduktan sonra tekrar tabla eski dos-
yaya donup F5 ile kopyalama islemini gerceklestirebilirsiniz. Tum kopyalama islemleri icin kullancdan
dogrulama istenecektir, o yuzden bir hata oldugunda geri donus yaplmas kolaydr. Ayrca insert tusu
yardmyla birden fazla dosyay secebilir, - veya + tuslarna basarak, joker karakterler yardmyla toplu
dosya transferleri gerceklestirebilirsiniz. F6 yeniden adlandrma / tasma, F5 kopyalama, F8 silme icindir.
Yeni bir dizin yaratmak icinde F7yi kullanabilirsiniz. Dosya duzenleme
F4 ile isaretli dosyann icerisine girebilir ve ilgili haklara sahipseniz dosya uzerinde duzenleme yapa-
bilirsiniz. F4 size mcedit programn cagracaktr. Kullanm cok basit olan bu programla, dosya uzerinde
ilgili degisiklikleri yaptktan sonra F2 ile kaydedip F10 ile mceditten ckabilirsiniz.

15.2 Fare destegi


Midnight Commander, fare destegi de saglar. Dosyalar isaretlemek, bir dizinin icine girmek, veya bir
menuyu acmak icin fare ile tklamanz yeterlidir. Calstrlabilir dosyalar da iki kere tklayarak calstra-
bilirsiniz. Ama yine de klavyenin cok daha kullansl olacagn goreceksiniz.

45
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

15.3 FTP islemleri


Sol ya da sag panelin menusunden FTP baglantsn secerek, aclan pencereye FTP adresini girdiginizde,
panellerden birinin FTP uzerinden ulasabileceginiz bir alan gostermesini ve yerel makineniz ile bu FTP
alan arasnda dosya transferleri yaplmasn saglayabilirsiniz.

16 Linux Dosya Sistemi


16.1 Blok Aygtlar
Bu bolumde linux dosya sistemini ayrntl inceleyecegimizden bir sistem yoneticisinin bilmesi gereken tum
detaylardan haberdar olacaksnz. Baslangc olarak blok aygtlar ile giris yapacagz. Bir linux sisteminde en
cok bilinen blok aygtlardan birtanesi de IDE surucusudur. Sistemde /dev/hda olarak temsil edilmektedir.
Eger sisteminiz SCSI surucu ile calsyorsa bu durumda ilk sabit surucunuz /dev/sda olacaktr.
Yukarda belirtilen blok aygtlar disk icin soyut bir arayuz teskil eder. Kullanc programlar surucunu-
zun IDE ya da SCSI olmas ile ilgilenmeksizin disk ile iletisiminde bu blok aygtlar kullanrlar. Program
temelde disk uzerindeki alan, bitisik desteler seklinde ve rastgele-erisilebilir 512lik byte bloklar seklinde
adresler (boler).

16.2 Tum Diskler ve Bolumler


Linux altnda, mkfs olarak adlandrlan ozel bir komuta belirli bir blok aygt komut satr parametresi
olarak vererek dosya sistemleri yaratrz.
Teorik olarak tum diski /dev/hda veya /dev/sda gibi belli bir dosya sistemine ev sahipligi yapacak
sekilde tek bir blok aygt olarak kullanmak mumkun olsa da (bir tanesi tum diski temsil edecek sekilde)
pratikte bu kullanm neredeyse hic tercih edilmez. Bunun yerine tum blok aygtlar, bolum (partition)
denilen daha kucuk ve yonetimi daha kolay parcalara ayrlrlar. Bolumler, fdisk denilen ve her disk
uzerinde saklanan bolum tablosunu yaratmaya ve duzenlemeye yarayan bir arac ile olusturulmaktadr.
Bolum tablosu tum diskin nasl bolunecegini tam olarak belirler.

16.3 fdisk Kullanm


fdisk kendisine verilen secenekleri yardmyla kullanlabilir. Bu secenekleri ve fdisk hakknda ayrntl
bilgiyi man fdisk yazarak alabilirsiniz.
Fdiski calstrmak icin bir aygt ismini de vermeniz gerekir Simdi gelin hem fdiski kullanalm hem de
bir bolumu once silip sonra yeniden yaratalm:

# fdisk /dev/hda

The number of cylinders for this disk is set to 4865.


There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

gimiz islemi yapabiliriz. Tum komutlar listelemek icin m yazp entera basarsak asagdaki gibi bir
liste gorecegiz

Command (m for help): m


Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes

46
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

s create a new empty Sun disklabel


t change a partitions system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):

fdisk ile belli bir aygt uzerinde yer alan bolumler hakknda dogrudan bilgi almak icin -l parametresi
aygt ad ile birlikte kullanlr. Yani:

# fdisk -l /dev/hda

Disk /dev/hda: 40.0 GB, 40020664320 bytes


255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System


/dev/hda1 * 1 1023 8217216 7 HPFS/NTFS
/dev/hda2 1024 4865 30860865 f Win95 Extd (LBA)
/dev/hda5 1024 2316 10385991 b Win95 FAT32
/dev/hda6 2317 2397 650601 82 Linux swap
/dev/hda7 2398 4513 16996738+ 83 Linux
/dev/hda8 4514 4865 2827408+ 83 Linux

Bu ornekte goruyoruz ki sistemimizde hda6, hda7 ve hda8 adnda ve linux ile iliskili 3 adet bolum
yeralmaktadr. Bu bolumlerden hda6 ile belirtilen linux swap dosya sistemini, hda7 root denilen ana
dizinlerin yer aldg dosya sistemini ve hda8 de ucuncu bir dosya sistemini temsil etmektedir. Daha da
yukarda da windows ile iliskili dosya sistemlerini gormekteyiz. Tabloda her bulumun basladg ve bittigi
silindir numaralar da ayrntl olarak gorulmekte ve her bolumde yer alan bir dosya sistemi icin de id
numaras verilmektedir. Linux ile iliskili dosya sistemleri 83 nolu id ile belirlenir.
Son olarak yine ayn amaca yonelik ve daha gorsel bir menu sunan cfdisk aracn da kullanabilirsiniz.
Bu arac size bir menu saglamakta ve yapmak istediginiz tum islemleri bu menu ile kolaylkla yapmanza
olanak saglamaktadr. Sisteminizde bu program varsa sadece cfdisk yazarak calstrabilirsiniz:

# cfdisk

PClerin ilk zamanlarnda bolum yapc programlar sadece dort bolum olusturmaya (bunlara birincil
-primary- deniyordu) izin veriyorlard. Bu cok snrlaycyd, o yuzden uzatlms(extended) bolum diye
bir yontem ile bu snrlama asld. Uzatlms bolum, birincil bolume cok benzer ve yine dort bolumluk
snrlamann icinde kalrlar. Fakat uzatlms bolumlerin icine istediginiz kadar mantksal (logical) bolum
koyabilirsiniz, boylece dort bolum snr da aslms olur.

16.4 fdisk Kullanm, Devam


Command (m for help): p
Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 49 264600 82 Linux swap
/dev/hda3 50 70 158760 83 Linux
/dev/hda4 71 2184 15981840 5 Extended
/dev/hda5 71 209 1050808+ 83 Linux
/dev/hda6 210 348 1050808+ 83 Linux
/dev/hda7 349 626 2101648+ 83 Linux
/dev/hda8 627 904 2101648+ 83 Linux
/dev/hda9 905 2184 9676768+ 83 Linux
Command (m for help):

Bu ornegimizde, hda1den hda3e kadar birincil bolumleri gormekteyiz. hda4 ise hda5ten hda9a kadar
mantksal suruculeri iceren uzatlms bir bolumdur. O halde demek ki hda4 bolumunu tek basna bir dosya

47
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

sistemi barndracak sekilde kullanamyoruz. Goruldugu gibi bu uzatlms bolum hda5ten hda9a kadar
olan bolumler icin bir tasyc vazifesi gormektedir. Ayrca goruldugu gibi her bolum bir id ya da
bolum tipi denilen bir degere sahiptir. Yeni bir bolum yarattgnz zaman bu bolum tipi nin duzgun
ayarlandgndan emin olmanz gerekmektedir. Linux dosya sistemi barndracak olan bolumler icin bolum
tipi olarak 83 degeri dogru bir secim olacaktr. Linux swap dosya sistemini barndracak bolumler icin
de bu deger 82 olmaldr.
fdisk komutunda t parametresini kullanarak bolum tipini ayarlayabilirsiniz. Linux cekirdegi acls
srasnda disk uzerindeki dosya sistemlerini ve swap aygtlarn otomatik tanmak icin bolum tipi ayarlarn
kullanmaktadr.

16.5 Fdisk ve Otesi


fdisk ile yapabilecegimiz yeni disk yaratmak (n komutu ile), degisiklikleri diske yazmak (w komutu ile) ve
daha bircok islemin oldugunu soyleyebiliriz. Hatrlarsanz m yazarak yardm alabiliyorduk. Eger fdisk kul-
lanm konusunda tecrubesizseniz size, icerisinde onemli saylabilecek bilgi icermeyen ayr bir disk uzerinde
bu program kullanarak kavramaya calsmanz oneririz. Bir defa bolumleri yaratp diske yazdgnzda,
yeni bolum blok aygtlarnz kullanma hazr demektir. Bu yeni blok aygtlar yeni linux dosya sistemlerini
saklamak amacyla kullanacagz.

16.6 Dosya Sistemlerini Yaratmak


Bir blok aygt dosyalar barndrmak amacyla kullanlmadan once, bu aygt uzerinde yeni bir dosya sistemi
yaratmamz gerekmektedir. Bu islem icin mkfs komutunu kullanrz. Kullanacagmz mkfs, yaratmak
istedigimiz dosya sisteminin tipine gore degismektedir. Bu ornekte, bos ve kullanlmayan blok aygt olan
/dev/hda8 uzerinde ext2 dosya sistemi yaratmak icin mke2fs kullanyoruz:
# mke2fs /dev/hda8
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
354112 inodes, 706852 blocks
35342 blocks (5.00%) reserved for the super user
First data block=0
22 block groups
32768 blocks per group, 32768 fragments per group
16096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Writing inode tables: done


Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or


180 days, whichever comes first. Use tune2fs -c or -i to override.

Yukardaki ornekte az once de soyledigimiz gibi mke2fs komutu /dev/hda8 uzerinde ext2 dosya sistemi
yaratt.

16.7 Dosya sistemlerini mount etmek


Bir dosya sistemini olusturduktan sonra onu mount edebiliriz.
# mount /dev/hda8 /mnt/usrDeneme

Bir dosya sistemini mount etmek icin, disk bolumu blok aygtn ilk arguman olarak ve bir mount
(baglama) noktasn ikinci arguman olarak belirtmek gerekir. Yeni dosya sistemi artk sozkonusu baglant
noktasndan erisilebilir olacaktr. Bu ayn zamanda /mnt dizini altndaki dosyalar saklama etkisi de yapa-
bilir. Sozkonusu dosya sistemi umount islemine tabi tutuldugunda artk buradaki eski dosyalar gorunmez-
ler. umount komutunu kullandktan sonra /mnt altndaki yeni baglanma noktasna eklenen yeni dosya ve
dizinler artk yeni dosya sisteminde yeralr.

48
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

16.8 Takas bolumu olusturmak ve kullanmak


Takas aygt olarak kullanlmak uzere bir disk bolumu olusturduysak, bunu mkswap komutu ile duzenle-
yebiliriz. Dogal olarak bu komutun arguman bolum blok aygt olacaktr.
Not: Burada mkswap PATH degiskeninin gosteridigi dizlerin altnda ontanml olarak yer almayabilir.
Bunun icin /sbin dizini de PATH degiskenine eklemek ya da komutu /sbin/mkswap seklinde kullanmak
gerekecektir.
# mkswap /dev/hdc6

Geleneksel dosya sistemlerinin aksine takas bolumleri mount edilmez. Bunun yerine swapon komutu
ile aktif hale getirilirler.
# swapon /dev/hdc6

Normalde, Linux sisteminizin baslangc betikleri, otomatik olarak takas bolumlerini etkin hale geti-
recektir. Bu yuzden swapon komutu takas bolumlerini o an kullanmak istediginizde kullanlr. Mevcut
takas aygtlarn gormek icin, cat /proc/swaps komutunu vermeniz gerekir.

16.9 Mount edilmis dosya sistemlerini gormek


Hangi dosya sistemlerinin mount edildigini gormek icin mount komutunu tek basna calstrn.
$ mount
/dev/hda7 on / type xfs (rw)
none on /proc type proc (rw)
none on /proc/bus/usb type usbdevfs (rw)
none on /dev type devfs (rw)
none on /dev/pts type devpts (rw,mode=0620)
none on /mnt/cdrom type supermount
(ro,dev=/dev/hdc,fs=auto,--,iocharset=iso8859-1,
codepage=850,umask=0)
none on /mnt/floppy type supermount
(rw,sync,dev=/dev/fd0,fs=auto,--,iocharset=iso8859-1,
codepage=850,umask=0)
/dev/hda5 on /mnt/win_d type vfat
(rw,iocharset=iso8859-1,codepage=850,umask=0)
automount(pid1505) on /misc type autofs
(rw,fd=7,pgrp=1505,minproto=2,maxproto=4)
automount(pid1526) on /net type autofs
(rw,fd=7,pgrp=1526,minproto=2,maxproto=4)
/dev/hda1 on /mnt/win_c type ntfs (ro,iocharset=iso8859-1,umask=0)

Benzer bilgilere cat /proc/mounts yazarak da erismeniz mumkun. Baz Linux sistemlerinde devfs
sistemi kullanldgndan, bu komutun cktsnn ilk satrnda root bolum blok aygtnn uzun bir yolu
bulunmaktadr. Root dosya sistemi, kernel tarafndan acls srasnda otomatik olarak mount edilmek-
tedir. Devfs aygt-yonetim dosya sistemini kullanan yeni sistemlerde /dev altnda artk bolum ve disk blok
aygtlarnn eskiden kullanlan isimleri bulunmamaktadr. Mesela /dev/ide/host0/bus1/target0/lun0/part7
/dev/hdc7 nin asl addr ve /dev/hdc7 asl blok aygtna bir sembolik linktir. Sisteminizin devfs kullanp
kullanmadgn /dev/.devfsd dosyasnn olup olmadgna bakarak gorebilirsiniz. Eger varsa devfs aktif
demektir.

16.10 Mount Secenekleri


mount seceneklerini kullanarak mount edilecek dosya sisteminin cesitli ozelliklerini ozellestirmek mum-
kundur. Mesela ro secenegini kullanarak bir dosya sitemini sadece okunabilir (read only) halde yarata-
bilirsiniz.
# mount /dev/hda8 /mnt/usrDeneme -o ro

/dev/hda8 in /mnt altna bu secenek ile mount edilmesi sonucunda /mnt altnda hic bir dosya
degistirelemez, sadece okunabilir. Eger dosya sisteminiz zaten okuma/yazma modunda mount edilmisse
ve bunu sadece okunabilir moda degistirmek istiyorsanz sistemi once umount sonra da tekrar mount
etmek yerine remount secenegini kullanabilirsiniz.

49
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# mount /mnt/usrDeneme -o remount,ro

Dikkat ediniz burada bolum blok aygt belirtmedik. Cunku dosya sistemi zaten mount edilmis haldedir
ve mount komutu /mnt/usrDeneme nin /dev/hda8 ile iliskili oldugunu zaten bilmektedir. Dosya sistemini
tekrar yazlabilir hale getirmek icin tekrar remount kullanyoruz:
# mount /mnt/usrDeneme -o remount,rw

Sunu belirtmek gerekir ki eger herhangi bir surec /mnt altndaki dosya ya da klasorlerden bir tanesini
kullanyorsa remount komutlar duzgun olarak calsmayacaktr. Yani bir mount edilen bir dosya icerisinde
sadece ls komutnu calstryor olsak bile bu durumda iken umount calsmayacaktr:
# cd usrDeneme/
# ls
buBolumHakkinda.txt deneme/
# umount /mnt/usrDeneme/
umount: /mnt/usrDeneme: device is busy

Linux altnda tum mount secenekleri hakknda ayrntl bilgi almak istiyorsanz man mount yazmanz
yeterlidir.

16.11 fstab, Giris


Su ana kadar el yordamyla mount islemin nasl yapabilecegimizi gorduk. Genel olarak belli bir kurala gore
duzenli bir sekilde mount etmeniz gereken bir dosya sistemi oldugunda el yordamyla mount etmek biraz
karmask ve zor bir islem haline gelecektir. Ayrca baz dosya sitemleri icin de, mesela /var dosya sistemi,
zaten el yordamyla mount islemi imkanszdr. Sonucta el yordamyla mount yerine eger varsa boyle
dosya sistemlerini acls srasnda otomatik bir sekilde mount etmek gerekir. Bunu sisteme yaptrmak icin
yapmamz gereken tek sey /etc/fstab dosyasna uygun satrlar eklemek olacaktr. Bir dosya sisteminin
acls srasnda otomatik olarak mount edilmesini tercih etmeseniz bile, /etc/fstab dosyasna yazlacak
satrlar ile bu islemin cok kolay bir sekilde yaplabilecegini soylemeliyiz.

16.12 Ornek bir fstab Dosyas


Gelin ornek bir /etc/fstab dosyasn inceleyelim:
# cat /etc/fstab
# <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/hda7 / xfs defaults 1 1
none /dev/pts devpts mode=0620 0 0
none /mnt/cdrom supermount dev=/dev/hdc,fs=auto,ro,--,iocharset=iso8859-1,
codepage=850,umask=0 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=auto,--,iocharset=iso8859-1,
sync,codepage=850,umask=0 0 0
/dev/hda8 /mnt/usrDeneme ext3 noauto,noatime 1 2
/dev/hda1 /mnt/win_c ntfs iocharset=iso8859-1,ro,umask=0 0 0
/dev/hda5 /mnt/win_d vfat iocharset=iso8859-1,codepage=850,umask=0 0 0
/dev/hda6 swap swap defaults 0 0
# /proc should always be enabled
proc /proc proc defaults 0 0

Yukardaki /etc/fstab dosyasnn icinde aktif haldeki (basnda # isareti olmayan) her satr bir bolum
blok aygt, bir baglanma noktas, bir dosya sistemi cesidi, dosya sistemi baglanrken kullanlan dosya
sistemi secenekleri ve iki adet saysal alan icermektedir.
Birinci saysal alan dump back up komutuna yedeklenecek dosya sistemlerini bildirir. Eger sistemi-
nizi yedeklemeyi dusunmuyorsanz tabi ki bu sayy goz ard edebilirsiniz. Son say ise dosya sistemi
butunlugunu kontrol eden fsck tarafndan kullanlmaktadr ve bu programa acls srasnda dosya siste-
minin hangi srada kontrol edilmesi gerektigini anlatr. fsck birkac noktada tekrar deginecegiz.
/dev/hda8 yazl satr inceledigimizde ext3 dosya sistemine sahip oldugunu ve /mnt/usrDeneme
altndan mount edildigini gormekteyiz. Ayn satrda /dev/hda8 in mount seceneklerine baktgmzda
sunlar gormekteyiz: noauto, acls srasnda bu dosya sisteminin otomatik olarak mount edilmemesi ge-
rektigini soyler. Bu secenek olmadan /dev/hda8 acls srasnda /mnt/usrDeneme altna otomatik olarak
mount edilecektir.

50
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

noatime secenegi ile de disk uzerindeki atime (son erisim zaman) kaydnn tutulmamas saglanmak-
tadr. Bu bilgi genelde gerekli degildir ve bu ozelligin kaldrlmas dosya sistemi uzerinde performans
artsna neden olmaktadr. nodiratime mount secenegi ile de dizinler uzerindeki atime guncellemesini de
iptal edebilirsiniz.

16.13 Ornek bir fstab, Devam


# <fs> <mountpoint> <type> <opts> <dump/pass>
/dev/hda7 / xfs defaults 1 1
none /dev/pts devpts mode=0620 0 0
none /mnt/cdrom supermount dev=/dev/hdc,fs=auto,ro,--,iocharset=iso8859-1,
codepage=850,umask=0 0 0
none /mnt/floppy supermount dev=/dev/fd0,fs=auto,--,iocharset=iso8859-1,
sync,codepage=850,umask=0 0 0
/dev/hda8 /mnt/usrDeneme ext3 noauto,noatime 1 2
/dev/hda1 /mnt/win_c ntfs iocharset=iso8859-1,ro,umask=0 0 0
/dev/hda5 /mnt/win_d vfat iocharset=iso8859-1,codepage=850,umask=0 0 0
/dev/hda6 swap swap defaults 0 0
# /proc should always be enabled
proc /proc proc defaults 0 0

Simdi de /proc yazl satra bir goz atalm. Buradaki default secenegine dikkat edin. Eger bir dosya sis-
temin standart mount secenekleri ile mount etmek isterseniz defaults secenegini kullanmalsnz. /etc/fstab
dosyasnda bircok alan yer aldg icin secenek alanmz bos brakamayz. Ayrca /dev/hda6 satrna da
goz atalm. Bu satr /dev/hda6y swap aygt olarak belirlemektedir. Swap aygtlar diger dosya sistem-
leri gibi mount edilmediginden, mount noktas ksmna swap yazldgn gormekteyiz. /etc/fstab dosyas
sayesinde /dev/hda6 swap aygtmz acls srasnda otomatik olarak aktif hale gelecektir.
Asagdaki gibi yazmak yerine, yukarda oldugu gibi bir /etc/fstab icerisinde /dev/cdrom kullanarak
CD-ROM surucuyu mount etmek daha kolay hale gelecektir.

# mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro

artk soyle yazlabilir:

# mount /dev/cdrom

/etc/fstab dosyasn kullanmak user seceneginin verecegi avantajdan yararlanmamz saglar. user
mount secenegi, sisteme ilgili dosya sisteminin herhangi bir kullanc tarafndan mount edilebilecegini
bildirir. Ayrca users ile de tum kullanclarn ilgili aygt mount edebileceginiz belirleyebiliriz. CD-ROM
gibi tasnabilir aygtlar icin bu ozellik cok kullansldr. Bu mount secenegi olmasayd sadece root kullanc
CD-ROM surucuyu mount edebilirdi.

16.14 Dosya sistemlerini Unmount Etmek


Genelde sistem yeniden baslatldgnda ya da kapatlrken mount edilmis tum dosya sistemleri otomatik
olarak unmount edilir. Bir dosya sistemi unmount edilecegi zaman gecici bellekte bekleyen herhangi bir
dosya sistemi bilgisi diske yazlr.
Ayrca el yordam ile de istenirse unmount islemi gerceklestirilebilir. Bir dosya sistemini unmount
etmeden once bu sistem uzerinde herhangi bir surec tarafnda aclms ya da kullanlan dosya olmadgndan
emin olmalyz. Bu durum saglandgnda aygt adn ya da baglama noktasn parametre olarak girerek
unmount komutunu kullanabiliriz.

# umount /mnt

veya

# umount /dev/hdc6

unmount sonrasnda, /mnt altnda onceden mount edilmis sistemin kapsadg dosyalar yeniden beli-
recektir.

51
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

16.15 fsckya Giris


Eger sistemimiz bir sekilde kilitlenir ya da bozulursa, sistem duzgun bir sekilde dosya sistemlerini unmount
etmeyi basaramayacaktr. Bu durumda dosya sistemi guvensiz bir durum icerisine girmis olur. Sistem
tekrar baslatldgnda fsck bu dosya sistemlerinin duzgun bir sekilde unmount edilmedigini saptayacak ve
/etc/fstab icerisinde listelenen dosya sistemlerinin butunlugunu kontrol etmek isteyecektir.
Sunu onemle belirtmek gerekir ki, fsck tarafndan kontrol edilecek bir dosya sisteminin /etc/fstab
dosyasnda yer alan satrnda, pass alannda (son alan) sfr olmayan bir say olmaldr. Tipik olarak
kok dosya sisteminin passno degeri 1 saysdr ki bu kok dizinin ilk olarak kontrol edilecek dosya sistemi
olacagn belirler. Kontrol edilecek diger tum dosya sistemlerinin de passno alanna benzer sekilde 2 ya
da daha buyuk bir deger verilmelidir.
Bazen sistemin yeniden baslatlmas srasnda fscknn ksmen zarar gormus bir diski tam olarak ona-
ramadgn goruruz. Boyle durumlarda sistemi tek kullanc calsr hale getirerek fscky el yordamya
calstrmak gerekir. Bu kullanmda kontrol edilecek blok aygt fsckya parametre olarak gondeririz. fsck
dosya sistemi tamiratn gerceklestirirken ksmi dosya sistemi zararlarn duzeltip duzeltmeyecegini sora-
caktr. Genel olarak bu sorulara y (yes) cevab vererek fscknn sistemi onarmasn saglamalyz.

16.16 fsck ile Ilgili Problemler


Disk uzerinde yer alan bilgilerin butunlugunun kontrol edilebilmesi icin fsck butun diski taramaktadr.
Bu problemlerden bir tanesidir. Ozellikle cok buyuk dosya sistemlerinde fscknn calsmasnn bir saatten
daha da uzun surmesi beklenen bir durumdur.
Bu problemi cozmek icin journaling denilen yeni bir dosya sistemi gelistirilmistir. Journaling dosya
sistemi disk uzerindeki dosya sistemi icerisinde yaplan degisikleri disk uzerinde gunluk dosyasna kayde-
der(log file). Sistemde meydana gelen bir arza durumunda dosya sistemi surucusu bu gunluk dosyasn
arastrr. Bu dosya son degisiklerin tam bilgisini tuttugu icin sadece bu ksmlarn hatalar icin kontrol
edilmesi yeterlidir. Bu yeni tasarm sayesinde dosya sisteminin buyuklugune bagl olmakszn, fscknn
kontrol etme islemi sadece birkac saniye surmektedir. Bu yuzden Linux camiasinda journaling dosya
sistemlerinin popularitesi artar hale gelmistir.
Simdi gelin Linuxun degisik dosya sistemlerine bir goz atalm.

16.17 ext2 Dosya Sistemi


Uzun yllardr ext2 dosya sistemi linux icin standart haline gelmis durumdadr. Bu dosya sistemi bircok
uygulama icin iyi bir performans sergilese de yukarda bahsettigimiz journaling yetenegine sahip degildir.
fscknn calsmas cok uzun zaman alacagndan buyuk dosya sistemleri icin ext2nin bu ozelligi uygunsuz-
luk yaratr. Buna ek olarak her ext2 dosya sisteminin tasyabilecegi inode says snrl oldugundan, ext2
dosya sisteminin baz yapsal kstlamalar vardr. Tum bu bilgilerle ext2 icin oldukca saglam ve verimli
ancak non-journalised bir dosya sistemidir diyebiliriz.

Yer aldg cekirdekler: 2.0+

journaling yetenegi: yok

mkfs komutu: mke2fs

mkfs ornegi: mke2fs /dev/hdc7

ilgili komutlar: debugfs, tune2fs, chattr

performans ile ilgili komut secenekleri: noatime, nodiratime

16.18 ext3 Dosya Sistemi


Bu dosya sistemi diski ext2 ile ayn sekilde bicimlendirir ancak journaling yetenegini de kazandrr.
Aslnda tum Linux dosya sistemleri icerisinde ext3 en kapsaml journaling destegine sahip olandr. Sa-
dece dokuman ozelliklerini (metadata) kaydetmek yerine ayrca tum dokuman ozellikleri art bilgilerin
de journaling kaydn tutar. Bu ozel journaling yetenegi sadece fscknn calsmasn ksaltmakla kalmaz
ayrca bilgi butunlugunun saglanmasna da yardmc olmaktadr. Bu yuzden bilgi butunlugunun en onemli
oncelige sahip oldugu sistemler icin en iyi dosya sistemi ext3 olacaktr. Fakat baz durumlar icin bu bilgi
butunlugu performans etkilemektedir. Buna ek olarak ext3 dosya sistemi diski ext2 ile ayn sekilde

52
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

bicimlendirdigi icin yukarda bahsedilen ext2 snrlandrmalarndan nasibini almaktadr. Eger oldukca
saglam genel amacl ve journalised yetenegine sahip bir dosya sistemine ihtiyac duyuyorsanz ext3 iyi bir
secim olacaktr.

Yer aldg cekirdek: 2.4.16+

journaling: metadata, ordered data writes, full metadata+data

mkfs komutu: mke2fs -j

mkfs ornegi: mke2fs -j /dev/hdc7

ilgili komutlar: debugfs, tune2fs, chattr

performans ile ilgili mount secenekleri: noatime, nodiratime

diger mount secenekleri:

* data=writeback (disable journaling)


* data=ordered (the default, metadata journaling and data is written out to disk with metadata)
* data=journal (bilgi ve dosya ozellikleri butulugu icin tam data journaling. Yazma perfor-
mansn yarya dusurur)

ext3 kaynaklar:

* Andrew Mortons ext3 page


* Andrew Mortons excellent ext3 usage documentation (recommended)
* Advanced filesystem implementors guide, part 7: Introducing ext3
* Advanced filesystem implementors guide, part 8: Surprises in ext3

16.19 ReiserFS Dosya Sistemi


ReiserFS dosya sistemi kucuk dosya performans, cok iyi genel performans, ve kolay olceklendirilebilirlik
(bolumlenebilir) amacyla tasarlanms ve digerlerine nazaran oldukca yeni bir dosya sistemidir. ReiserFS
dosya sistemi uzun suren fsckdan kurtulmak amacyla dosya ozellikleri (metadata) gunlugu kullanr.
Ancak gunluk gerceklemesi (implementation) sistem kilitlenmesi durumunda son degisiklerin yapldg
bilginin bozulmasna izin verir. Genel olarak ReiserFS cok iyi bir performans sergilemektedir. Ancak
baz dosya sistemi yukleri icin garip performans davranslar sergilemektedir. Buna ek olarak ReiserFSin
fsck arac henuz baslangc asamasnda oldugundan bozulmus bir dosya sisteminden bilgi kurtarmakta
zorlanabilirsiniz. ResiserFSin yeni olmasndan kaynaklanan bu konular yuzunden bu dosya sisteminin
gelisimi halen devam etmektedir. Hz ve olceklendirilebilirligi yuzunden bircok kisi tarafndan tercih
edilmektedir.

Yer aldg cekirdekler: 2.4.0+ (2.4.16+ onerilen)

gunluk tutma(journaling): dosya ozellikleri (metadata)

mkfs komutu: mkreiserfs

mkfs ornegi: mkreiserfs /dev/hdc7

performans ile ilgili mount secenekleri: noatime, nodiratime, notail

ReiserFS Kaynaklar:

* The home of ReiserFS


* Advanced filesystem implementors guide, Part 1: Journalling and ReiserFS
* Advanced filesystem implementors guide, Part 2: Using ReiserFS and Linux 2.4

53
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

16.20 XFS Dosya Sistemi


XFS dosya sistemi SGI tarafndan Linuxa port edilmis, gunluk tutan bir dosya sistemidir. XFS henuz
mevcut cekirdege yerlestirilmemistir. XFS hakknda genis bilgi almak icin http://oss.sgi.com/projects/xfs
sayfasn ziyaret edebilirsiniz. XFSe giris icin Advanced filesystem implementors guide, Part 9: Introdu-
cing XFS dokumann okuyabilirsiniz.

16.21 JFS Dosya Sistemi


JFS yuksek performansl gunluk tutan ve Linuxe IBM tarafndan port edilmis bir dosya sistemidir.
JFS IBM enterprise sunucular tarafndan kullanlr ve yuksek performans icin dizayn edilmistir. JFS de
mevcut kernel icerisine henuz yerlestirilmemistir. JFS projesi web sitesinde bu dosya sistemi hakknda
daha ayrntl bilgi bulabilirsiniz.

16.22 VFAT Dosya Sistemi


VFAT dosya sistemi Linux dosyalarn depolayabileceginiz gercek bir dosya sistemi degildir. Daha ziyade
DOS ve Windows FAT tabanl isletim sistemleri ile dosya paylasmna ve degisimine olanak saglayan DOS
uyumlu bir dosya sistemi surucusudur. VFAT dosya sistemi surucusu standart Linux cekirdegi icerisinde
yer almaktadr.

17 Sistemi Baslatmak
Bu bolumde Linux sistem acls isleminden bahsedilmektedir. Burada boot yukleyicisi kavramn, aclsta
cekirdek ayarlarn nasl yapacagmz ve acls log dosyalarn nasl inceleyecegimizi gorecegiz.

17.1 MBR
Sistemin yuklendigi dagtma bakmakszn acls islemi tum Linux makinalarda birbirine benzemektedir.
Asagdaki ornek hardiske bir goz atalm:

+----------------+
| MBR |
+----------------+
| Partition 1: |
| Linux root (/) |
| containing |
| kernel and |
| system. |
+----------------+
| Partition 2: |
| Linux swap |
+----------------+
| Partition 3: |
| Windows 3.0 |
| (last booted |
| in 1992) |
+----------------+

Ilk olarak bilgisayarn BIOSu harddiskinizin ilk birkac sektorunu okumaktadr. Bu sektorler icerisinde
Master Boot Record ya da MBR denilen cok kucuk bir program yer almaktadr. MBR Linux
cekirdeginin (yukardaki ornekte bolum 1) yerinin bilgisini saklamaktadr. Boylelikle cekirdegi bellege
yukler ve baslatr.

17.2 Cekirdek Acls Islemi


Bundan sonra gorecegimiz (her ne kadar cok hzl bir sekilde gecse de ) asagdakine benzer bir satr
olacaktr:

Linux version 2.4.16 (root@time.flatmonk.org)


(gcc version 2.95.3 20010315 (release))

54
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Bu satr cekirdek calsmaya basladg zaman ekrana bastg ilk satrdr. Ilk ksm cekirdegin surumunu,
bundan sonra gelen satr cekirdegi yazan kisinin kimligini (genellikle root), sonraki ksm derleyiciyi ve
sonra da yazldg saat dilimini (timestamp) belirtmektedir.
Bundan sonra gelen satrlarda ise sistemde yer alan donanma bagl olarak islemci, disk kontrol edici,
PCI veriyolu, diskler, ses kartlar, seri portlar, disket suruculer, USB aygtlar, ag adaptorleri ve muhtemel
diger donanmlarla ilgili bunlarn durumlarn gosteren raporlar yer alacaktr.

17.3 /sbin/init Program


Cekirdek yuklemesini tamamladg zaman init denilen bir program cagrmaktadr. Bu program sistem
kapatlncaya kadar calsmaya devam eder. Asagda da goreceginiz gibi programa verilen process ID her
zaman 1 degerini alr.

$ ps --pid 1
PID TTY TIME CMD
1 ? 00:00:04 init.system

init program bundan sonra birtakm betikler (script) calstrarak dagtmn geri kalan ksmn da
baslatr. Bu betikler geleneksel olarak /etc/rc.d/init.d dosyasnda yer alr ve sistemin sunucu adn belir-
leyen, dosya sistemini hatalara kars denetleyen, genel dosya sistemlerini mount eden, ag uygulamalarn
baslatan, yazc servislerini baslatan ve bunun gibi islemleri gerceklestirecek baz servisleri calstrrlar.
Betiklerin calsmas tamamlandgnda, init getty adnda ve giris ekrann getiren bir program calstrr.

17.4 LILOyu Inceleyelim


Su ana kadar acls islemine genel bir baks yapms olduk. Simdi ilk ksm, MBR ve cekirdegin yuklenmesini
biraz daha ayrntl inceleyelim. MBRnin bakm boot loader sorumlulugundadr. x86 tabanl Linux
sistemleri icin en populer iki boot loader LILO (LInux LOader) ve GRUB (GRand Unified Bootloader)
dr. Bu ikisi icerisinde LILO daha eski ve daha cok bilinen boot loader dr. Sistemde LILOnun hazr
oldugu zaman bu durum aclsta LILO boot: seklinde bildirilir. Sunu belirtmek gerekir ki, genelde
sistem duraklamadan konfigurasyon ayarlar yaptgndan, bu satr gorebilmek icin shift tusuna basmanz
gerekebilir.
LILO komut satrnda bundan daha fazla birsey yazmayacaktr. Ancak eger < tab > tusuna basarsanz
karsnza mevcut cekirdeklerin ya da diger isletim sistemlerinin yer aldg bir liste gelecektir. Bunlardan
bir tanesini yazarak ya da < enter > tusuna bakarak istediginizi baslatabilirsiniz. Alternatif olarak sadece
< enter > tusuna basarsnz ve ontanml olarak listedeki ilk secenek baslatlms olur.

17.5 LILO Kullanm


Nadir olarak acls srasnda cekirdege bir secenek gondermek isteyebiliriz. En cok bilinen bu seceneklerden
bazlar root=alternatif bir root dosya sistemi belirlemek icin, init=alternatif bir init program belirlemek
icin (mesela konfigurasyonu bozulmus bir sistem icin init=/bin/sh) ve mem=sistemdeki hafza miktarn
belirlemek icin (ornegin Linuxun sadece 128MByi otomatik olarak algladg durum icin mem=512M).
Bu secenekleri LILO acls komutuna gonderebilirsiniz.

LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M

Eger duzenli olarak komut satr secenekleri kullanmak istiyorsanz, bunlar /etc/lilo.conf dosyasna
yazabilirsiniz. Bu dosyann format lilo.conf (5) klavuz sayfasnda acklanmaktadr.

17.6 LILO Hakknda Onemli Not


GRUB incelemeye gecmeden once LILO hakknda bilinmesi gereken birsey daha oldugunu soyleme-
liyiz. /etc/lilo.conf dosyasnda degisiklik yaptgnz zaman ya da yeni bir cekirdek yuklediginiz zaman
liloyu calstrmanz gerekmektedir. LILO program MBRyi yeniden yazarak yeni cekirdegin tam yerini
de icerecek sekilde yaptgnz degisikleri gecerli hale getirir.
Buradaki ornekte LILOyu acklamal (verbose) mod ile calstryoruz:

55
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

# lilo -v
LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
lba32 extensions Copyright (C) 1999,2000 John Coffman
Reading boot sector from /dev/hda
Merging with /boot/boot.b
Mapping message file /boot/message
Boot image: /boot/vmlinuz-2.2.16-22
Added linux *
/boot/boot.0300 exists - no backup copy made.
Writing boot sector.

17.7 GRUB Inceleyelim


GRUB boot loader LILOdan sonra gelen ve gelecek nesil boot loader olarak gorebilecegimiz bir uygula-
madr. LILOnun komut satr sistemi yerine menu arayuzu saglamaktadr. Ancak sistem yoneticileri icin
bu farklar cok onemli degildir. GRUB LILOnun destek verdiginden daha fazla isletim sistemine destek
vermektedir. Acls menusunde sifre tabanl baz guvenlik ayarlar sunmaktadr ve yonetimi de kolaydr.
GRUB genellikle grub-install komutu ile yuklenmektedir. Bir kez kuruldugunda, GRUBn menu-
su /boot/grub/menu.lst dosyas duzenlenerek yonetilebilir. GRUB kurulumu ve yonetimi bu dokumann
faaliyet alannda olmadgndan bu islemler icin GRUB info sayfalarn okumanz oneririz.

17.8 GRUB Kullanm


Cekirdege parametre vermek icin boot menusunde iken e tusuna basmanz gerekir. Bu size yuklemek is-
tediginiz cekirdek adn girmenize ya da cekirdege gonderilecek parametreleri girmenize olanak saglar.
Duzenleme islemini bitirdiginizde, < enter > tusuna ve sonra da b tusuna basarak yaptgnz yeni
degisiklikler ile birlikte sistemi baslatabilirsiniz.
LILO ile GRUB arasndaki bahsedilmesi gereken onemli bir degisiklik ise GRUBun yeni bir cekirdek
yuklendiginde ya da kendisi konfigure edildiginde tekrar kurulmaya ihtiyac duymamasdr. Bunun nedeni
GRUBn Linux dosya sistemiyle interaktif calsmas, LILOnun ise sadece yuklenecek olan cekirdegin
yerini tutmasdr. Bu tek ozellik yeni bir cekirdek yukledikten sonra lilo yazmay unutan sistem yonetici-
lerinin bosuna is yapms hissiyle sinirlenmelerine engel olmaktadr

17.9 dmesg
Cekirdek ve init betiklerinden (script) gelen acls mesajlar genelde cok cabuk gecmektedir. Bir hata
mesajn farketseniz bile siz daha mesaj alglayamadan o kaybolacaktr. Bu durumda neyin yanls gittigini
anlayabilmek icin (ayrca nasl duzelteceginize dair fikir sahibi olmak icin ) acls islemi tamamlandktan
sonra bakabileceginiz iki yer vardr.
Eger hata cekirdek yuklenirken ya da donanm aygtlar arastrlrken meydana gelmis ise dmesg
komutu ile cekirdegin log dosyasnn bir kopyasn ekrana getirebilirsiniz.
# dmesg | head -1
Linux version 2.4.16 (root@time.flatmonk.org)
(gcc version 2.95.3 20010315 (release))

Burada gordugunuz gibi cekirdegin yuklenmesi srasnda yazdg ilk satr ortaya ckt. Gercekten de
eger dmesg komutunu cktsn bir sayfa goruntuleyiciye koyarsanz cekirdegin aclsta yazdg butun
mesajlar ve ayn anda cekirdegin konsola yazdg butun mesajlar gorebilirsiniz.

17.10 /var/log/messages
Bilgi icin baklacak ikinci yer ise /var/log/messages dosyas olacaktr. Bu dosya kutuphanelerden, diger
arka plan sureclerden ve cekirdekten gelen bilgileri giris olarak alan syslog arka plan sureci (daemon)
tarafndan kaydedilmektedir. messages dosyasndaki her satr tarihlendirilmistir. Bu dosya aclsta init
betiklerinin calsmas srasnda meydana gelen hatalar incelemek icin iyi bir dosyadr. Ornegin kerneldan
gelen son birkac mesaj gormek icin:
# grep kernel /var/log/messages | tail -3
May 1 21:17:29 localhost kernel: hdc: ATAPI 52X CD-ROM drive, 128kB Cache, DMA
May 1 21:17:29 localhost kernel: Uniform CD-ROM driver Revision: 3.12
May 1 21:17:29 localhost kernel: SCSI subsystem driver Revision: 1.00

56
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

17.11 Tek-kullanc Modu


Cekirdege acls srasnda parametre gonderilebilecegini artk biliyoruz. En sk kullanlan paramereler-
den birtanesi sistemi single-user modunda acmaya yarayan s parametresidir. Bu mod sadece root dosya
sisteminin mount edilmesini, en az sayda init betigi (script) calsmasn ve bir login ekranndan ziyade
bir kabuk baslatlmasn saglar. Ayrca ag ayarlar konfigure edilmez ve boylece harici etkilerin isinizi
engellemesi ihtimali ortadan kalkar.

17.12 Tek-kullanc (Single-user) Modunu Kullanmak


O halde boyle bir mod ile sistemde nasl calsacagz? Bu soruya cevap verebilmek icin Linux ile Windows
arasndaki cok onemli bir farka deginmek gerekiyor. Windows normalde konsolda yerlesmis ve ayn anda
tek bir kullancnn kullanacag sekilde tasarlanmstr. Yani efektif olarak her zaman single-user modda
calsmaktadr. Diger yandan Linux daha ziyade uzaktaki kullanclara ag uygulamalar sunmak ya da
kabuk ve X oturumlar saglamak amacyla kullanlr. Durum boyleyken sistemde yaplacak olan dosya
sistemi yaratma ve duzenleme islemleri, sistemin CDden guncellenmesi, kurulum ve yedekleme islemleri
ve buna benzer bakm islemleri srasnda bu ekstra degiskenler tercih edilmeyecektir. Boyle durumlarda
single-user moda gecmek gerekir.

17.13 Calsma Seviyelerini Degistirmek


Aslnda single-user moda gecmek icin sistemin yeniden baslatlmas gerekmemektedir. init program siste-
min o andaki modunu ya da calsma seviyesini yonetebilmektedir. Linux icin standart calsma seviyeleri
asagdaki sekilde sralandrlabilir:
0: Bilgisayar kapat
1: ya da s: tek-kullanc modu
2: cok-kullanc, ag yok
3: cok kullanc, text konsol
4: cok-kullanc, grafik konsol
5: 4 ile ayn
6: Bilgisayar yeniden baslat
Bu calsma seviyeleri dagtma gore degisebilir bu yuzden kullandgnz dagtmn dokumann incele-
mek gerekir. single-user moda gecmek icin, inite calsma seviyesini degistirmesi gerektigini belirten telinit
komutunu kullanmalsnz.
# telinit 1
Yukardaki tabloda da gorebileceginiz gibi ayn yontemle sistemi yeniden baslatabilir ya da kapatabi-
lirsiniz. telinit 0 sistemi kapatacak, telinint 6 ise yeniden baslatacaktr. telinit komutu ile calsma seviye-
sinin degistirmeye kalktgnzda init scriplerinden bazlar calsmaya baslayacak belli servisleri acacak ya
da kapatacaklardr.

17.14 Sistemi Duzgun Kapatmak


Dikkat ederseniz eger sistemde o anda baska kullanclarda varsa sistemi bu sekilde kapatmak o kul-
lanclar icin cok zararl olabilir. shutdown komutu bunun icin calsma seviyelerini daha duzenli bir sekilde
degistirecek bir metod sunar. kill komutunu diger sureclere sinyal gonderme ozelligine benzer bir sekilde
shutdown komutu da sistemi kapatmak yeniden baslatmak ya da tek-kullanc moduna gecmek icin kul-
lanlabilir. Ornegin 5 dakika icinde tek kullanc moduna gecmek icin:
# shutdown 5
Broadcast message from root (pts/2) (Tue Jan 15 19:40:02 2002):
The system is going DOWN to maintenance mode in 5 minutes!
Eger Control+c tusuna basarsanz tek-kullanc moduna gecmeyi saglayan bu komutu kaldrabilirsiniz
de. Bu gordugunuz mesaj sistemde o anda calsan tum kullanclarn terminallerinde belirecektir . Boylece
bu kullanclar yaptklar isi kaydedecek ve duzgun bir sekilde sistemden ckabilecek zaman bulabilecek-
lerdir. (tabi bu 5 dakikann yeterli olup olmayacag ayr bir tartsma konusu.

57
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

17.15 Sistemi Aniden Kapatmak


Eger sistemde calsan tek kullanc siz iseniz belli bir sure belirtmek yerine now parametresini kullana-
bilirsiniz. Ornegin sistemi hemen o anda yeniden baslatmak icin:

# shutdown -r now

Bu ornekte -r reboot after shutdown bir sonraki ornekte gorecegimiz -h halt after shutdown
anlamna gelir. Bu durumda artk Control+c tusuna basma sansnz olmayacaktr cunku artk kapatma
islemine baslanmstr. Son olarak bahsedecegimiz -h parametresi ise soyle kullanlr:

# shutdown -h 1
Broadcast message from root (pts/2) (Tue Jan 15 19:50:58 2002):
The system is going DOWN for system halt in 1 minute!

17.16 Ontanml Calsma Seviyesi


Bu ana kadar gorduklerimizle Linux sistemi icin init programnn onemini kavradgmz tahmin ediyorum.
/etc/inittab dosyasn duzenleyerek initi konfigure edebilirsiniz. Bununla ilgili acklama inittab(5) klavuz
sayfasnda acklanmaktadr. Biz bu dosyada sadece bir noktaya deginecegiz:

# grep ^id: /etc/inittab


id:3:initdefault:

Buna gore benim sistemimde calsma seviyesi 3 ontanml calsma seviyesidir. Eger sisteminize aclr
aclmaz grafik ekranda giris yapmak istiyorsanz bu degeri degistirebilirsiniz (genelde4 ya da 5). Bunu
yapabilmek icin sadece dosyadaki ilgili satr degistirmeniz yeterlidir. Ancak unutmaynz ki eger bu degeri
gecersiz bir say ile degistirirseniz daha once anlattgmz init=/bin/sh a basvurmanz gerekecektir.

18 Calsma Seviyeleri
18.1 Tek-kullanc Modu
Bundan onceki bolumde de soyledigimiz gibi cekirdege acls srasnda parametre gonderilebilecegini artk
biliyoruz. En sk kullanlan parametrelerden bir tanesi sistemi single-user modunda acmaya yarayan s
parametresidir. Bu mod sadece root dosya sisteminin mount edilmesini, en az sayda init scripti calsmasn
ve bir login ekranndan ziyade bir kabuk baslatlmasn saglar. Ayrca ag ayarlar konfigure edilmez ve
boylece harici etkilerin isinizi engellemesi ihtimali ortadan kalkar.

18.2 Calsma Seviyeleri


Aslnda single-user moda gecmek icin sistemin yeniden baslatlmas gerekmemektedir. init program siste-
min o andaki modunu ya da calsma seviyesini yonetebilmektedir. Linux icin standart calsma seviyeleri
asagdaki sekilde sralandrlabilir:

0: Bilgisayar kapat

1 ya da s: tek-kullanc modu

2: cok-kullanc, ag yok

3: cok kullanc, text konsol

4: cok-kullanc, grafik konsol

5: 4 ile ayn

6: Bilgisayar yeniden baslat

58
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

18.3 elinit Komutu


single-user moda gecmek icin, inite calsma seviyesini degistirmesi gerektigini belirten telinit komutunu
kullanmalsnz.

# telinit 1

Yukardaki tabloda da gorebileceginiz gibi ayn yontemle sistemi yeniden baslatabilir ya da kapatabilir-
siniz. telinit 0 sistemi kapatacak, telinint 6 ise yeniden baslatacaktr. telinit komutu ile calsma seviyesinin
degistirmeye kalktgnzda init betiklerinden bazlar calsmaya baslayacak belli servisleri acacak ya da
kapatacaklardr.

18.4 Calsma Seviyesi Etiketi


Dikkat ederseniz eger sistemde o anda baska kullanclarda varsa sistemi bu sekilde kapatmak o ku-
lanclar icin cok zararl olabilir. shutdown komutu bunun icin calsma seviyelerini daha duzenli bir sekilde
degistirecek bir metod sunar. kill komutunu diger sureclere sinyal gonderme ozelligine benzer bir sekilde
shutdown komutu da sistemi kaptmak yeniden baslatmak ya da tek-kullanc moduna gecmek icin kul-
lanlabilir. Ornegin 5 dakika icinde tek kullanc moduna gecmek icin:

# shutdown 5
Broadcast message from root (pts/2) (Tue Jan 15 19:40:02 2002):
The system is going DOWN to maintenance mode in 5 minutes!

Eger Control+c tusuna basarsanz tek-kullanc moduna gecmeyi saglayan bu komutu kaldrabilirsiniz
de. Bu gordugunuz mesaj sistemde o anda calsan tum kullanclarn terminallerinde belirecektir . Boylece
bu kullanclar yaptklar isi kaydedecek ve duzgun bir sekilde sistemden ckabilecek zaman bulabilecek-
lerdir. (tabi bu 5 dakikann yeterli olup olmayacag ayr bir tartsma konusu.

18.5 now ve halt


Eger sistemde calsan tek kullanc siz iseniz belli bir sure belirtmek yerine now parametresini kullana-
bilirsiniz. Ornegin sistemi hemen o anda yeniden baslatmak icin:

# shutdown -r now

Bu ornekte -r reboot after shutdown bir sonraki ornekte gorecegimiz -h halt after shutdown
anlamna gelir. Bu durumda artk control+c tusuna basma sansnz olmayacaktr cunku artk kapatma
islemine baslanmstr. Son olarak bahsedecegimiz -h parametresi ise soyle kullanlr:

# shutdown -h 1
Broadcast message from root (pts/2) (Tue Jan 15 19:50:58 2002):
The system is going DOWN for system halt in 1 minute!

18.6 init Konfigurasyonu


Bu ana gorduklerimizle Linux sistemi icin init programnn onemini kavradgmz tahmin ediyorum.
/etc/inittab dosyasn duzenleyerek initi konfigure edebilirsiniz. Bununla ilgili acklama inittab(5) klavuz
sayfasnda acklanmaktadr. Biz bu dosyada sadece bir noktaya deginecegiz:

# grep ^id: /etc/inittab


id:3:initdefault:

Buna gore benim sistemimde calsma seviyesi 3 ontanml calsma seviyesidir. Eger sisteminize aclr
aclmaz grafik ekranda giris yapmak istiyorsanz bu degeri degistirebilirsiniz (genelde4 ya da 5). Bunu
yapabilmek icin sadece dosyadaki ilgili satr degistirmeniz yeterlidir. Ancak unutmamalyz ki eger bu
degeri gecersiz bir say ile degistirirseniz daha once anlattgmz init=/bin/sh a basvurmanz gerekecektir.

59
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

19 Dosya Sistemi Kotalar


19.1 Kotalara Giris
Kotalar size disk kullanm icin kullanc ya da grup olarak izlemeniz gereken yolu belirleyen bir Linux
ozelligidir. Bir kullanc ya da grubun diski haksz bir bicimde kullanmasn ya da doldurmasn engellemek
acsndan gayet kullansl bir ozelliktir. Kotalar sadece root kullancs tarafndan aktif hale getirilebilir
ya da kullanlabilir. Bu bolumde kotalar nasl ayarlayacagnz ya da efektif bir sekilde kullanacagnz
anlatmaya calsacagz.

19.2 Cekirdek Destegi


Kotalar dosya sisteminin bir ozelligi oldugundan cekirdegin destegine ihtiyac duyarlar. Oncelikle cekir-
deginizde kota desteginin olup olmadgn belirlemeniz gerekmektedir. Bunun icin grep komutunu kulla-
nabilirsiniz:

# cd /usr/src/linux
# grep -i quota .config
CONFIG_QUOTA=y
CONFIG_XFS_QUOTA=y

Eger bu komut daha az bir bilgiyle donerse (mesela CONFIG QUOTA ayarlanmamstr seklinde) cekirdegi
kota destegi verecek seklide yeniden derlemeniz gerekmektedir. Bu aslnda zor bir islem olmasa da bu
kursun konusu dsnda oldugundan burada soz etmeyecegiz.

19.3 Dosya Sistemi Destegi


Kota yonetimini ayrntl incelemeden once sunu belirtmeliyiz ki kota destegi 2.4.x cekirdek serisinde
henuz tamamlanmamstr. ext2 ve ext3 dosya sistemlerinde kotalar ile ilgili problemlere rastlanmakta
ve ReiserFS dosya sisteminde desteklenmedigi gorulmektedir. Bu egitimde ornekler XFS dosya sistemi
temel alnarak uygulanmaktadr. Cunku bu dosya sisteminin kotalar duzgun bir sekilde destekledigi
bilinmektedir.

19.4 Kotalarn Konfigurasyonu


Sisteminizde kotalar ayarlamaya baslamak icin, kotalar aktif hale getirilmis bir sekilde etkilenen dosya
sistemlerini /etc/fstab dosyas icinde duzenlemelisiniz. Buradaki ornekte ext3 dosya sistemimiz kullanc
ve grup kotalar aktif hale getirilmis bir sekilde mount edilmektedir:

# grep quota /etc/fstab


/dev/hda8 /mnt/usrDeneme ext3 usrquota,grpquota,noauto,noatime 1 2
# mount /mnt/usrDeneme

19.5 Kotalarn Konfigurasyonu, Devam


Unutmaynz, usrquota ve grpquota secenekleri kotalar aktif hale getirmek icin gerek sart degildir. Ko-
talarn aktif hale getirldiginde quotaon komutunu kullanarak emin olabilirsiniz.

# quotaon /mnt/usrDeneme/

Ileride ihtiyac duyabileceginizi tahmin ederek, kotalarn aktif halini bozmak icin de quotaoff komutunu
kullanabileceginizi soyleyebiliriz:

# quotaoff /mnt/usrDeneme/

Ama su an icin bu egitimde yer alan ornekleri deneyecekseniz kotalarn aktif hale gelmis oldugundan
emin olunuz.

60
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

19.6 quota Komutu


quota komutu o anda mount edilmis tum dosya sistemleri icin kullancnn disk kullanmn ve limitlerini
gosterir. -v secimi kotalarn kullanlabildigi ama kullanc icin alan ayrlmadg dosya sistemlerini gosterir.

# quota -v
Disk quotas for user root (uid 0):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 0 0 3 0 0

Birinci kolon, bloklar kolonu, listelenen her dosya sisteminde o anda root kullancnn ne kadar mik-
tarda disk alan kullandgn gosterir. Ondan sonra gelen kolonlar, kota ve limit kolonlar, disk alan icin o
anda yer alan limitleri temsil eder. Daha sonra kota ve limit arasndaki fark ve grace kolonunun anlamn
acklayacagz. Dosyalar kolunu root kullancnn ilgili dosya sisteminde ne kadar dosyaya sahip oldugunu
gosterir. Ondan sonra gelen kota ve limit kolonlar dosyalar uzerindeki limitleri temsil eder.

19.7 Kotalar Goruntulemek


Herhangi bir kullanc onceki ornekte de gordugumuz gibi kendine ait kotalarla ilgili raporu goruntuleyebi-
lir. Ancak diger kullanc ve gruplarn kotalarnda sadece root kullancs bakabilir. Diyelim ki /usr/users
altna mount edilmis bir /dev/hdc1 dosya sistemimiz, ve ali ve veli adnda da iki tane kullancmz olsun.
Oncelikle ali kullancsnn disk kullanmna ve limitine bakalm:

# quota -v ali
Disk quotas for user ali (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 0 0 6 0 0

Bu ornekte goruyoruz ki alinin kotalar sfra ayarlanmstr ki bu da hic bir limiti olmadg anlamna
gelir.

19.8 edquota
Diyelim ki ali isimli kullancya kota vermek istiyoruz. Bu durumda kullanmamz gereken komut edqu-
ota olacaktr. Kotalar duzenlemeye baslamadan once /usr/users uzerinde ne kadar alanmz oldugunu
gorelim:

# df /usr/users
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hdc1 610048 4276 605772 1% /usr/users

Bu 600MB lk alann ksmen cok buyuk bir dosya sistemi olmadgn sanrm siz de gorebiliyorsunuz.
Bu sebeple ali kullancsna belli bir alandan daha fazlasn kullanamayacag bir kota vermek mantkl bir
yaklasm olacaktr. edquota komutunu calstrdgnz zaman komut satrnda belirlediginiz her kullanc
ve grup icin gecici bir dosya yaratlacaktr.

19.9 edquota, Devam


edquota komutu sizi, bu gecici dosya araclgyla kotalar ekleyebileceginiz ve/veya duzenleyebileceginiz
belli bir editor icerisinde calstrr.

# edquota ali
Disk quotas for user ali (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 0 0 6 0 0

Yukardaki kota komutunun cktsna benzer olarak bu gecici dosyadaki blocks ve inodes kolon-
lar ali kullancsnn kullandg disk alann ve dosya saysn belirtmektedir. Blok ve inode saylarn
degistiremezsiniz. Bunu yapmaya calstgnz zaman sistem size engel olacaktr. soft ve hard kolonlar
gordugumuz gibi ali kullancsnn degerleri su anda limitsiz kotalarn gostermektedir. (0 demek limit
yok demektir. )

61
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

19.10 edquotay Anlamak


soft kstlamas dosya sistemi uzerinde ali kullancsnn kendisine tahsis ettigi kullanlacak maksimum disk
alannn miktarn belirler. (bir diger deyisle sahip oldugu kotasn belirler). Eger ali kullancs kendisine
verilen bu soft kstlamasn asacak kadar fazla alan kullanrsa, e-mail ile bu kota hakknda bir uyar
alacaktr. Hard kstlamas sistemdeki bir kullancnn asamayacag snr belirler. Eger ali kullancs bu
snr da asacak bir islem yapmaya kalkarsa disk kotas asld (disk quota exceeded) seklinde bir mesaj
alacak ve yapmak istedigi islem tamamlanmayacaktr.

19.11 Degisiklikler Yapmak


O halde burada ali kullancsn soft ve hard limitlerini degistirerek dosyay kaydedebiliriz.

Disk quotas for user ali (uid 1003):


Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 10000 11500 6 2000 2500

quota komutunu da calstrarak yaptgmz degisiklikleri gozlemleyebiliriz:

# quota ali
Disk quotas for user ali (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 10000 11500 6 2000 2500

19.12 Kotalar Kopyalamak


Hatrlarsanz bu dosya sisteminde bir de veli kullancsn oldugunu kabul etmistik. Eger bu kullancya
ali kullancs ile ayn kotay vermek istiyorsak edquota ile -p parametresini kullanarak bu komuta bun-
dan sonra gelen tum kullanclar icin ali kullancsn prototip olarak kullanmasn soyleyebiliriz. Grup
kullanclarn kotalarn ayarlamak icin bu yontem cok kullansl olacaktr.

# edquota -p ali veli


# quota veli
Disk quotas for user veli (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 10000 11500 1 2000 2500

19.13 Grup Kstlamalar


edquota komutunu kullanarak dosyalarn disk uzerinde kullandg alan belli bir grubu temel alarak
kstlayabiliriz. Mesela users grubunun kotasn duzenlemek icin:

# edquota -g users
Disk quotas for group users (gid 100): Filesystem blocks soft hard inodes
soft hard /dev/hdc1 4100 500000 510000 7 100000 125000

Simdi de users grubunun duzenlenmis yeni kotasn gormek icin de:

# quota -g users
Disk quotas for group users (gid 100):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 500000 510000 7 100000 125000

19.14 repquota Komutu


Sistemde cok fazla sayda kullancmz varsa, quota komutunu kullanarak her kullancnn kotasn go-
runtulemek bizi canmzdan bezdirebilir. repquota komutu dosya sitemindeki kotalar guzel bir sekilde
raporlamaya yarar. Ornegin, /usr/users uzerindeki tum kullanc ve gruplarn kotalarn gormek icin:

# repquota -ug /usr/users

*** Report for user quotas on device /dev/hdc1


Block grace time: 7days; Inode grace time: 7days

62
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

Block limits File limits


User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
john -- 0 10000 11500 1 2000 2500
jane -- 4100 10000 11500 6 2000 2500
*** Report for group quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
users -- 4100 500000 510000 7 100000 125000

19.15 repquota Secenekleri


Burada bahsetmekte yarar gorecegimiz bir kac tane daha repquota secenegi vardr. repquota -a kota
ayar aktif olan mevcut olan-mount edilmis okunabilir-yazlabilir dosya sistemlerini raporlamaya yara-
yacaktr. repquota -n isimlerde uidleri gidleri cozmeyecektir. Bu uzun listeleri goruntulerken zaman
kazandracaktr.

19.16 Kotalar Goruntulemek


Eger sistem yoneticisi iseniz, sistemdeki kotalarn gecilmediginden emin olmak icin bunlar goruntule-
menin bir yolunu arayacaksnz. Bunun icin kolay yontemlerden bir tanesi warnquota komutunu kullan-
maktr. Bu komut sistemde kotalarn gecen kullanclara kendilerini uyaran bir mail gonderir. Benzer
olarak warnquota cron-job gibi calsmaktadr.
Bir kullanc kendi soft limitini astg zaman quota komutunun cktsnda grace kolonunda kotann
aslma muhleti, yani bu dosya sisteminde ne kadar zamandr kotann aslms oldugu belirecektir.
Disk quotas for user jane (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 10800* 10000 11500 7days 7 2000 2500

Ontanml olarak, bloklar ve inode lar icin bu muhlet 7 gundur.

19.17 Muhleti Belirlemek


equota komutu kullanarak bir dosya sistemi icin kota asma muhletini belirleyebilirsiniz.
# edquota -t

Bu yazm sizi asagdaki gibi bir gecici dosyann editoru icerisine atacaktr:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hdc1 7days 7days

Dosya icindeki yaz oldukca acklayc niteliktedir. Kotalarn asan kullanclarnza uyar gonderildik-
ten sonra bunu farketmeleri ve gerekli dosyalar silmeleri icin yeterli zaman brakmay unutmamalsnz.

19.18 Kotalar Aclsta Kontrol Etmek


Kotalar acls srasnda da kontrol edebilirsiniz. quotacheck komutunu calstran bir betik (script) dos-
yasn kullanarak bunu yapabilirsiniz. Quota mini howto belgesinde bunun icin ornek bir betik yer al-
maktadr. quotacheck komutu ayn zamanda bozulmus kota dosyalarn onarma yetenegine de sahiptir.
Bu konuda daha fazla bilgi almak icin quotacheck (8) klavuz sayfasn inceleyebilirsiniz.
Bundan once quotaon ve quotaoff komutlarndan bahsetmistik. Acls betiginizin icerisine quotaon ek-
leyerek kotalarn aktif hale gelmesinin saglayabilirsiniz. Kotalarn desteklendigi butun dosya sistemlerinde
aktif hale gelmesini isterseniz -a secenegini kullannz.
# quotaon -a

63
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

20 Sistem Loglar
20.1 syslogdye Giris
syslog sorumlusu (daemon), sistemde calsan programlardan gelen mesajlar ile olgun bir istemci-sunucu
mekanizmas sunar. Syslog bir program sorumlusundan (daemon) ya da programdan gelen mesajlar alr,
onceligine ve tipine gore kategorize eder ve yonetici konfigurasyonu kurallarna gore raporlar. Loglar
yonetebilmek acsndan bu yontem oldukca saglamdr ve butunluk arzetmektedir.

20.2 Loglar Okumak


Simdi gelin syslog tarafndan kaydedilmis bir log dosyasn icerigini inceleyelim. Sonra da syslog kon-
figurasyonunun nasl yaplacagna donebiliriz. FHS log dosyalarnn /var/log icerisinde yer almas ge-
rektigini belirlemektedir. Burada tail komutunu kullanarak son on mesajn goruntuleyecegiz:

# cd /var/log
# tail messages
Jan 12 20:17:39 bilbo init: Entering runlevel: 3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: starting BIND 9.1.3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: using 1 CPU
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: loading configuration from
/etc/bind/named.
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: no IPv6 interfaces found
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface lo,
127.0.0.1#53
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface eth0,
10.0.0.1#
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: running
Jan 12 20:41:58 bilbo gnome-name-server[11288]: starting
Jan 12 20:41:58 bilbo gnome-name-server[11288]: name server starting

Yaz isleme konusundan hatrlayacaksnz ki tail komutu bir dosyadaki son satrlar goruntuler. Bu-
rada gordugumuz gibi bilbo isimli nameserver sistemde en sona yakn zamanda calsmaya baslamstr.
Eger IPv6 konuslandracak olsaydk named daemonnn hic bir IPv6 arayuzu bulamadgn farkedecek-
tik. Ayrca tum bunlara ek olarak yine bu dosyada bir kullancnn gnome-name-serverdan hemen once
GNOME calstrdgn anlamaktayz.

20.3 Loglar Kuyruktan Takip Etmek


Tecrubeli bir sistem yoneticisi bir log dosyasnn cksn gozlemlemek icin tail -f komutunu kullanacaktr.

# tail -f /var/log/messages

Yukardaki kullanm sayesinde bir servis calstrrken ya da durdururken kendisinden gelen mesajlar da
gorme sansmz olacaktr. Debug islemi icin bu cok kullansl bir yontemdir. Hatta baz sistem yoneticileri
ortaya ckan mesajlar o anda hemen gorebilmek icin bir terminalde surekli bu komutu calsr halde
kullanmaktadrlar. Mesela bir terminalde yukardaki komutu yazp baska bir terminalde de httpd servisini
kapatalm:

# service httpd stop


Shutting down httpd2: [ OK ]
#

Simdi ilk terminale donersek en alt satra eklenen su mesaj da gorecegiz:

.....

...
May 1 23:11:00 localhost CROND[3827]: (mail) CMD
(/usr/bin/python -S /var/lib/mailman/cron/qrunner)
May 1 23:11:25 localhost httpd: httpd shutdown succeeded

64
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

20.4 Log Dosyalarn grep ile Kullanmak


log dosyalarn incelemek icin bir baska yararl yontem de grep komutunu kullanmak olacaktr. Yukarda
bahsedilen durum icin httpd ile birlikte grep kullanarak durumu iceleyebiliriz:

# grep httpd /var/log/messages

Ya da httpd ile ilgili olarak gelen son 3 mesaj da su sekilde gorebiliriz:

[root@localhost erman]# grep httpd /var/log/messages| tail -3


May 1 23:11:25 localhost httpd: httpd shutdown succeeded
May 1 23:14:15 localhost httpd2: httpd2: Could not determine the servers
fully qualified domain name, using 127.0.0.1 for ServerName
May 1 23:14:18 localhost httpd: httpd2 startup succeeded

20.5 Log Dosyalarnn Ozeti


Asagda genelde /var/log altnda yer alan syslog tarafndan kullanlan ve belirlenen log dosyalar ozet-
lenmistir.

messages: Genel sistem programlar ve daemonlar tarafndan uretilen bilgi ve hata mesajlar

secure: Ekstra guvenlik amacyla messages dosyasndaki mesajlardan ayr tutulan ve sifre dogrulama
ile ilgili hata ve bilgi mesajlar

maillog: Mail ile iliskli hata ve bilgi mesajlar

cron: Cron ile ilgili hata ve bilgi mesajlar

spooler: UUCP ve haberlerle ilgili hata ve bilgi mesajlar

20.6 syslog.conf
Simdi artk syslog konfigurasyon dosyas olan /etc/sylog.conf dosyasn inceleyebiliriz. (Not: Eger sys-
log.conf dosyanz yoksa bile bilgi edinmek icin bu ksm yine de okuyun ama baska bir syslog da kullanyor
olabilirsiniz.) Bu dosyaya goz gezdirdigimizde yukarda bahsedilen ortak log dosyalarnn her biri icin bir
satr oldugunu goreceksiniz. Ayrca bunun dsnda baska satrlar da olacaktr. Asagda belirlendigi gibi
dosyann format kullanc.oncelik seklindedir.

20.7 syslog.conf, Devam


Kullanc Alan: Mesaj ureten alt sistemi belirler. Bu alan ile ilgili gecerli anahtar sozcukler auth, authp-
riv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp ve local0 dan local7e kadar olan anahtar
sozcuklerdir. Oncelik Alan: Mesajn minimum seyrekligini belirler. Bunu anlam ilgili mesaj en az belir-
tilen seyreklikte ya da daha fazla sayda bu kuralla eslecektir. Oncelikle ilgili anahtar sozcukler debug,
info, notice, warning, err, crit, alert ve emerg anahtar sozcukleridir.
Aksiyon Alan: Aksion alannda ya bir dosya ad, ya tty (/dev/console gibi), ya basnda @ isareti
ile belirlenmis baska bir makina ad ya da mesajn o anda sistemde olan herkese gonderilecegi anlamna
gelen * isareti olmaldr. En cok kullanlan aksiyon ise bir dosya addr.

20.8 Yeniden Yukleme ve Ek Bilgiler


Umarz bu konfigurasyon syslog sisteminin esnekligini ve gucunu anlamanza yardmc olmustur. Degi-
siklik yapmadan once daha ayrntl bilgi icin syslog.conf (5) klavuz dosyasn okumanz tavsiye ederiz.
Ayrca syslogd(8) klavuz dosyas da bir cok ayrntdan bahsetmektedir.
Unutmaynz ki konfigurasyon dosyasnda yaptgnz degisikliklerin etkin olmas icin syslog arka plan
surecini (daemon) bir sekilde bilgilendirmeniz gerekmektedir. Ona bir SIGHUP gondermek bu is icin
yeterli olacaktr. Ve bunu kolaylkla yapmak icin de killall komutu kullanabilirsiniz:

# killall -SIGHUP syslogd

65
Istanbul Bilgi Universitesi, Bilgisayar Bilimleri Bolumu

20.9 Guvenlik Notu


Sunu belirtmek gerekir ki syslogd tarafndan yazlan log dosyalar eger mevcut degillerse otomatik ola-
rak yaratlrlar. Sizin o andaki umask ayarnzdan bagmsz olarak dosya herkesin okuyabildigi (world-
readable) sekilde yaratlacaktr. Eger guvenlik konusu sizi ilgilendiriyorsa dosyalar sadece root kul-
lancsn okuyabilecegi ve yazabilecegi sekilde chmod ile izinlerini degistirmelisiniz. Buna ek olarak asagda
anlatlacak olan logrotate program uygun izinlerle yeni log dosyalar olusturacak sekilde konfigure edi-
lebilir. syslog deamon her zaman icin mevcut olan bir log dosyasnn o andaki ozelliklerini muhafaza
edeceginden, dosya yaratldktan sonra bir daha bunu dusunmenize gerek kalmayacaktr.

20.10 logrotate
/var/log altnda yer alan log dosyalar surekli buyuyecektir ve sistemi doldurma potansiyelleri vardr. log-
rotate gibi loglar otomatik arsivleyen ve yoneten bir programn kullanlmas tavsiye edilen bir durumdur.
logrotate gunluk bir cron-job olarak calsr ve log dosyalarn cevirme, skstrma, silme ya da mail atma
ozellikleri katmak icin konfigure edilebilir.
Ornegin ontanml bir logrotate konfigurasyon dosyas loglar 4er haftalk backlogs halinde tutarak
haftalk olarak cevirebilir (dosyaya bir seri numaras ekleyerek bunu yapar) ve bu backloglar yer ka-
zanmak amacyla skstrr. Buna ek olarak program syslogdye, artk log dosyalarnn bos oldugunu ve
bu dosyalarn sonuna uygun ekleme yapmasn saglamak amacyla bir SIGHUP gondermesini saglayacak
sekilde konfigure edilebilir.
logrotate hakknda daha fazla bilgi almak icin, icerisinde programn acklamas ve konfigurasyon dos-
yasnn sozdiziminin (syntax) yer aldg logrotate(8) klavuz sayfasn inceleyebilirsiniz.

20.11 Ileri Baslk: klogd


syslog konusunu kapatmadan once hevesli okuyucular icin bir kac ayrntdan bahsedilebilir. Bu ipuclar
syslog ile ilgili baslklar incelereken rahat kavramanza yardmc olabilir.
Oncelikle sunu belirtmek gerekir ki; syslog arka plan sureci (deamon) aslnda icerisinde klogd adnda
baska bir arka plan surecin de yer aldg syslogd paketinde yer almaktadr. klogdnin isi cekirdekten bilgi
ve hata mesajlarn almak, kategorize etme ve raporlama isini yapmas icin syslogdye gondermektir. klogd
tarafndan alnan mesajlar sizin dmesg komutuyla elde edeceklerinizle tamamen ayndr. Fark ise; dmesg
o anda buffer da yer alan uyary aynen yazarken kylogd bu mesajlar syslogdye gonderir. Boylece buffer
bosaltlsa bile artk bu mesajlar kaybolmayacaktr.

20.12 Ileri Baslk: Alternatif Loglayclar


Ikinci olarak syslogd paketine alternatif olacak baska log programlar oldugunu belirtmeliyiz. Alternatifler
daha verimli ve daha kolay konfigure edilebilmek ve daha fazla ozellik icermek amacyla ortaya ckmstr.
Eger syslogdnin sizin icin yeterince iyi olmadgn dusunurseniz en populer olanlardan Syslog-ng ve
Metalogunda yer aldg bu alternatifleri deneyebilirsiniz.
Ucuncu olarak logger komutunu kullanarak mesajlar kendi betiginiz icerisinde loglayabilirsiniz. log-
ger(1) klavuz sayfasnda daha fazla bilgi bulabilirsiniz.

66

You might also like