​​Unix İşletim Sistemi ve Unix Komutları

Cebinizdeki telefon, kullandığınız uygulamalar hatta her gün girdiğiniz internet bağlantısı. Bu teknolojilerin hepsinde aynı fikir yatıyor: Unix. 1960’ların sonunda küçük bir ekibin yenilik ve basitlik arayışıyla temelleri atılan Unix, modern bilişim dünyasının standartlarını belirleyen şablonu oluşturdu. Bu yazıda Unix’in tarihine, mimarisine, bilişim dünyasına etkilerine ve komut yapısına değineceğim.

1- Unix Nedir ve Nasıl Ortaya Çıktı?

Unix bir işletim sistemidir. Aynı anda birden fazla kullanıcı ile çoklu işlem kapasitesini destekler. Kişisel bilgisayarlardan ve sunuculardan mobil cihazlara kadar bir çok sistemde kullanılabilmektedir. Geleneksel olarak terminal ve komut satırı üzerinde kullanılır ayrıca yıllar içerisinde kolay gezinme desteği veren pencerelere benzeyen bir grafik kullanıcı arayüzü (GUI) de eklenmiştir. Farklı sürümleri vardır ve en popüler olanları Sun Solaris, Linux/GNU ve MacOS X’tir. 

Unix ilk tohumları başarısızlıkla sonuçlanan ama önemli dersler alınan Multics (Multiplexed Information and Computing Service) projesiyle ekilir. MIT, Bell Labs ve General Electric tarafından geliştirilen bu sistem; zamanına göre oldukça gelişmiş ama ağır ve anlaması zor bir yapıdaydı. 1969 yılında Bell Labs projeden çekildikten sonra, ekipte yer alan Ken Thompson ve Dennis Ritchie daha sade ve verimli bir işletim sistemi​ geliştirmeye karar verdiler. Bu arayış, sadece bir ürünün değil, modern programlama anlayışının da temellerinin oluşmasını sağladı.

Aynı ekipte yer alan Brian Kernighan, Multics'in karmaşıklığına esprili bir gönderme yaparak (tekil/basit anlamında) sisteme önce UNICS adını verdi; bu isim zamanla Unix olarak yerleşti. 

İlk sürümleri Assembly diliyle (düşük seviyeli programlama dili) yazılmış olsa da, 1972 yılında Dennis Ritchie tarafından geliştirilen C programlama dili ile sistemin büyük ölçüde yeniden yazılması gerçek bir devrim yarattı. Bu gelişme sayesinde Unix, donanıma bağımlı olmaktan kurtulup farklı makinelerde çalışabilen ilk modern işletim sistemi oldu ve bugün kullandığımız Windows, Linux ve mac OS gibi sistemlerin felsefi temelini attı.

 2- Unix Mimarisi

1) Unix sistemleri, karmaşık işlemleri yönetebilmek için birbirini tamamlayan üç ana katmandan oluşur. Bu yapı donanım ile kullanıcı arasındaki iletişimi kusursuzlaştırır:

Çekirdek (Kernel): İşletim sisteminin kalbidir. Donanım ile doğrudan iletişim kuran tek bölümdür.

Burada:

  • RAM kaynaklarını programlara paylaştırılır.
  • Hangi işlemin ne zaman çalışacağını belirlenir.
  • Verilerin diskte nasıl saklanacağını ve okunacağını yönetilir.
  • Donanım bileşenlerini kontrol edilir.
  • Kullanıcı izinleri ve dosya erişimlerini denetlenir.

2) Kabuk (Shell): Kullanıcı ile çekirdek arasındaki "tercüman"dır. Kullanıcının girdiği komutları çekirdeğin anlayacağı dile çevirir. En popüler shell örnekleri bash ve zsh’tır.

3) Uygulamalar ve Araçlar: Kullanıcının etkileşime girdiği en dış katmandır. Metin editörleri (Vim, Nano), derleyiciler, sunucu yazılımları ve komut satırı araçları burada bulunur.

Bu katmanlı yapı sayesinde Unix, bir uygulama çöktüğünde tüm sistemin kapanmasını engeller ve yüksek stabilite sunar.


3- Unix’i Farklı Yapan Ne?

Unix'i yalnızca bir işletim sistemi olmaktan çıkarıp aynı zamanda gelecekteki sistemlerin şablonu yapan şey, barındırdığı sarsılmaz tasarım ilkeleridir. Bu felsefe, karmaşıklığı basit araçlarla yönetmeyi hedefler.

Unix dünyasında bir yazılımın "iyi" sayılması için şu kriterlere uyması beklenir:

  • Unix dünyasında programlar tek bir göreve odaklanmalı ve o görevi mükemmel bir verimlilikle yerine getirmelidir. Karmaşık, şişkin yazılımlar yerine sade araçlar tercih edilir.
  • Çıktılar bir sonraki adımın girdisi olabilecek bir çıktı üretmelidir. Bu, Unix'in meşhur "Pipe" (|) yapısının temelidir.
  • Veriler ve iletişim için metin (text) formatı tercih edilir. Metin evrenseldir; kolayca okunabilir, düzenlenebilir ve farklı araçlar arasında aktarılabilir.
  • Karmaşık problemleri tek bir devasa algoritmayla çözmek yerine, küçük ve basit araçları birbirine bağlayarak çözüm üretilir.
  • Unix dünyasının en devrimsel kuralı her şey bir dosyadır (Everything is a File). Bu sayede donanımdan yazılıma her şey aynı basit arayüz üzerinden yönetilmektedir.

"Everything is a File" Ne Demek?

Sistem yönetimini kökten sadeleştiren bir yaklaşımdır. Unix'te diskler, terminaller (ekran/klavye), yazıcılar, ağ arayüzleri ve hatta süreçler (processes) birer dosya gibi ele alınır.

Bu Yaklaşımın Avantajları:

  • Yönetim kolaylığı sağlar. Bir sabit diskte işlem yapmakla bir metin dosyasıyla işlem yapmak arasında komut düzeyinde fark yoktur. Her ikisi der read (oku) ve write (yaz) komutlarıyla yönetilebilir.
  • Komut satırı araçları (grep, sed, awk vb.) donanım verilerini bile bir metinmiş gibi işleyebilir.
  • Esneklik ve hız sağlar. Örneğin, bir ağ kartından gelen veriyi doğrudan bir dosyaya yönlendirmek veya bir sensörden gelen veriyi anlık olarak işlemek bu sade yapı sayesinde saniyeler sürer.

4- Bir İşletim Sisteminden Daha Fazlası

Unix, zamanla sadece bir işletim sistemi olmaktan çıkıp, modern işletim sistemleri için temel bir şablon ve standart haline gelmiştir. Bugün kullandığımız sistemlerin çoğu, Unix'in genetik kodunu veya tasarım prensiplerini taşır.

4.1. BSD (Berkeley Software Distribution)

Berkeley kampüsünde geliştirilen Berkeley Unix, Unix'in akademik ve özgür dünyadaki temsilcisidir. Özellikle ağ teknolojileri (TCP/IP) konusunda dünyaya öncülük etmiştir.

  • İnternetin belkemiği olan TCP/IP protokolünün yaygınlaşmasında büyük rol üstlenmiştir.
  • Bugün kullandığımız macOS ve iOS, özünde BSD tabanlı bir çekirdek (Darwin) üzerine inşa edilmiştir.

4.2. System V

AT&T'nin resmi ve ticari Unix koludur. Daha çok büyük ölçekli kurumsal ihtiyaçlar ve devasa sunucular için optimize edilmiştir. İş dünyasında ve sunucu bilgisayarlarında vazgeçilmez olmuştur.

5- Unix ve Linux Arasındaki Farklar: Linux Bir Unix mi?

Unix vs Linux ?

Linux, 1991 yılında Linus Torvalds tarafından geliştirildiğinde bir Unix kopyası olarak değil, yeni bir işletim sistemi olarak geliştirildi fakat unix temel prensipleri temel alınarak yazıldı. 

  • Linux, Unix'in çalışma mantığını, komut setini ve hiyerarşisini bir şablon olarak kullandığı için Unix-benzeri olarak adlandırılır.
  • Bugün Android telefonlardan bulut sunucularına, süper bilgisayarlardan akıllı saatlere kadar her yerde bu "Unix şablonunun" Linux hali çalışmaktadır.

Unix'in bu denli dallanıp budaklanması, onun bir yazılımdan ziyade bir standart olduğunu kanıtlar. Bu sistemlerin her biri farklı bir amaca hizmet etse de, hepsinin kökünde Ken Thompson ve Dennis Ritchie'nin sade ve güçlü tasarımı yatar.

6- Bugün Unix Nerede?

 Unix ve türevlerinin modern dünyadaki etkisini dört ana başlıkta özetleyebiliriz.

6.1 Sunucular ve Veri Merkezleri

 İnternetin kalbi Unix benzeri sistemlerle atar. Web sunucuları, karmaşık veritabanları ve kurumsal sistemlerin %90'ından fazlası Unix-benzeri (özellikle Linux) yapılar üzerinde yükselir.

6.2 Bulut Bilişim (Cloud Computing)

AWS, Azure ve Google Cloud gibi devlerin sunduğu servislerin büyük bir bölümü Unix/Linux prensiplerine dayanır. Konteyner teknolojileri (Docker, Kubernetes) tamamen Unix'in süreç yönetimi ve izolasyon mantığı üzerine inşa edilmiştir.

6.3 Mobil Dünyadaki Yeri

Cebimizde taşıdığımız cihazların temelinde de Unix mirası vardır. Android, Linux çekirdeği üzerine inşa edilmişken; iOS, BSD kökenli Darwin tabanlı bir sistem kullanır. 

7- Temel Unix Komutları ve Kullanımları

Komut

Açıklama

Örnek

ls -l

Dosyaları detaylı listeler

ls -l /home/user

cd

Dizin değiştirir

cd /var/log

pwd

Bulunduğun dizini gösterir

pwd

grep

Metin içinde arama yapar

grep error log.txt

chmod

Dosya izni değiştirir

chmod 755 script.sh

ps aux

Çalışan süreçleri gösterir

ps aux

top

Canlı sistem izleme

top

df -h

Disk kullanımını gösterir

df -h

man ls

Komut yardım sayfası

man ls


Unix’in en güçlü silahlarından biri de Pipe (|) karakteridir. Bu sembol, bir komutun çıktısını diğer bir komuta girdi olarak gönderir.

cat liste.txt | sort | uniq

Bu komut zinciri sırasıyla şu işlemleri yapar:

  1. cat: Dosyayı okur ve ekrana basar.
  2. sort: Okunan veriyi alfabetik sıraya koyar.
  3. uniq: Sıralanmış verideki tekrar eden satırları temizler.

8- Neden Unix Öğrenmelisiniz?

Unix öğrenmek, bir siyah ekrana komut yazmaktan çok daha fazlasıdır. Modern bilişimin "ana dilini" öğrenmek ve sistemlerin çalışma mantığını temelden kavramaktır.

8.1 Unix Öğrenmenin Sağladığı 5 Kritik Avantaj

  • Dünyadaki internet trafiğinin büyük bir kısmı Unix tabanlı sistemler üzerinden akar. Bu devasa altyapıyı yönetme ve optimize etme becerisi kazandırır.
  • Devops süreçlerine daha hakim hale gelirsiniz. Docker, Kubernetes ve CI/CD süreçlerinin tamamı Unix felsefesiyle çalışır.
  • Güçlü bir terminal kullanımı, geliştirme süreçlerinizi dramatik ölçüde hızlandırır.
  • Tekrarlayan işleri otomatize etmek için Bash veya Python gibi dillerle güçlü scriptler yazabilir, karmaşık veri işleme süreçlerini tek bir komut satırıyla yönetebilirsiniz.
  • İşlem yönetimi (process management), bellek hiyerarşisi ve dosya izinleri gibi temel kavramları öğrenmek, Unix benzeri her sisteme hakim olmayı sağlar. 

50 Yıllık Bir Mühendislik Mirası

Unix, yarım asrı geçen geçmişine rağmen bugün hâlâ en modern teknolojilerin merkezinde yer alıyorsa, bunun nedeni basit, modüler ve güçlü yapısıdır. Unix öğrenmek sadece komut bilmekten ibaret değildir. Bilgisayarların nasıl çalıştığını, verinin sistem içinde nasıl ilerlediğini ve karmaşık sorunların küçük parçalara ayrılarak nasıl çözüldüğünü anlamayı sağlar. Bugün kullandığımız yapay zekâ sistemlerinden akıllı telefonlara kadar pek çok teknolojinin temelinde de bu sade ama etkili yaklaşım bulunur.

#unix #linux #programming #backend