#1
|
|||
|
|||
Unix İşletim Sistemi
1969 yılında Bell laboratuarlarında çalışan Ken Thompson ucuz ve kolay bir
programlama ortamı geliştirmeyi düşündü. Üzerinde çalıştığı “Uzay Gezisi” (Space Travel) adlı programı, güneş sistemindeki gezegenlerin hareketlerini simüle ediyordu. Çalıştığı bilgisayar General Electric’ in GE645, üzerindeki işletim sistemi Multics idi. Bu hantal ve pahalı bilgisayar yerine küçük bir bilgisayar olan PDP-7 (Digital Equipment Corp.) üzerinde çalışmak üzere bir çalışma ortamı geliştirdi (Multics altında) ve buna Unix adını verdi. Bu çalışma ile Thompson, Bell laboratuarlarındaki Dennis ve Ritchie’ nin dikkatlerini çekti ve 1971 yılında Bell laboratuarlarında çalışır hale getirildi. İlk başlarda PDP-7’ de çalışan Unix daha sonra PDP-11/40 ve /45’ özellikle PDP-11/70’ de kullanıldı. Bunlar yapılırken en ucuz şekilde herkese Unix lisansı verildi. Böylece Unix’ in pek çok üniversiteye girmesi sağlandı. AT&T sayesinde Amerika’ daki üniversitelerin %80’ inden fazlasında Unix kullanıldı. Unix ilk başta Assembly dili ile yazıldı. Daha sonra Thompson İşletim sistemini biraz daha yüksek bir dil ile yazmayı düşündü. Buna B dili dendi. Daha sonra bu dil üzerinde Dennis ve Ritchie çok çalıştılar ve 1973 yılında buna C dili dediler. 1980’ lerde mantar gibi bir çok Unix’ ler türedi. Ör: Cromix, Idris, Ultrix, Xenix, Version 7, BSD, vb. 1990’ lar da iki Unix sistemi baskın çıktı. (Berkeley Unix, System V Unix veya ondan türeyen Xenix, Vp/ix vb.) Berkeley Unix : Geçen son 15 yılda University of California at Berkeley Unix gelişmesinin odak noktası idi. Bir çok üniversite ve organizasyona Unix dağıtan ana Unix dağıtıcısı idi. Unix’ e cshell, history, job control, vi editor, improved file handling ve communication programları eklendi. Çıkardıkları en Unix sürümü Unix 4.3 BSD (Berkley Standart Distribution)’ dir. Unix System V : En büyük değişiklik 1983’ de AT&T’ nin iş ortakları için yazılım destekleyicisi oldu. Ve lisans ücretlerini ucuza sattı. 1986’ da AT&T Unix System V release 3.0’ ı duyurdu. Bunda network ortamındaki dosya paylaşımı ve Unix’ de geliştirilen yazılımların diğer Unix makinalarına taşınması kavramları geliştirildi. 1989 yılında OSF ve UI, X-WINDOWS standardını belirleyen X/OPEN isimli bir konsorsiyuma üye oldular. X-Windows, dil çevirici (language tranlator) gibi çalışır ve içinde grafik komutları da bulunur. Örneğin bir kare çizmek istendiğinde kare için detaylı komutlar yerine, genel amaçlı bir grafik komutu ile kare komutunu verilir. XWindows bu komutu her bir terminal çeşidine göre açarak gerekli şekli ekrana çizer. UNIX, Internet’ in gelişimiyle birlikte kendine haklı bir saygınlık kazanmıştır. Özellikle akademik alanda, geniş ağ sistemlerinde dosya sunucusu, veritabanı sunucu olarak güvenilir ve güvenli bir yapı içinde hizmet verebilir. UNIX kullanan firmalar çok çeşitlidir. Sun’ ın Solari’ si, IBM’ in AIX’ i, Hewlett Packard’ ın HP/UX’ i, Data General’ in DG/UX’ i yaygın bir şekilde kullanılan UNIX’ lere örnek oluşturmaktadır. 8.1. Unix Shell Komut yorumlayıcısı (command interpreter) olarak çalışır. Birden fazla basit komutun birleştirilmesi ile bir programlama dili olarak kullanılabilir. Unix sistemlerde, Bourne Shell (sh) prompt’ u ise $ ve C Shell (Csh) prompt’ u ise %’ dir. Şekil 8.1.1. Bir Unix Sistemi Shell (komut yorumlayıcı), kullanıcıdan aldığı komutları gerekirse Utility programlarını kullanarak, çekirdek sayesinde donanıma aktarılıp yapılır. 8.2. Temel Unix Komutları Unix komutlarının kullanımında büyük ve küçük harf ayrımı vardır. Ayrıca her komut bir çok parametreye sahiptir. Parametrelerde de büyük ve küçük harf önemlidir. Aslında Unix ve Linux kullanırken küçük harf kullanılır ama bazı parametrelerde büyük harf bulunmaktadır. Aşağıda unix ve Linux ’da kullanılan komutların bazıları listelenmiştir. Login : Unix server’ a bağlanmak için, (önceden kayıtlı isek) kullanıcı adımızı girdiğimiz ve arkasından şifremizi girdiğimiz bir komuttur. (Windows 95/98/ME’ ye girerken karşımıza çıkan şifre ekranı gibi düşünebiliriz ama burada şifreyi girmek zorundayız, yoksa bağlanmamıza izin vermez) Örnek : Welcome to UNIX VERSION 7.3 Enjoy Your Computing Login:koseoglu <Enter> Password:***** Passwd : Şifre değiştirmek için kullanılır. Örnek : passwd <Enter> Changing password for koseoglu Old password:***** New password:****** Retype new password:****** Unix Şifreleri genelde 5-8 harf arasında olur. 8 harften uzun bir şifre yazılsa bile 8 harften sonrası dikkate alınmaz. Şifrelerinizi seçerken güvenlik açısından bazı şeyleri göz önünde bulundurmak gerekir. Örneğin isim, soyisim, isim-soyisim kombinasyonları çok kullanılan sözcükler vs. olup kötü şifrelerdir. Çünkü bazı programlar bu olasılıkları deneyerek kullandığınız şifreleri bulabilmektedir. Esasen iyi seçilmiş bir şifrenin bulunabilme olasılığı son derece düşüktür. Mesela 8 harften oluşan iyi bir şifrenin deneme/yanılma prensibine göre çalışan bir program tarafından bulunabilmesi orta boy bir SUN makinesinde milyonlarca yıl sürmektedir. Her ne kadar sürekli olarak kullanılan makinelerin hızlarının ve yeteneklerinin arttığını düşünürsek bile iyi seçilmiş bir şifrenin bulunma olasılığı çok düşüktür. Logout : Unix Sisteminden çıkmak için kullanılır. Örnek : logout <Enter> Finger : Kullanıcılar hakkında bilgi verir. Parametresiz kullanıldığı zaman sistemdeki tüm kullanıcılar hakkında bilgi verir. Açılış klasörü (directory) ve kullanılan shell (kabuk) ismi, login name, gerçek isim, terminal, boş durma zamanı (idle time), sisteme giriş (login) zamanı, biliniyorsa ofis bilgisi verilir (buna, kısa (short) form denir). İsim (name) parametresi kullanıldığında, verilen isim hakkında yukarıdaki bilgileri verir. Örnek : finger koseoglu <Enter> Ls : Unix Sistemde bulunduğumuz dizinde bulunan dosyaları listeler (DOS’ taki DIR komutu gibi) Örnek : ls <Enter> Dosya isimleri konusunda Unix'in oldukça geniş hareket imkanı vardır. Teorik olarak, ikisi dışında ASCII table' ındaki tüm karakterleri dosya isminde kullanabilirsiniz. Kullanamayacağınız karakterler sadece "/" (directory yi gösterir) ve "\0" ( yani EOL karakteri)'dir. Bunların dışında her şeyi kullanabilirsiniz. Dosya isimlerinin uzunlukları konusunda da oldukça geniş imkanlarınız vardır. Her ne kadar bazı eski tip makinelerde 14 karakter sınırlaması varsa da yeni tip makinelerde bu sayı 255 tir. İçinde " " (boşluk) bulunan bir dosyayı oluşturmak istediğinizde ya da silmek istediğinizde ismi ""işaretlerinin içine almanız gerekir. Aynı şey mv, cp, rm vs. türü dosya programları içinde geçerlidir. Bazı sorulara verilecek cevaplar için kullanılabilecek Unix komutları : S.1-) Dosya Listesini Nasıl Elde Edebilirim ? ls komutu ile. ls (Seçenekler) (dosya veya dizin...) Seçenekler: -C : Görüntü çok kolonlu ve dosya isimleri azalan sırada olacaktır. -R : Belirlenen bir dizin içindeki dosyalar yanı sıra varsa tüm alt dizinleri içerikleriyle birlikte listeler. -a : . ile baslayan dosyalar dahil dizinin tüm içeriğini listeler. -l : Dosyalar hakkında daha ayrıntılı bilgi verir. Örnek : ls -l sezen* --w-rw--w- 1 e06 B386 603 Oct 24 22:14 sezen_aksu_88.html --w-rw--w- 1 e06 B386 607 Oct 24 22:23 sezen_aksu_soyluyor.html S.2-) Bir Dosyayı başka bir yere yada isme nasıl kopyalayabilirim? cp komutu ile . Kullanımı : cp -[secenek] dosya başkabir_dosya_ismi Örnek : cp sezen.html s.html // sezen.html'i s.html'e kopyalar. cp s.html ~/tmp // s.html'i HOME dizinindeki /tmp dizininin altına kopyalar cp -r ~/tmp ~/dump // HOME dizindeki tmp dizinini dump dizininin altına kopyalar. S.3-) Nasıl dizin oluşturabilirim ve silebilirim? mkdir dizin_ismi // dizin oluşturur rmdir dizin_ismi // ici bos olan bir dizini siler. S.4-) Dosyaları yada dizinleri başka bir yere nasıl taşıyabilirim? mv komutu ile Kullanımı : mv dosya1 dosya2 Dosyaları başka bir dizine, hatta dizinleri başka dizinlere taşıyabilirsiniz. Bu işlemin sonunda orijinal dizinin içindeki dosyaların isimlerinde bir değişiklik olmaz. Mv komutu DOS'taki rename ve move komutuna benzer, ancak onlardan çok daha beceriklidir. S.5-) Dosyaları nasıl silebilirim? rm komutu ile Unix'te Dosyaları silmek icin rm komutu kullanılır. Aslında rm'nin yaptığı şey dosyanın sahip olduğu linklerden birini çıkarmaktır. Eğer dosyanın sadece bir link'i varsa sonuçta dosya silinir. DİKKAT : Unix'te DOS'takine benzer bir UNDELETE komutu yoktur (mimarilerinin farklı olmasından dolayı) bu sebeple dosyalarınızı silerken çok dikkatli olmanız gerekir. Eğer bir dosyayı yanlışlıkla silerseniz, system sorumlunuza başvurun, belki backup 'lardan dosyanızı geri getirebilir. Kullanımı : rm -[Seçenekler] Dosya_ismi Dosya_ismi ... Seçenekler : -e : Dosyanın silinmesinden sonra ekrana bilgi verir. -f : Sormadan write-protected dosyaları siler. -i : Dosyayı silmeden önce bunun doğruluğunu sorar. -r : Recursive olarak alt dizinleri siler. -R : -r ile aynıdır. Örnek : rm sezen* // bulunduğumuz dizindeki sezen ile başlayan tüm Dosyaları siler rm -rf tmp // tmp dizinini ve alt dizinlerini uyarmadan siler. S.6-) System deki işlemler hakkında nasıl bilgi alabilirim? ps komutu ile. Kullanımı : ps (Seçenekler) Seçenekler: -e : Tüm işlemlerle ilgili bilgilerin görüntülenmesini sağlar. -f : Tam listenin üretilmesine olanak tanır. -l : Ayrıntılı listeyi görüntüler. Örnek : Sahip olduğum bir işlemi nasıl kesebilirim? kill (-sinyal) PID PID numaraları ps komutu ile görünür. Birçok sinyal tanımlanabilir. Bunlardan -9 işlemi öldürür. S.7-) Yerini bilmediğim bir dosyayı nasıl bulurum? Find komutu ile. Kullanımı : find yol tanımı seçenekler Seçenekler: -name isim : aranılacak dosyanın ismi. -user kullanıcı : Belirli bir kullanıcıya ait dosyaların aranması. -group isim : Belirli bir gruba dahil Dosyaların aranması. -atime n : n gün içinde erişilen dosyalar. -mtime n : n gün içinde işlem gören dosyalar. -ctime n : n gün içinde değiştirilen dosyalar. -print : bulunan Dosyaların ekranda Görüntülenmesini sağlar. Örnek : Bulunduğum dizinden itibaren tüm alt-dizinlerdeki "sezen" ile başlayan dosyaları bulmak için; find . -name "sezen*" -print ./faq/sezen_aksu_88.html ./faq/sezen_aksu_soyluyor.html ./sezen ./sezen/sezen ./sezen/sezen.c Not1 : Burada aranılan dosyada wildcard kullanıldığı için " "işareti kullanıldı. Eğer dosyanın tam ismi biliniyorsa buna gerek yoktur. Not2 : Eğer bir aramayı root'tan ( / ) başlatırsanız çok büyük olasılıkla bazı dosyaları okumaya izniniz olmadığı için size bunu belirten bir uyarı mesajı verilecektir ve bu mesajlar arasında aradığınız şey ekrana yazılsa bile bunu gözden kaçırabilirsiniz. Bu sebeple çıktıyı bir dosyaya yöneltip, daha sonra o dosyayı okumanızda fayda vardır. Örnek : find / -name gzip -print > gzip S.8-) Bir dosyanın izinlerini nasıl değiştirebilirim ? chmod komutu ile. Kullanımı : Chmod izin modu dosya : Bir dosyaya verilen izinlerin değiştirilmesi. ls -l [dosya] yazdığınızda en solda görülen bilgiler, o dosyanın izinlerini gösterir. Örnek : ls -l sezen* --w-rw-r-- 1 e06 B386 603 Oct 24 22:14 sezen_aksu_88.html Görüldüğü gibi en soldaki kısım 10 tane alandan oluşmaktadır. Bunların ilki dosyanın niteliğini ( dizin yada dosya ) sonraki 9'u da o dosyanın izinlerini gösterir. Eğer en soldaki alan "d" ile baslarsa bu onun bir dizin olduğunu, "-" ile baslarsa normal bir dosya olduğunu gösterir ( burada unix'te her dizin özel bir dosyadır ) Bu ilk karakterden sonra gelen 9 karakter de kendi aralarında 3 gruba bölünür. Ilk 3 Alan : Kullanıcı izinlerini Sonraki 3 Alan : Grup ile ilgili izinleri En Sağdaki 3 Alan : Diğer kullanıcılarla ilgili izinleri gösterir. Herbir bolumde 3'e bolunur : r : Read ( okuma ) hakkı; w : Write ( yazma ) hakkı; x : Execute ( çalıştırma ) hakkı. Örnek : -rw-r--r-- 1 e06 B386 3 Oct 24 21:35 sen_aglama.html gibi bir dosya bu dosyanın herkes tarafindan okunabilir olduğunu, ama sadece o dosyanın sahibi tarafından yazılabilir olduğunu gösterir. chmod programında kullanılan izin modları iki turlu belirtilebilir : 1- Numerik olarak : r'nin değeri : 4 w'nin değeri : 2 x'in değeri : 1 dir. Ornekler : ORANTILI IZIN KODLARI ------------------------------------------------ Orantılı kod - Izin durumu - ------------------------------------------------ 0400 - Dosya sahibi için okuma - 0200 - Dosya sahibi için yazma - 0100 - Dosya sahibi için çalıştırma - 0040 - Gruptakiler için okuma - 0020 - Gruptakiler için yazma - 0010 - Gruptakiler için çalıştırma - 0004 - Diğerleri icin okuma - 0002 - Diğerleri için yazma - 0001 - Diğerleri için calıştırma - ------------------------------------------------ ls -l --w-rw--w- 1 e06 B386 603 Oct 24 22:14 sezen_aksu_88.html --w-rw--w- 1 e06 B386 607 Oct 24 22:23 sezen_aksu_soyluyor.html chmod 0220 sezen* // Kullanıcıya ve grub'a yazma hakkı verelim ls -l --w--w---- 1 e06 B386 603 Oct 24 22:14 sezen_aksu_88.html --w--w---- 1 e06 B386 607 Oct 24 22:23 sezen_aksu_soyluyor.html 2- Karakter olarak : u : Dosyanın sahibi. g : Grup o : Diğerleri a : Herkes + : Izin vermek - : Izinleri kaldırmak. = : Belirli bir izin atamak üzere. chmod go+r sezen* // Ek olarak gruba ve diğerlerine okuma hakkı verelim ls -l --w-rw-r-- 1 e06 B386 603 Oct 24 22:14 sezen_aksu_88.html --w-rw-r-- 1 e06 B386 607 Oct 24 22:23 sezen_aksu_soyluyor.html S.9-) Sahip olduğum dosyaların ne kadar yer kapladığını nasıl öğrenebilirim? Başlıca 2 yolu vardır; 1- du komutu : du komutu bulunduğunuz dizinden itibaren tüm alt dizinleri tarayarak block cinsinden ne kadar yer kapladığını gösterir. Block size'ları genelde 2 byte'tır Bu sebeple çıkan sayıyı iki'ye bölerek o dizinin ne kadar yer kapladığını görebilirsiniz. En aşağıda da toplam miktar belirtilir. Örnek : /home/e06/m>du 72 ./.m 8 ./m 8 ./ch 496 ./temp 632 . 2- quota komutu : quota komutu toplam olarak ne kadar yer kapladığınızı ve sizin ne kadar yazma hakkınızın olduğunu gösterir. Aynı zamanda eğer geçici disk sınırınızı aştıysanız, kalan gün miktari vs. gibi bilgileri de gösterir. Örnek : /home/e06/m>quota Disk quotas for user e06 (uid 7): Filesystem blocks quota limit grace files quota limit grace /home211 2748 3000 00 302 1000 10 S.10-) Sistemde kimlerin çalıştığını nasıl öğrenebilirim? w komutu ile : w [Seçenekler] 54 w komutu sistemin yükü ve çalışanların faaliyetleri konusunda bazı bilgiler verir. Komutu çalıştırdıktan sonra çıkan bilgilerden ilki, sistem hakkındadır : sistem saati, o anda kaç kişinin açık olduğu ve sistemin yükü gibi.. Sistem yükü genelde 0 ile 40 arasında değişen bir değer ile gösterilir. Eğer sistemin yükü 0-5 arasında ise fazla yüklü olmadığını söyleyebiliriz o anda sistemin. Ancak bazı çok kullanıcılı yada ağır islerin yapıldığı makinelerde bu sayı 5 ten çok çok fazla olabilir. Bu ilk satırın ardından gelen satırlarda sıralar halinde kullanıcılarla ilgili bilgiler bulunur. Soldan saga dogru ; Ilk alan : Kullanıcının userid si. 2. alan : Baglandığı tty'si. 3. alan : Ne zaman login olduğu. 4. alan : En son komutu çalıştırmasından sonra gecen zaman. (idle time) 5. alan : Bilgisayarın açılmasından beri yapılan process 'lerin getirdiği toplam yük. 6. alan : Yapılan en son işin verdiği yük. 7. alan : Yaptığı iş. S.11-) Dosyaların çıktılarını Printer'dan nasıl Alabilirim? lp (Seçenekler) dosyalar Burada dosya hemen yazdırılmayarak spool a atılacaktır. Seçenekler: -dyazici : Yazma işleminin yapılacağı yazıcının veya yazıcılar sınıfının belirlenmesi amacıyla bu seçenek tercih edilir. S.12-) Yazıcıya yolladığım dosyanın durumunu nasıl öğrenebilirim? lpstat (Seçenekler) Seçenekler: -d :sistemin kabul ettiği yazıcıyı görüntüler. S.13-) Yazıcıya yolladığım bir dosyayı henüz basılmadı ise iptal edebilir miyim? Evet. cancel (liste numarası) (yazıcılar) S.14-) Bir dosyanın içeriğini görmek için hangi Programları kullanabilirim? 1- cat [dosya_ismi] [dosya_ismi] ... 55 Bir dosyanın içeriğine bakmaya yarar. Dosyanın içeriği hiçbir şekilde durmadan ekrandan akıp geçer. Bunu engellemek için more parametresi kullanılabilir. 2-more [dosya_ismi] [dosya_ismi] ... Bir dosyanın içeriğini ekranda görmek için kullanılır, ancak cat 'ta olduğu gibi dosyanın içeriği ekrandan kayıp geçmez. Her sayfanın sonunda ekranın sol alt köşesinde --More--(x%) seklinde bir yazı belirir. Buradaki x' dosyanın yüzde kaçının görüldüğünü gösterir. Bu dosyanın büyüklüğü hakkında size bilgi verebilir. --More-- (x%) yazısını gördükten sonra aşağıdaki tuşları kullanabilirsiniz. SPC : Arka sayfaya geçilmesini sağlar. q : Programdan çıkar. 3-less [Seçenekler] [dosya] [dosya] .... More ve vi programlarının bir karışımıdır denilebilir. İleri olduğu gibi geriye doğruda kolaylıkla işlem yapılabilmesini sağlar. 4-most [dosya] More ve less 'in karışımıdır denilebilir. İkisinin de farklı özelliklerini almıştır. Eğer sisteminizde varsa bunu kullanmanızı tavsiye ederim. 'h' ile yardım alarak programda kullanılabilecek tuşlar hakkında bir bilgi alabilirsiniz. S.15-) Arka arkaya komutları çalıştırabilir miyim? Evet aralarına ";" (noktalı virgül) işareti koyarak komutlar arka arkaya çalıştırılabilir. Örnek : date;who;finger @rorqual;pine;ls -lFa ..... Burada dikkat edilmesi gereken bir şey vardır, her komut diğerinin bitmesinden sonra çalışır. Yani aynı anda iki iş yapılmamaktadır. S.16-) Aynı anda birden fazla iş yapabilir miyim? Evet, Programlarınızı arka plana atarak bunu yapabilirsiniz. Bu işi yapmanın genelde iki yolu vardır : 1- Komut dizisinin sonuna "&" işaretini ekleyerek. 2- Çalışır durumda iken (genelde) Ctrl+Z ye basarak. Programı arka planda çalıştırmak için Ctrl+Z ye bastıktan sonra bg yazmanız gerekir. fg yazarak da tekrar o programa dönebilirsiniz. Bu işlemleri yaptıktan sonra isterseniz makinenizi logout yapabilirsiniz, geri planda çalışan program çalışmaya devam eder. ( Ama her program bu kurala uymaz !!! ). Dikkat edilmesi gereken bir şey vardır; bu işlemi yaparken geri plana attığınız programın sizden bir input istememesi. Eğer böyle bir program çalıştırıp arka plana atarsanız, program arka planda sizi bekler!
__________________
SevGi SuYu HASret Aşk TarLaSıyIm DöKüLMekTeN uSanMIş Göz DamLasIyIM ParaM ParCa oLmuŞ KaLp YaRasIyIm AMA eN öNemLiSi SeNi aSLa UnuTmaYaCak Bir BaŞBELASIYIM[Link'i Görebilmeniz İçin Kayıt Olunuz.! Kayıt OL] |