Ana içeriğe atla

Linux Notları-0 Shell ve Terminal-1

Shell (Kabuk) Nedir: Klavye yardımıyla kendisine verilen komutları, uygulaması için işletim sistemine veren bir programdır. İlk Linux gibi  Unix-like sistemlerde tek kullanıcı arayüzüydü. Sonrasında Shell gibi Command Line Interface (CLI) yanında Graphical User Interface(GUI) ler de kullanılmaya başlandı.

    Çoğu Linux sisteminde Bash(Born Again Shell) olarak adlandırılan Shell türü ise orjinal Unix Shell inin, Steve Bourne tarafından geliştirilmiş versiyonudur. Bunun yanında zaman içinde ksh, tsch, zsh gibi birçok shell türü kullanılmaya başlandı.



Bu Shell ile bilgisayara komutlar verebilmemiz için ihtiyaç duyduğumuz programın adı ise Terminal. Shell programı bunu kendisi yapmaz bu iş için bir Terminale ihtiyaç duyar. Yukarıdaki resimde kullanıcı terminali kullaranak shell den tree programını çalıştırmasını istiyor. 
    Terminal kelimesi veya terimi, komünikasyonda gönderici veya alıcı tarafında iletişim sinyalini sonlandıran(terminate) bir cihaz olarak açıklanabilir. Bizim bilgisayarla aramızdaki ilişkinin benzerliği burda. İlk zamanların bilgisayarları için The Teletype Terminal alışılmış bir terminalmiş..(https://www.youtube.com/watch?v=2XLZ4Z8LpEE) Teletype firmasına ait Teleprinter(teletypewriter, teletype veya TTY)

Teleprinter(teletypewriterteletype veya TTY) denilen cihaz, bir çok iletişim kanalı ile haberleşmeye yarayan elektromekanik bir cihaz. Bu cihazlar sonrasında bilgisayarlar için kullanıcı arayüzü olarak kullanılmış.



Yani terminal dediğimiz şey basitçe çalıştırıldığında ilk yaptığı şey bir shell programını çalıştırmak olan bir arayüz programı. Bunu görmek için pstree komutunu işleterek process ağacını görebiliriz. 

pstree -psa $$

Ufak farklılıklar olsa da şöyle bir çıktı alırsınız:


Sistemin ana proseslerinden sonra qterminal -> zsh -> pstree şeklinde devam ettiğini görebiliriz. Burda terminal türünüz qterminal den farklı, shell için zsh değilde farklı bir tür görebilirsiniz. Buradaki $$ ile ulaştığımız paramatre shell e ait iç parametrelerden.Çağırdığımız script in kendisinin Process ID(PID) değerini veriyor.
-psa ile de pstree komutuna parent prosesi göster, PID göster gibi opsiyonları vermiş oluyoruz.
pstree detay için aşağıdaki linke veya sisteminize ait ilgili man sayfasına bakabilirsiniz.

$$ detay için ve diğer parametreleri görmek için  


Sistem üzerindeki shell türlerini görmek için

cat /etc/shells

yazmanız yeter. Şu anda hangisini kullandığınızı öğrenmek içinse şu komutları deneyebilirsiniz:

echo $0

veya

ps -ef | grep $$ | grep -v grep

veya

echo $SHELL

Bu komutların detayları için man sayfalarına bakılabilir.

Sytem Console, Virtual Terminal(VT) veya Virtual Console(VC) , Terminal Emulator gibi konuları atlıyorum. Detayları için bu anahtar kelimleri kullanarak araştırma yapabilirsiniz. Sadece yukarda bahsettiğimiz tty kısaltmasına gönderme yaparak, Virtual Console ların , Unix-Like sistemlerin sistemdeki cihazlara erişiminin sıradan bir dosya gibi olmasını sağlayan yapıyı hatırlatıp, /dev/tty1, /dev/tty2 gibi temsil edildiklerini söyleyebilirim. /dev altına bakarsanız orada bunların yanında /dev/console gibi veya Virtual Console Screen, ve Virtual Console Screen With Attributes için /dev/vcs1 ve /dev/vcsa1 gibi başkalarını da görebilirsiniz.

Shell ve çokca kullanılabilecek komutlar:

Komutları incelemeden önce  4 tip Shell komutu olduğundan bahsedebiliriz.

    1. Bu komuta karşılık gelen çalıştırılabilir bir program. C,C++, python,ruby gibi dillerle veya Shell betikleri olarak yazımış herhangi bir program.

    2. Shell programının bizzat kendi içinde(built-in, yerleşik) olan komutlar.

    3. Tanımlanmış Shell fonksiyonları

    4. Takma adlar(alias)

Burda şundan da bahsedebiliriz: Bir Shell komutunu terminale girdiğimizde, bu 4 türden hangisi olduğunu ve bu komuta karşılık gelen programların veya fonskiyonların nerde olduklarını Shell programı nasıl bilir ?

Bu serinin ikinci kısmında buradan devam edelim...


Kaynaklar:

0.https://www.linuxfromscratch.org/

1.http://linuxcommand.org

2.https://docstore.mik.ua/orelly/unix/upt/ch01_02.htm

3.https://dwmkerr.com/effective-shell-part-5-understanding-the-shell

4.https://searchnetworking.techtarget.com/definition/terminal

5.https://en.wikipedia.org/wiki/Teleprinter

6.https://en.wikipedia.org/wiki/System_console

7.https://en.wikipedia.org/wiki/Virtual_console

8.http://blog.btrisk.com/2017/03/kali-linux-servis-yonetimi.html



Yorumlar

Bu blogdaki popüler yayınlar

Kali Linux Terminal Türkçe Klavye Ve İlk Ayarlar, Programlar

1.Komut satırına aşağıdaki komutu yazarak kalvye dilinizi Türkçe’ye çevirebilirsiniz: setxkbmap tr bu geçici bir çözüm sonrasında kalıcı olsun istiyorsanız   /etc/default/keyboard   dosyasını açıp içerisindeki  XKBLAYOUT satırındaki değeri  tr olacak şekilde değiştirebilirsiniz. veya  sudo dpkg-reconfigure keyboard-configuration komutuyla klavye dil ayarlarını düzenleyebilirsiniz. 2.Güncellemeleri kontrol edelim: sudo apt-get update sudo apt-get dist-upgrade Bu komutlardan sonra işletim sistemini yeniden başlatmanızı öneririm. Terminal "reboot f" yazabilirsiniz hızlıca. 3.Linux header ları yükleyelim sudo apt-get install linux-headers-$(uname -r) 4.Sonrasında VirtualBox için Aygıtlar > Misafir eklentileri CD kalıbını yerleştir ile misafir eklentileri kalıbını sisteme bağlayalım ve terminal şu komutu verelim bash /media/cdrom/VBoxLinuxAdditions.run Sonrasında VirtualBox menüsünden Görünüm>Tam Ekran Kipi

Linux Notları-2 Boot ve Deamons

     Önceki yazıda işlemcinin ilk çalışma anında işemcinin üreticisi tarafından belirlenmiş bir adrese gittiğini söylemiştik ve orda kalmıştık. "Peki bu adrete ne var" sorusuyla bırakmıştık. Bu adresin bir bios çipine map edildiğini biliyoruz. (Burada biosun kendi kodunu RAM üzerine kopyalaması, shadowing, bit twiddling gibi konuları atılıyorum detay için bakabilirsiniz ) Bu adreste işlemcinin çalıştıracağı ilk komut var. Şimdi bu komutu görelim ne iş yaptığına bakalım. Bunu görmenin bir kaç yolu var elbette ama ben mümkün olduğunca basit ve anlatılabilir olanı kullanacağım.     Tersine mühendislik yaptığımızda kaynak kodla karşılaştırabilmemiz için bios firmware sizin için ulaşılabilir yani açık kaynak olmalı. Ben VirtualBox için ve Q emu için kaynak kodları karşılaştıracağım. Fiziksel makineniz içinde aynı durum söz konusu ise ulaşabiliyorsanız window üzerinde Physical Memory Viewer kullanarak yazıyı takip edebilirsiniz veya IDA pro vs g

Türkiyede Gençlik Kavramı - Yard.Doç.Dr. Gülden Demet Lüküslü

    Yard.Doç.Dr Gülden Demet Lüküslü'nün    Türkiyede Gençlik Kavramı  ' söyleşisinden aldığım bazı kısımlar:       "...İşte o yüzden sosyolog Pierre Bourdieu gençlik çalışmasını ve gençlik üzerinde yapılan akademik çalışmaları çok eleştiriyor. “Siz çalışırken sadece burjuva gençliğini çalışıyosunuz, çok ciddi sayıda olan işçi gençliğini göz ardı ediyosunuz. Sizin genç derken bahsettiğiniz kitle, daha çok öğrenci olan kitledir” diyor..."