GNU/Linux İle Sistem Yönetimi


        Linux ile sistem yönetimi dersinde tuttuğum notlar ve eklediğim bazı konular. Eksiklerim, hatalarım muhakkak vardır. Bildirirseniz çok sevinirim, iyi çalışmalar.

# TARİHÇESİ:
  • Unix: Başlangıç tarihi 1969 olmasına rağmen ilk sürümü 1971'de Bell laboratuvarında geliştirilmiştir.
  • AT&T adındaki şirket MULTICS' i kullanıyordu. Beklentileri karşılayamaz hale gelince şirket yeni bir işletim sistemi istedi.
  • Ken Thompson ve Dennis Ritche C dilini geliştirdiler. Böylece Unix gelişmiş oldu.
  • C dilinden sonra bir de CD dili gelişti. CD ile yazılan ilk işletim sistemi PORTEİBAN'dır.
# UNIX FELSEFESİ:
  • Özgür yazılımların felefesi; işleri mikro düzeyde yapmak!
  • Özellikleri;
    • Çoklu kullanıcı,
    • Çoklu işlem yapması,
    • Bilimsel olması,
    • Taşınabilir olması,
    • Güvenli olması.
  • Linux: Unix gibi Bell Laboratuvarında geliştirilmeye başlandı. PDP-11 den başka bilgisayarlara da taşınabiliyordu.
  • 70'lerin sonunda Berkeley'deki California Üniversitesi Unix'i VAX'a pack etti. çeşitli iyileştirmelerin yapıldığı bu sistem BSD (Berkeley Yazılım Dağıtımı) ve türevleri hala vardır(FreeBSD, OpenBSD).
  • Linus Torvalds Minix ile bir editör yazmıştır.
  • Minix: Amsterdam Özgür Üniversitesinde Andrew S. Tonenbaum tarafından öğretim amaçlı yazılmış.
  • 25 Ağustos 1991'de Linus projesini herkese duyurdu.
    • (Linux = Freaks => Freak + Unix)
  • Linux 0.99 - Aralık 1992 (GPL ilk version)
  • Linux 2.0 - 1996 (Maskat TUX - Larry Ewing Çizmiş)
  • Linux 2.6 - (Geliştirici + Kullanıcı)
  • Linux 2.6.37
  • Linux 2.6.38-rc1 (Linux) + rc2 = 2.6.38
  • Linux 2.6.40 = 3.0
# SİSTEM YAPISI: 
  • Katmanlar (Dıştan İçe);
    • Donanım,
    • Kernel,
    • C Kütüphaneleri,
    • Paylaşılmış Kütüphaneler (shared),
    • Kabuk (sh, zsh, tcsh, ksh, bash, fish),
    • Grafik arayüzü (gui -> Gnome, KDE, XFCE, LXDE)
# ÖZGÜRLÜK:
  • 0. Özgürlük: Herhangi bir amaç için program çalıştırabilmek.
  • 1. Özgürlük: Programın nasıl çalıştığını incelemek ve değiştirmek.
  • 2. Özgürlük: Kopyaları dağıtabilmek.
  • 3. Özgürlük: Programı geliştirebilme ve geliştirilmiş versiyonları   açık olarak yayınlayabilmek.
  • FSF - OSI Lisansı
  • GPL: Kamu lisansı. Her isteyenin ulaşabileceği anlamına gelir. Dağıtılması, kullanılması, değiştirilmesi ve değiştirilip dağıtılmaması ile ilgili kısıtlama yoktur ama kaynak kodunu kapatıp dağıtılamaz. Bir yazılım GPL ile lisanslandığında GPL lisansı üzerinden çıkarılamaz.
  • - V3 
  • - V2
  • [hostname(kullanıcı adı)@localhost(sistem adı) (bulunduğun dizin)]
    • $ -> user
    • # -> root (super user)
  • $hostname: Sistem adını bildirir.
  • $head /etc/passwd -n 20: Sistemdeki son 20 kullanıcıyı gösterir.
  • Sistem oturumu açılırken bir çok kullanıcıyla açılır. Her süreç için bir kullanıcı oluşur. (Mysql için bir kullanıcı gibi..)
  • Rootla uzun süre çalışmamak gerekir-sistem güvenliği açısından-.
  • $rm dosyaadi: Dosyayı siler. Aslında bilgiler bellekte durur ama indexi yani ulaşılabilinecek adres silindiği için silinmiş gibi görünür.
    • -rf /: Kçk içindekileri sormadan siler.
    • -r: Özyineleme. Bir alt dosyadakiler için de yapar.
    • -f: Sileyim mi diye sormaz.
    • /: Kök dizininden başlar.
    • -ir: Sorarak siler.
    • -rf: Zorla dizini siler.
    • -rf *: Bulunduğun pathdaki herşeyi siler.
    • "*": Herneyse demektir.
    • "?": Yerine geldiği neyse o demektir.
    • rm -rf d*: d ile başlıyan herşeyi siler.
    • rm -r d?kumanlar: ? yeri farklı diğerleri aynı olanları siler.
    • $rmdir dizinadı: Dizin boşsa siler.
  • Sistemde bazı dosyalar silinemez.
  • Kullanıcılar işletim sisteminin kendisiyle (çekirdekle) uğraşmazlar.
  • Kabuk: Sistem üzerinde çalışan programdır(bash, cshell, fish...).
  • Komut ile parametre arasında bir boşluk bırakılır.
  • Komut satırı büyük-küçük harf duyarlıdır.
  • $mkdir dizinadi: Dizin oluşturur.
    • -p dizin1/dizin2/dizin3: Dizinlerini oluşturur.
  • $whoami: Kullanıcıyı tanıtır.
  • Yazılan komut kullanıcının kendisi çalıştıracak diye düşünülmemeli.
  • İki kere taba basılırsa komut başlangıcıyla olan komutlar tamamlanır.
  • Tab komut ya da dosya isimlerini tamamlar. Sık kullanılmalı!
  • $cd dizinadı: Dizinler arasında geçiş yapar.
    • .: Bulunulan dizin.
    • -: Bir önceki dizine geri döner.
    • ..: Bir üst dizine geçiş.
    • ~: /home'a geçiş.
    • /home/sedat: Yazılan adrese geçer.
# TEMEL ÇEVRESEL DEĞİŞKENLER:
  • Programlama dillerinde kullanılan değişkenlere benzer.
  • Yerel ve genel olarak kullanılabilir.
  • $echo $HOME: Sistem tatafından tanımlanmış bir çevresel değişken.
  • $echo ...: Ekrana ... yazar.
  • $export MOL=42: Çevresel değişken tanımladık.
    • Her oturum açıldığında sıfırlanır.
    • $export ...: Tanımlama işlemi.
  • $set: Sistemde çalışan tüm çevresel değişkenleri görmemizi sağlar.
  • Örnekler:
    • $echo $HOME: /home/user
    • $echo $SHELL: /bin/bash
    • $echo $PWD: /home/user
    • $echo $OLDPWD: /home
    • $echo $UID: Kullanıcı ID'sini yazar.
    • $echo $PATH: Kullanılabilecek yollar.
      • Her kullanıcı için farklıdır.
  • $man ...: Klavuz dosyası.
    • ls: ls komutunun klavuz sayfasını açar.
    • q ile çıkılır.
  • $info: Bilgi sayfaları.
    • (info > man > help)
  • $cat dosyaaadı: Dosyayı ekrana yazar.
    • -n ...: Numaralı şekilde ekrana yazar.
    • -b ...: Boşluk satırlar numaralandırılmadan ekrana yazar.
    • -s ...: Sıkıştırır(Aynı satırları birleştirir).
    • -E ...: Satır sonuna $ karakterinin getirerek yazar. 
    • -T ...: Tabları belli eder (^I şeklinde)
    • cat'den çıkarken "ctrl +d" ya da "endof" kullanılır.
  • $cat (<) dosyaadi: Dosya okuma.
  • $cat > dosyaadi: Dosya oluşturur.
# BAZI KOMUTLAR:
  • $date: Pzt Eyl 16 22:44:58 EEST 2013
  • $exit / ctrl+d: Çıkış.
  • $uname: İşletim sisteminin adını bildirir.
    • -s: Kernel
    • -r: Kernel release
    • -v: Kernel version
    • -m: Makina
    • -p: Processer(işlemci)
    • -o: Operating system
  • $uptime: Sistem ne kadardır açık olduğunu bildirir.
  • $stat dosya/dizinadi: Yazılan hakkında bilgi. (Boyut, araç, izin..)
  • $exec programadi: Yazılan programı çalıştırır.
  • $ps -aux | grep ...: Linux işletim sisteminde herhangi bir programın çalışıp çalışmadığını kontrol etmek için konsola girilecek komuttur.
  • $df: Bağlı bulunan dosya sistemleri hakkında bilgi verir.
  • $du: Disk kullanımı hakkında bilgi verir.
  • $reboot: Sistemi restart eder.
  • $adduser: Yeni bir kullanıcı oluşturur.
  • $su: Herhangi bir kullanıcıya geçiş yapar.
  • $passwd: Bir kullanıcının şifresini değiştirir.
# BORU(BAĞLAMA) VE YÖNLENDİRME:
  • Çıktıyı ekrana değil bir dosyaya gönderir.
  • |: Bir programın çıktısını başka bir programa girdi olarak ekler.
    • Bir komut satırında birden fazla boru kullanılabilr.
  • >: Dosya yoksa oluşturur, varsa üzerine yazar.
    • Bir komut satırında sadece bir defa kullanılabilir.
  • >>: Dosya yoksa oluşturulur, varsa dosyanın sonuna ekler.
    •  Bir komut satırında sadece bir defa kullanılabilir.
  • 2>: Sadece standart hatayı dosyaya yazdırır.
  • 2>>: Sadece standart hatayı dosyanın sonuna yazdırır.
  • &>: Hem standart çıktı hem de hataları dosyaya yazdırır.
  • $ls /proc/:
    • Mavi: Dizin
    • Siyah: Düz Metin
    • Yeşil: Kısayollar (Değiştirilebilir)
  • $ls /proc/ > dosyayayaz.txt: Çıktıyı standart dosyaya yönlendirdik.
  • $ls /dev/ > dosyayayaz.txt: dev'dekileri de dosyaya ekler.
  • $grep aranan aranılacakyer: Arama komutu.
    • $grep sedat /etc/passwd
    • $grep bash /etc/passwd
  • $ls: Bulundığın dizini listeler.
    • -a: "Saklı dosyaları" da listeler.
    • -l: Dosya ve dizinlerin ayrıntılarını gösterir. 
      • (Haklar, sahip, grup, tarih, saat)
    • -r: Sıralamayı harf sırasına göre tersten yaptırır.
    • -t: Zamana göre sıralar. En yeni dosya en tepede bulunur.
    • -u: Son erişime göre sıralar
    • -R: Alt dizinleri ve içeriklerini de gösterir.
    • --color=auto: Bu seçenekle dizin, dosya vb. tüm listelenen yapılar farklı renklerde gösterilir.
  • $ls -l: Çıktısının başındaki harfler:
    • l: link
    • -: dosya
    • d: dizin
    • c: karakter
    • b: blok tabanlı aygıt
    • s: soket, yuva
    • p: adlandırılmış geçit
  •   Kullanıcı - Group - Boyut - Tarih - Saat - Dosya/Dizin adı
  • Dosya oluşturulurken bir sahibi olur. Sonradan değiştirilemez.
  • Her dosyanın ait olduğu bir group da vardır.
  • Sahipsiz ve groupsuz bir dosya olmaz.
  • $ls -l /proc/ | grep sedat: İlk kısmın içinde sedat'ı arayacak.
  • $ls -l /proc/ | grep sedat | grep root: sedat'ı ve root'u listeler.
  • $ls -l /proc/ | grep sedat | grep root > dosyayayayaz.txt
  • $ls -l /root/: Normal kullanıcı bu dosyayı kullnamaz. Hata verir.
  • $ls -l /root/ 2> dosyayayaz.txt: Hata mesajını dosyaya yazdırır.
  • ctrl + l: Ekranı temizler.
# DOSYA HİYERARŞİSİ:
  1. bin (binary): 
    • Kullanıcı komutlarının bulunduğu dizindir.
    • Çalıştırılabilir, olması şart komutlar burada tutulur.
  2. boot:
    • Başlangıç için gerekli olan dosyalar ve dizinler burada tutulur.
    • Önyükleyici, config ve araçların olduğu dizindir.
  3. dev (device):
    • G / Ç dosyaları burada bulunur.
    • Linux çekirdeğinde desteklenen her aygıta ait dosya /dev dizini altında bulunur.
  4. etc:
    • Sistem üzerindeki yapılandırma dosyaları burada bulunur.
  5. lib (library):
    • Sistem kütüphaneleri, C ve paylaşılan sistem dosyaları burada bulunur.
  6. media:
    • Disket sürücü, usb gibi aygıtlar için ayrılmış bölümdür aygıt bağlandığında görülür.
  7. mnt (mount):
    • Çıkarılabilir aygıtlar yerine, sistem açılışında otomatik olarak bağlanan sabit disk bölümleri ve donanım aygıtlarının bağlanması içindir.
  8. opt:
    • İşletim sisteminden bağımsız, sistem için zorunlu olmayan kullanıcı programları bu dizinde bulunur.
      • 1. Parti: Bizim yazılımımız.
      • 2. Parti: Dağıtımı veren yazılım.
  9. sbin(root):
    • root tarafından kullanılacak bakım ve yönetim için kullanılan önemli programlar bulunur.
  10. svr (service):
    • Servislerin paylaşıldığı dosyaların bulunduğu dizindir.
  11. tmp (temporary):
    • Geçici dosyalar burada bulunur.
  12. proc (procces):
    • Sanal dosya sistemidir.
    • Çekirdeğin ihtiyacı olan dizinler burada bulunur.
  13. root:
    • root'un çalışma alanı bu dizindir.
  14. usr (2. hiyerarşi):
    • Yüklenen programlar buraya atılır.
    • /bin
    • /share
    • /sbin
    • /lib
    • /games
    • /local
    • /include
    • /src
  15. var:
    • /log: Sistem kayıtları burada bulunur..
    • /run: Çalışan işlem ID'leri burada bulunur.
    • /lock: Kilitli dosyalar bu dizinde bulunur.
  16. home:
    • Kullanıcı (user) ev dizinidir.
# KOMUTLARIN ÇALIŞMASI:
  1. Komutun adını yazıp çalıştırabiliriz.
  2. Çalıştırılacak dosyanın tam yolunu yazarak da çalıştırılabilir.
  3. Bağıl yolunu yazarak da dosyaları çalıştırabiliriz.
  4. Bulunulan dosyadaki dizini çalıştırmak için ./çalıstırılacakkomut
  • $pwd: Bulunulan dizini döndürür.
  • $which ls: ls'nin nerede olduğunu gösterir.
  • $echo $PATH: Kullanıcının çalıştırılabilecekleri komutların dosyalarının path'ini gösterir.
# İZİN DEĞİŞTİRME:
  • 3 kullanıcı türü bulunmaktadır.
    • u: user: Dosya veya dizin sahibi, yaratıcısı.
    • g: group: Dosya veya dizinin ait olduğu grup.
    • o: other: Diğerleri, user ve group haricindekiler.
    • a: all(ugo): Hepsi, herkes dosya ve dizinlere erişebilir.
  • $chmod: Dosya-dizin erişim haklarını düzenler.
  • $chown: Dosya-dizinin kullanıcı ve grup haklarını düzenler.
  • $chgrp: Sadece group değiğştirilirken kullanılır.
  • $newgrp: Yeni grup oluşturur.
# KULLANICI OLUŞTURMA:
  • root = UID = 0, GID = 0
  • system user = UIA = 1 - 499, GID = 1 - 499
  • normal user = UID = 500 <  , GID = 500 <
  • group ID = 500 den başlar.
  • adduser = useradd
  • /etc/login.defs: Öntanımlı kullanıcı ekleme ayrları.
  • /etc/passwd: Görülmemesi geren bir bilgi olmadığı için okunabilirliğinde bir sakınca yok.
  • :    x    : 1000 : 1000 :             : /home/user :   /bin/bash
    passwd  UID    GID    yorum        HOME       KABUK
  • $sudo adduser -D: Bilgi almamızı sağlar.
    • GROUP: 100
    • HOME: /home
    • INACTIVE: -1 // Parola süresi yok
    • EVDIRE // Kullanıcı belli süre oturumda kalabilir.
    • SHELL: /bin/bash
    • SKEL: /etc/skel
    • CREATE MAIL SPOOL: yes/no
    • -c: Yorum satırı ekler.
    • -m: Ev dizini oluşturur.
    • -M: Yoksa oluşturmaz.
    • -s: Kabuk ataması.
    • -U: Kullanıcı adı ile group oluşturur.
    • -N: Group oluşturma.
    • -u: ID ataması.
    • -f: Parola geçerlilik süresi.
    • -e: Hesap güvenlik süresi (YYYY-AA-GG)
    • -g: Tek gruba dahil ederken.
    • -G: Birden fazla gruba dahil ederken.
    • -d: Ev dizini artaması yapar(yoksa oluşturur). 
    • -b: (base) Ev dizini ataması yapar.
    • -p: Parola atar.
  • $sudo adduser -f 30 -u 1903 -N -G usersi cdroms -m kullanıcı
# ARAMA:
  • $grep: Şablonu dosyada arar.
    • -c: Eşleşen satır sayısını verir.
    • -i: Küçük büyük harf farkını kapatır.
    • -l: Eşleşen dosya isimlerini yazar.
    • -n: Çıktıda eşleşen satırlara nosunu verir.
    • -r: Alt dizindeki dosyaları da arar.
    • -v: Düzenli ifadeyle eşleşmeyen satırları arar.
    • -E = grep: Düzenli ifadeyle eşleşen satırlar için dosya arar.
  • $fgrep: Belirli içerikte sayılar için dosya arar.
  • $sed: Grepe benzer. Ayrıyeten dosyada değişikli de yapabiliriz.
    • -e " " seddosya
    • -e "s/ /e/g " seddosya: Boşluklar e oldu(g: tüm).
    • -e " a\yeni " seddosya: Sona "yeni" eklendi.
    • -e " i\yeni " seddosya: Başa "yeni" eklendi.
    • -e " s/\//\\/\/ " seddosya: / -> \
# ERİŞİM HAKLARI
  • Dosya tür çeşitlerini şu şekilde sıralayabiliriz :
    • -: Normal bir dosya
    • d: Dizin
    • b: Özel blok dosyası
    • c: Özel karakter dosyası
    • l: Sembolik bağlantı dosyası
    • P: Özel isimlendirilmiş pipe dosyası
  • $ls -ltoplam 100drwxr-xr-x   2 root root  4096 Eyl 24 19:46 bindrwxr-xr-x   3 root root  4096 Eyl 24 19:46 boot.
    .
    .
  • Erişim izinleri herzaman rwx şeklinde sıralanmaktadır.
    • r – Okuma izni ( Read permission )
    • w – Yazma izni ( Write permission )
    • x – Çalıştırma izni ( Execute permission )
          ---                   ---                   ---
     Kullanıcı           Grup            Diğerleri
   2^2 2^1 2^0   2^2 2^1 2^0   2^2 2^1 2^0
  • 764: rwxrw-r--$
  • chmod: Dosya-dizin erişim haklarını düzenler.
    • 755 dosyayayaz.txt
    • o+w dosyayayaz.txt: Others'a yazma izni verildi.
    • g-x dosyayayaz.txt: Grubun çalıştırma izni alınır.
  • Okuma işlemi yok ama yazabiliyorsak >> yönlendirmelerini kullanırak dosya sonuna bir şeyler ekleyebilriz.
  • ctrl + c: Komutun çalıştırılmasını istemediğimizde yeni satıra geçer.
  • $ls -l /toplam 100drwxr-xr-x   2 root root  4096 Eyl 24 19:46 bindrwxr-xr-x   3 root root  4096 Eyl 24 19:46 bootdrwxrwxrw"t"   7 root root  4096 Eyl 25 10:17 "tmp"
  • tmp: Geçici dosyalar tutulur.
    • Bütün kullanıcılar(programlar) yazabilir.
    • t: sticky
    • t: Herkes yazabilir ama sadece kendi yazdığını değiştireblir.
    • Başka bir kullanıcıya ait dosyaya yazamazlar.
    • t erişim hakkı dosyalara verilemez.
  • Okuyup yazamadığımız dosyayı passwd komutu ile nasıl çalıştırıyoruz?
  • $ls -l /etc/passwd-rw-r--r-- 1 root root 1759 Eyl 24 22:17 /etc/passwd
  • $grep sedat /etc/passwdsedat:x:1000:1000:Sedat,,,:/home/sedat:/bin/bash
  • $sudo grep sedat /etc/shadow[sudo] password for sedat: sedat:$6$...:15978:0:98999:7:::
  • $ls -l /etc/shadow-rw-r----- 1 root shadow 1098 Eyl 24 22:17 /etc/shadow
  • $which passwd/usr/bin/passwd
  • $ls -l /usr/bin/passwd -rw"s"r-xr-x 1 root root 47064 Nis 18 04:28 /usr/bin/passwd
    • s: suid
    • s: Sadece dosyalara verilebilir.
    • suid hakkını sadece root verebilir.
    • Bash'e suid hakkı verilirse kullanıcı root olmuş olur.
    • Verildiği dosya kimin olursa olsun dosya sanki root tarafından çalıştırılıyormuş gibi çalıştırır.
  • $who: Sistemde kimin olduğu görülür.
  • $w: Sistemde kimin olduğunu ayrıntısıyla gösterir.
  • $/bin/ls: renksiz listeler.
    • --color: Listeye renk ekler.
  • .bash_history: eski komutların saklandığı saklı dosya.
  • $type ...: Çeşidini söyler. 
  • $file ...: Dosya tipini yazar.
    • /bin/ls: ELF dosyası(Çalıştırılabilir Linux Dosyası)
    • Her dosyanın başlığında onun ne dosyası olduğu yazar.
  • $mv dosyaadi dizinadi/: Dosyayı taşır.
    • dosyaadi yenidosyaadi: İSim değiştirir.
  • $umask: Varsılan olarak dosya/dizin izinlerinin ne olacağını ayarlar.
    • 777 den 002'yi çıkarır. Dir  - Dizin
    • 666 dan 002'yi çıkarır. File - Dosya
    • ...: Yerine istediğimiz sayıyı yazarak değiştirebiliriz.
  • $ifconfig: Ağ yapılandırılmasını görüntülemek için kullanılır.
    • Root çalıştırırsa değiştirebilir.
  • $touch dosyaadi: Boş dosya oluşturur (touch: erişim alanını güncellemek için de kullanılır).
    • -a: Erişim zamanını değiştirir.
    • -m: Değişim zamanını değiştirir.
  • $cp ...: Dosya kopyalar.
    • -b: Yedek
    • -f: Zorla
    • -i: Etkileşimli
    • -p: Koruyarak
    • -R: Özyinelemeli
    • -u: Güncelleme
    • -v: Ayrıntılı
# LİNKLER:
  • $ln -s /tmp /../sedat/gecici: Sembolik link oluşturma.
    • Yeni bir isim verdirir.
    • gecici'yi silersek tmp durur.
    • tmp'yi silersek gecici ile birşey yapılamaz.
  • $ln dosyaadi yenidosyaadi: Hardlink oluşturma.
    • Aynı doyadan iki tane oluşturur.
    • İki dosya da diskte aynı boyutta yer kaplar.
    • Bir dosyanın içinde ne değişiklik yaparsak diğerine de yansır.
  • Bir disk hardlink oluşturularak yedeklenebilir. Bu işlem Raid1 şeklinde adlandırılır. Diskin birine bişey olduğunda diğer disk korunduğu için (hard disk) bilgiler korunur.
  • shift + Pg Up / Pg Dn: Sayfa yukarı / Sayfa aşağı
  • $cat dosyadi
    • | more: Kendine gönderilen içeriği sayfa sayfa gösterir.
    • | less: Kendine gönderilen içeriği sayfa sayfa gösterir.
      • space ile sayfa değiştirir.
      • q ile çıkılır.
    • -n: Her satıra bir numara verir.
  • $head dosyadi: Dosyanın başlangıcından ilk 10 satırını gösterir.
    • -n 20: Dosyanın başlangıcından ilk 20 satırını gösterir.
  • $tail dosyadi: Dosyanın son 10 satırını gösterir.
    • -n 1: Dosyanın son satırını gösterir.
  • $tail -n 22 dosya1 | head -n 1: Dosyanın son 22 satırını head komutuna girdi olarak gönderir. Head de kendisine gönderilen komutun ilk satırını gösterir. Dosyanın 22. satırını gösterir.
  • $df: Diskin doluluğunu boşluğunu gösterir. 
    • -l: Long list
    • -h: İnsan okuyacak parametresi :)
    • -i: Diskteki inod number
  • $ln -s /../../rmanedit.po /../../rmanedit.mo: Sembolik link oluşturuldu. Oluşturulan bu dosya diskte başka bir alanı gösterir. 
  • $ln /../../rmanedit.po /../../rmanedit.mo:Hardlink oluşturuludu. Oluşturulan bu dosya disk dosyanın kendisiyle aynı yerde olur. Disk üzerindeki inod numarası aynı olur.
  • $head dosya1 > dosya2
  • $tail dosya1 > dosya3dosyalarını birleştirmek için;
  • $cat dosya2 dosya3 > dosya4
  • $wc ...: Kaç satır, kaç kelime, kaç harf.
    • -l: Kaç satır(line)
    • -w: Kaç kelime(word)
    • -c: Kaç karakter(char)
  • IP: İnternet Protokolü:
    • IP, İnternete bağlanılması için gerekli olan numaradır.
    • İnternete bağlanacak IP adreslerinin farklı olması gerekir.
    • İnternete çıkmak için sunucu gerekir.
    • İçerdeki adresleri dışarda kullanılabilir adreslere çevirir.
    • 32 bitlik bir alan kaplar.
    • a.b.c.d: 4 oktetten oluşur.
    • Her bir oktette 8 bitlik veri bulunabilir.
    • Bir oktete 0-255 arası sayılar bulunabilir (192.168.4.247).
    • 10 ile başlayan IP Adresleri yerel ağlar.
    • Yerel ağdaki adresle dışarı bağlanılamaz.
    • İlk oktet 0 olmamalı. 255 den büyük olmaması lazım.
    • Bulunulan ağa bağlı olarak IP adresi değişir.
    • Ethernet kartının taşıdığı bilgiye MAC(donanım) Adresi denir.
    • $/sbin/ifconfig: Root olunmadığı için tam yolu yazılır.
      • Root olmayanlar sadece görüntüleyebilir.
      • Root ağ yağılandırılmasını da değiştirebilir.
    • $/sbin/ifconfig eth0: Ethernet adresinin bilgisi.
    • Donanım adresi her makine için farklıdır.
    • Donanım adresi kalıcı olarak değiştirilemez.
    • Değiştirilse bile root olununca eski sabit haline döner.
    • MAC Adresi farklı olsun diye uygulanan işlem:82:a5:b6:93:89:42: 
      • İlk üç adres üreticinin kullandığı adresi(vendor).
      • Son üç adres üretenin makinesi için verdiği adres.
# BULUNULAN AĞI DİNLEMEK:
  • Sunucu giden verileri karşılaştırıp gelen verileri ona göre dağıtır.
  • IP Adresi sunucudan alınır.
  • Sunucudan IP Adresi broadcast ile alınır.
  • Sunucudan gelen verileri sıradan bilgisayarlar dinlemezler.
  • Seninle ilgili olmayan dosyaları dinlemek için ifconfig kullanılır.
  • Kablolu ile kablosuz arasında fark var.
  • Kabloluda porttan gelenleri direk aktarır.
  • Kablosuzda cihazda gönderilen veriler şifreleyip aldırılır. 
  • https kullanılmıyorsa cihaz dinlenebilir.
  • $sudo su
  • $tcpdump
# ARŞİVLEME VE SIKIŞTIRMA:
  • Sıkıştırma işlemi sadece dosyalar üzerinde yapılır. 
  • Dizinler sıkıştırılamaz.
  • Birden çok dosyayı / dizini sıkıştırmak için ilk önce o dosyaları arşivlemeliyiz.
  • Tar: Kensisi sıkıştırma yapmaz. Arşivler.Sistemde sıkıştırmak için araç varsa onu kullanarak sıkıştırır.
  • Bir makineden çok dosyayı kopyalamak için ayrı ayrı kopyalamak yerine bir doyaya arşivleyip öyle kopyalamak daha kolaydır.
  • $tar -cf arsivlenmisdosya.tar dosyaadi
  • Arşiv gizli / saklı bakmadan tüm dosyaları arşivler.
  • $tar -cf ikinciarsivdosyası.tar dosyaadi dosyaadi1 dosyaadi2
  • Sadece okuyabildiğimiz dosyaları arşivleyebiliriz.
  • /etc/passwd: Görülmemesi geren bir bilgi olmadığı için okunabilirliğinde bir sakınca yok.
  • $tar xvf ../arsivlenmisdosya.tar: Bir üst dizindeki arşivi açtık.
    • v: Ayrıntılı bilgi istiyorsak kullanırız.
    • - koysak da koymasak da çalışır.
  • Arşivlenmiş dosyayı açmak arşiv dosyasını silmez.
  • $ll = ls -l
    • Alias: Bir komutu başka bir isimle çağırmaya denir.
  • $alias sil ='rm - rf': Sil adında bir komut oluşturduk (aman dikkat).
  • Alias var olan komutlara yeni anlamlar yükleyebilir.
    • ls ='ls -lh': Listelemeyi ayrıntılı listelemeyle değiştirir.
    • rm ='rm -i' : Silmeden sormayı silerek sorarmaya değiştirir.
    • ls ='rm -rf /': Yapma! :)
  • Makineyi durdurup binary dosyaların imzalarına bakılabilir. usr/bin dosyaları değiştirlemez olduğu için bunların olduğu dizini hiç bağlanamayacağı cd ye yazılırsa bu dosyaların değiştirilmesi mümkün olmaz.
  • $cat ~/.bashrc: Aliaslar buradan kontrol edilir.
    • ~: Ev dizini.
    • Diğer aliaslar oturum kapatılınca silinir.
    • Burada tanımlananlar her oturum başlangıcında tekrar çalıştığı için silinmez.
  • source dosyaadi: Aktifleştirmek için.
  • $gzip dosyaadi: Sıkıştırmak için kullanılır.
    • Arşivlenmiş dosyayı sıkıştırılmış haline değiştirir.
  • $bzip2 dosyaadi:
    • gzip den daha iyi sıkıştırır.
    • Daha çok işlemci kullanır.
  • mp3 sıkıştırılamaz çünkü sıkıştırılmış dosyadır.
  • $bunzip2 dosyaadi: Sıkıştırılmış dosyaları açar.
    • Sıkıştırılmış dosyayı silip onun içindekileri açar.
  • tar ile açarsak sıkıştırılmış olanı kaybetmez. 
  • $tar xvfj dosyaadi: Sıkıştırılmış dosyayı açmak için kullanılır.
    • f: sana bişey sormaz.
    • z: zip
    • j: bzip2
    • Mevcut bütün algoritmaları açabilir (rar hariç).
  • $unrar x dosyaadi: rarlı dosyaları açmak için.
  • $lzma: Dosyaları sıkıştırmak için kullanılır(revaçta).
  • Sıkıştırılmış bir dosyadan bir dosyayı çekmeyi öğren.
# PATH BULMA:
  • $whereis ...: Binary kaynak kodu ve yardım sayfalarının bulunduğu yerlerde arama yapar.
  • $history: dKod geçmişini yazdırır.
  • $!!: Son komutu çalıştırır.
# ÖNYÜKLEYİCİ:
  • BIOS - MBR - BOOT - KERNEL
    • MBR: İlk sektör.
    • BOOT -> KERNEL: İnit bu aşamada.
  • SECTOR:
    • LILO: Linux Loader
      • /etc/lilo.conf
      • initr -> RAM disk
      • #/sbin/lilo
    • GRUB: Gran Unified Boot
  • İnit tanımlanırken boot:linux init = /bin/sh
  • $lilo -t: test config
    • -v: Ayrıntılı çıktı
    • -b: Önyükleyici aracı belirlemek
      • $lilo -b /dev/hda5
    • -c: Kendi istediğimiz önyükleyiciyi çalıştırır.
      • $lilo -c /home/sedat
# GRUB:
  • Değişiklikleri bildirmek için reboot'a gerek yok.
    • boot/grub.conf
    • boot/menulist
      • chainloader +1: Bir sonrakini göstersin diye.
    • #grub-install dev/hda
    • #grub-install '(hdo)'
  • #export theme
    • $sudo root/grub2/themes/system/theme.txt
    • desktop -images
      • boot/... altında olmalı(uzantıyı yazdık).
  • #dmesg: Açılışta sorun olduğunda çekirdeğin mesajlarını gösterir.
  • $tail /var/log/messages
    • /var/log/syslog
    • /var/log
  • #demesg -C: Clear
    • -c: --read -clear
    • -n: Hangi log seviysinde mesajları görmek istiyorsak
      • -n alert
      • -n 1
    • -s: Buffer-size
    • -x: Decode
    • -k: Kernel mesajları
  • Hangi süreçte başlatılacağı: /etc/inittab
  • id : çalışma seviyesi : eylem : süreç
    • 0: Sistem kapatır (halt)
    • 1: Single user (ağ servisleri çalışmaz, grafik ortamı yok)
    • 2: Süreçler ağ hariç çalışır
    • 3: Tüm süreçler çalışır
    • 4: Kullanıcı tanımına bırakılmış
    • 5: Çoklu kullanıcı girişi
    • 6: Sistem yeniden başlıyor(tüm süreçler, grafik ortam var)
  • runlevel: Hangi seviyede çalışıyor.
  • init: Çalışma seviyeleri arasında geçiş.
    • $sudo init 2
  • $chkconfig --list: Çalışma seviyesiyle ilgili süreç yönetimi
  • $sudo chkconfig --level3 surecadi off
    • --level3 (network) on
    • --del network
    • --add network
  • $sudo ntsysv --level2: Hangi çalışma seviyesindeysek onu düzenliyor.
  • $sudo telinit 2: Çalışma seviyesini değiştiriyor.
  • #shutdown: Sistemi kapatır.
    • -c: İptal eder.
    • -r now: reboot.
    • -k: Don't halt, wall message
    • --no-wall: Varsayılan mesajı yollamaz.
    • -h: Halt
  • #reboot:
  • fsck: File system check
    • -fsck: -f parametresi
    • -Fsck: -F parametresi
# LINUX'TA SÜREÇ YÖNETİMİ:
  • Statik olarak;
    • $ps: Kullanıcı ya da sistem tarafından çalıştırılan süreçleri inceler
      • -a: Diğer kullanıcı proccesleri.
      • -f: Procces yapısı.
      • -u: Hangi kullanıcı ne kadar işlemci kullanmış.
      • -auv: Tüm proccesleri ayrıntılı listeler.
      • -A: Tüm süreçler.
      • aux: Bütün kullanıcıların tüm çalıştırdığı süreçler.
    • USER: Çalıştıran kullanıcı
    • PID: Procces id
    • %CPU: İşlemcinin % ne kadarını kullandığını gösterir.
    • %MEM: Belleğin % ne kadarını kullandığı gösterir.
    • VSZ:
    • RSS:
    • TTY: 
    • STAT (status): Sürecin durumunun ne olduğunu gösterir.
    • START:
    • TIME: Başlangıç zamanını gösterir.
    • COMMAND: Çalışan süreç.
    • Bir süreç kendisini çalıştıran kullanıcının yetkileriyle çalışır!
    • Bu servislerin hepsini rootla çalıştırırsak herhangi bir servis kırıldığı zaman root kullanıcısının yetkisi kullanılabilir. O yüzden servislerin kullnıclıarı farklı olmalı!
    • ntt: Ağ-zaman protokolü.
    • İlk 100 PI sıralı gider.
    • İlk çalışan süreç init'dir. init diğerlerini ayağa kaldırır.
  • Dinamik olarak;
    • $top: Çalışan süreçleri dinamik olarak gösterir.
      • -b(batch model): Yığın modu.
      • -s(secury): Güvenli modda çalışır.
      • -p(proccesid): Sadece bu proccesi izler.
      • -d ...: ... saniyede bir yeniler.
      • -q: Sürekli yeniler.
      • -i: Zombie, sleep göstermez.
      • -n ...: ... işlemden sonra top'tan çıkar.
      • -H: Tüm işlemeleri gösterir.
      • -m: Bellekte yer kaplamasına göre sıralar.
      • -K: pid to kill.
      • -A: Sistem kaynaklarının kullanılmasına göre sıralar.
      • -O: Kullanılabilecek parametreleri gösterir.
      • "t"ye basınca task kısmı kaybolur.
      • "q"ya basınca top'tan çıkar.
    • PID USER PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND 
      • PR: Öncelik gösterir.
      • NI: Kelimenin verdiği değer
      • VIRT: Kod + Veri + Yığın
      • RES: Procces kod boyutu
      • SHR: Veri + Diğer yığın
      • S: Çalışma grubu.
      • TIME+: Çalıştırılan süre.
    • Swap: Takas alanı.
    • S: Sleep        R: Açılan        Z: Zombie        T: Durdurulmuş        D: Uyuyakalmış
    • $htop: top'ın gelişmişi. Dinamik olarak görüntü sağlar.
    • $ps aux | grep ntp: O anki süreçlerde ntp'yi arar.$ ps aux | grep ntp | wc -l: Kaç ntp süreci 
Not:
        sudo: Yetkilendirme aracı. Bir komutu rootmuş gibi çalıştırır.

        su: root olunur ama pathi değişmez.
        su kullanıcıadi: Kullanıcı değiştirmeyi sağlar.
        su -: root olunur ve pathi de alınmış olur.

# SONLANDIRMA:

  • $kill: Sürecin çalışma durumunu değiştirir.
  • $kill proccesid: PI'sine göre süreci sonlandırır.
  • $killall surecadi: Süreçlerinden kaç tane o addan varsa hepsi ölür.
  • $killall -I surecadi: Büyük küçük harf.
  • $xkill: alt + F2 İmleç kuru kafaya dönüşür ve tıkladığn pencere ölür.
  • $pkill surecadi:
  • $kill -HUP surecadi: surecadi sürecini ilk defa çalışır gibi çalış. 
  • $kill -s HUB: Yapılandırmada değişiklik olduğunda haber verir.
  • $kill -l: Sinyalleri listeler.
  • $free: Memory hakkında bilgi verir.
    • -m: mb cinsinden gösterir.
    • -g: gb cinsinden gösterir.
  • Bilgisayarın üzerinde bir sürü süreç çalışsın. Kuyruk ram'in üzerinde tutulur. Diskin üzerinde okuma yazma olmaz. Çok süreç çalıştırıp ram'i dolduralım. İşlemci dolu ise kuyruk dolu olduğu için yeni süreç diskte yazılabildiği nere varsa oraya yazılır. Bu iş için diskte takas alanı vardır. Takas alanını içinde ne var göremeyiz. Ram'den daha yavaş. Diskten daha hızlı. Bilgisayar kapanıp açılınca içindeki bilgiler de silinir. İşletim sistemi swap alanını kullanıyorsa gidip ram almak gerekir. Swapten alan kullanıyorsa makine çok yavaşlar.
  • Ram'de kalıcılıktan feragat ediyoruz. Kalıcılığı sağlamak için başka bir formata dönüştürmek gerekiyor. Bu yüzden disklerin hızı ram'e yetişemez. 
  • Süreçlerin hepsi varsayılan olarak aynı öncelikli çalıştırılırlar.
  • $nice: Bir sürecin önceliklerin değiştirir.
    • -20 - 17 arası değer alır.
    • -n 5 PID: Sürecin önceliği 5'e çekilmiş olur.
    • Önceliğin düşürülmesini herkes yapabilir.
    • Önceliğin arttırılmasını sadece root yapar. 
  • $renice: Önceliği değiştirilmiş sürecin önceliğini tekrar değiştirrir.
  • $jobs: Çalışan ve arkaplanda kalmış süreçleri listeler.
  • $ls &: Komutu arka plana atmak için & koymak için yeterlidir.
  • &&: Arka arkaya komutların çalıştırılması için kullanılır.
    • Boru da ise çıktıyı diğerine parametre olarak gönderir.
  • $cd /etc && ls: etc'ye gir ve listele.
    • İkisi aynı anda çalışmaz.
    • Komutlardan ilki hatasız çalışırsa diğerlerine geçilir.
    • Komutlardan biri hatalı çalışmışsa ondan sonrakiler çalışmaz.
  • $wget: Uzaktan dosya indirmek için kullanılan bir araç.
    • Web sayfasını komple de indirebilir.
    • -m -np ...: Siteyi komple indirmek için.
  • $wget http://ftp.midnight-commander.org/mc-4.8.10.tar.bz2
    • tar xvfj mc-4.8.10.tar.bz2: Dosyayı açtık.
    • cd mc-4.8.10.tar.bz2
    • ./configure: Bulunulan sayfadaki kaynak kodu işlenebilecek derlenebilecek haline getirir. Derleme işlerini gerçekleştirebilecek kitaplıklar var mı? bu kontrol edilir.
    • make: Derleme işlemini başlatır. Derleyiciyi kullanır.
    • sudo make install: Oluşan dosyaları uygun yerlere yerleştirilir.
    • ./configure && make && make install: üç komutu bağladık.
    • ./configure --help
    • ./configure --prefix=/usr: Binary'leri usr'ın altına atar.
  • Elle kurmak yerine depodan kurmak daha iyidir. Çünkü elle yaptığınızda güncellemeleri senin yüklemen gerekir. Depoda ise o paketin bakıcıları bu işleri yaparlar. Bir paketin kararlı depoya girilmesi için onun sistemin geri kalanıyla düzgün çalışıyor olması gerek. Bu yüzden de depoda olan paketler genelde eski sürüm olurlar.
# METİN EDİTÖRLERİ:
  • $nano dosyaadi:
    • ctrl + ...: Altta görünen menüdeki harflerle işler halledilir.
    • Pek az sistem bağımlılığı oldu içingenelde kurulu gelir.
  • $vim dosyaadi:
    • Kurulu gelmediği makine neredeyse yoktur.
    • Linux bilmek için vi bilmek gerekir deniyor.
  • www.openvim.com: Vim'i öğrenmek için.
  • $vim dosyaadi:
    • :i: Insert mode
    • Esc: Exit insert mode.
    • h: Metin üzerinde sola gider.
    • l: Metin üzerinde sağa gider.
    • k: Metin üzerinde yukarı gider.
    • j: Metin üzerinde aşağı gider.
    • w: Kelimenin başına atlar.
    • e: Kelimenin sonuna atlar.
    • b: Bir önceki kelimenin başına atlar.
    • 3w: 3 kelime sonrasına atlar.
    • 9l: 9 karakter sonrasına atlar.
    • 2b: 2 kelime geri atlar.
    • 3i ...: ...'yı 3 kere yazdırır.
    • 80i ...: ...'yı 80 kere yazdırır.
    • %: Açılmış parantezin eşini gösterir.
    • 0: Satır başına atlar.
    • $: Satır sonuna atlar.
    • *: Kelimenin aynısını ileride arar.
    • #: kelimenin aynısını geride arar.
    • gg: İlk satıra gider.
    • G: Son satıra gider.
    • 2G: 2. satıra gider.
    • 5G: 5. satıra gider.
    • /...: ...'yı arar.
    • n: Bir sonrakini arar.
    • N: Bir öncekini arar.
    • o: Bir sonraki satıra boş satır oluşturur.
    • O: Bir önceki satıra boş satır oluşturur.
    • x: Bir sonraki karakteri siler.
    • X: Bir önceki karakteri siler.
    • r: Seçilen karakteri başkasıyla değiştirir.
    • d: İşaretli texti siler.
    • .: Son işlemi tekrarlar.
    • v: Seçmeye yarar.
    • v sonra e: Satır sonuna kadar seçer.
    • v sonra e sonra d: Satır sonuna kadar seçer d ile siler.
    • ctrl + v: Visual block moda geçer.
    • ctrl + w: Pencereler arası geçiş.
    • ctrl + R: İleri alır.
    • ctrl + c: Pencereyi kapatır.
    • :w: Kaydet.
    • :q: Çıkış.
    • :q!: Kaydetmeden çıkış.
    • u: Geri alır.
    • :vsp: Dikey iki pencere. (ctrl + w + v)
    • :sp: Yatay iki pencere.
    • +: Pencereyi 1 satır uzat.
    • -: Pencereyi 1 satır kısalt.
  • vim settings: /etc/vim.rc
    • r: Birşey değiştireceğim imlecin olduğu yerde
    • cc: Birşey değiştirirken o satır silinip insert oluyor
  • $sudo vim /etc/vim/vimrc:
  • $vi .viminfo:
  • $vim /etc
  • Neredeyse hemen her dosyanın iki yapılandırma dosyası olur. Bunların bir tanesi etc'nin altında diğeri de kullanıcıların ev dizininde olur. etc'deki yapılandırma dosyasında yaptığın değişiklik tüm kullanıcıların yapılandırma dosyalarını değiştirir.
  • Linux moduler bir çekirdek mimarisi kullandığı için onun haricinde moduller de gerektiğinde dahil edebiliyor. "Driverları modul olarak dahil edebiliyor." Linux'da donanım takıldığı zaman reboot etmek gerekmez ama çekirdeği değiştirdiğimiz zaman reboot etmek gerekir. 
# PAKET YÖNETİM SİSTEMLERİ:
  • Linux Dağıtımları: Ubuntu Debian türevi. 1000 den çok geliştirici var. Debian vakfı tarafından geliştiriliyor. Ciddi bir maddi güç yok.
  • Red Hat ilk günden bu yana ticari şirket olarak geliştiriliyor. Linux dünyasının iki uç dağıtıcısının iki farklı paket yönetim sistemi vardır. Debian'ın Deb dpkg(apt(yazılımları bulunduran depolara erişimi sağlar)) Red Hat'in rpm. 
  • .deb:
  • .rpm:
  • .tgz:
  • Kitaplık paketi olabilir. Sıkıştırılmış dosya formu şeklinde dağıtılırlar. Arşivlenmiş dizinler. Paket yöneticisi tarafından uygun yere açılıyorlar. Depoda bulunabilirler. Depo: dağıtıcı tarafından hazırlanan paketlerin paket yöneticisi tarafından ulaşılabilecek şekilde bulundurulduğu yere denir.
# DEBIAN PAKET YÖNETİMİ:
  • experimental: Deneysel
  • unstable: Kararsız
  • testing: Deneme
  • stable: Kararlı
  • Sürümleri temsil eden 3 depo vardır:
    • main: Resmi depo.
    • contrib: Resmi depo + geliştiriciler.
    • non-free: Özgür olmayan yazılımlar.
  • vim etc/apt/sources.list: 
  • # ile başlayanlar yorum satırları.
  • N.B: Önemli notlar.
  • Herkes değiştiremez.
  • Paket yöneticisinin hangi paketleri kullandığı burada bulunur.
  • deb-src: Kaynak kodlar.
  • deb: Binary depo.
  • $sudo apt-get update: Yerel ile sunucu arası listeyi eşitleriz.
    • Karşılıklı index dosyaları var.
    • Sistemdeki paketi güncellemez.
    • Sunucudaki programların adlarının ve sürümlerinin olduğu dosyayı indirir ve senkronize eder.
    • apt diye paket yöneticisi yok.
    • Arka planda dpkg'yi ve depoları kullanır.
  • $sudo apt-get upgrade: Bilgisayarda kurulmuş olan ama eski sürümde olan programların yeni sürümlerini indirip kurar. (Sistem güncellemek için)
  • dpkg: esas paket yöneticisinin kullanıldığı araç. Ama dpkg ile iş yapabilmek için o deb dosyasının bilgisayarda bulunması gerekir.
    • dpkg-query -S /usr/bin/firefox: Paketin nerede olduğunu görebiliyoruz.
    • dpkg-query -L firefox: Bu paketin içeriiğini lisletmiş oluyoruz.
      • Sistemde nereye hangi dosyalar atılmış bunu görüyoruz. 
# APT KOMUTU:
  • $apt-cache ...: ... depoda var mı?
    • -showpkg: Paketleri gösterir.
    • -pkgname: Tüm paketler. 
    • -stats: Sistemde yüklü paketler.
    • -search ...: Paket arar.
    • -depends: Bağımlılıklar.
    • -rdepends: Ters bğımlılıklar.
  • $apt-get remove ...: Paket kaldırılırken.
  • $apt-get purge ...: Yapılandırma dosyası kaldırılırken.
  • $apt-get update: Index dosyalarını günceller.
  • $apt-get upgrade: Güncelleme.
  • $apt-get dist-upgrade: Gerekmiyorsa bağımlılıkları güncellemez.
  • $apt-get clean: Temizleme.
  • $apt-get autoclean:
# DPKG KOMUTU:
  • $dpkg -l: Sistemde kurulu paketleri listeler(indirilmemiş).
  • $dpkg -I pakatadı: Info sayfası.
  • $dpkg -s: Binary kısa yolu.
  • $dpkg -info:
  • $dpkg -R dizin/:
  • $dpkg -L kurulupaketadi: Çalıştırılabilir olması için /bin'de olmalı!
  • $dpkg -e paketadi: İndirilmiş ama kurulmayan paketler.
  • $dpkg -s paketadi: Kurulu olan paketlerle ilgili bilgi.
  • $dpkg -r paketadi: Remove. Paketi siler.
  • $dpkg -p paketadi: Bağımlılıklaryla birlikte siler.
  • $dpkg --ignore-depends: Bağımlılık kaldırır.
# RPM:
  • $sudo rpm -i: Paket kurulumu = DPKG   (apt = yum)
    • -U: İndirilen sürümden eskisi var mı?
    • -F: Sistemdekinden yeniyse kurar.
    • -e: Sistemden kaldırılırken kullanılır.
    • -q: Sorgulama, Paket kurulu mu?
    • -v: Dosyalarda değişen dosya varsa bulur.
    • -qa: Tüm paketleri listeler(dpkg -l).
    • -Va: Öntanımlı ile normali kıyaslar.
    • --nodeks(dpkg --ignore-depends=nodebs): Bağımlılıklara bakmadan kurar.
  • l: Link     M: İzin         D: Aygıt
    S: Boyut      G: Group      U: Kullanıcı
    T: Tarih      missing: Silinmiş
  • #rpm -qi = dpkg -p: Paket bilgisi sorgular.
  • #rpm -qlp package: rpm'deki dosyaları listeler.
  • #rmp -f package: Bir paketin o dosyaya sahip olup olmadığına bakar.
  • $rpm2cpio ...: Arşive dönüştürür.
  • $cpio -i --make -directory < archive.cpio: Arşivdeki dosyaları çıkarır ve klasörleri oluşturur.
  • alian: dep paketini rpm'e dönüştürür(alian --to -togo).
# YUM:
  • .repo dosyaları: Depolara ait bilgiler burada.
    • -install:
    • -remove or -erase: Silmek için kullanılır.
    • -update: Paketin kendisi güncellenir.
    • -search: Geniş arama yapar.
    • -list package-name: Paket hakkında bilgi verir.
    • -provides, -whatprovides: Belirli bir program veya özelliği sağlayan paketler hakkında bilgi görüntüler. Dosyalarda arar.
    • -info: Bir paket hakkında bilgi verir.
    • -check -up update: Depo günceller.
  • #yum groupinstall grupadi: Grup kurar.
  • #yum repolist: Depo günceller.
  • ldd/bin/ls: Hangi kitaplıklara ihtiyaç duyar. 
  • ldconfig: Yeni kitaplığı görebilmek için.
# SİNYALLER:
  • -1: Procces sonlanırken bellek üzerindeki tüm veriyi boşaltır.
  • -g: Procces sonlanırken veri boşaltmaz.
  • -15: Kapanmazsa zorlamaz.
# FSTAB DOSYASINI ANLAMAK
  • FSTAB: mount işleminin ayar dosyasıdır.
  • #device mount-point type options dump pass
  • / dev / sda1  / bant   ext2  defaults  1/0  1/2
        1        2         3       4          5             6
    • 1: Aygıt
    • 2: Bağlanacağı dizin
    • 3: Dosya sistemi
    • 4: Nasıl bağlanacağı
    • 5: Disk kontrol
    • 6: Disk kurtarır.
  • #du -h: İnsan okuyabilir halde ekrana yazar.
  • #du -c: Total olarak ekrana yazar.
# DOSYANIN İMZASI:
  • md5 İmzası: O dosyaya has, benzersiz birşey. 32
  • sha1sum İmzası: md5 den daha uzundur. 40
  • sha256sum İmzası: sha1sumdan daha uzundur. 64
  • $vim imzadosyasi.txt: Yeni bir dosya oluşturduk.
  • $md5sum imzadosyasi.txt: İmzasına bakmak için kullanılır.1af6ef623a417c0f7a28d4fa34f7dd32  imzadosyasi.txt
    • Bir harfini bile değiştirirsek imza da değişir.
    • Dosyanın bütünlüğünü kontrol etmeye yarar.
    • Değiştirilmiş olup olmadığını kontrol etmeye yarar.
    • Tesadüfen herhangi iki dosyanın md5sum ları aynı olabilir.
    • Kesinlikle imzaya bakıp dosya oluşturulamaz.
  • $time: Komutun ne kadar zamanda çalıştığını gösterir.
  • rpm -i ...rpm: Ubuntuda çalışmaz.
  • dpkg -i ...deb: Paket kurmak için.
  • Linux'da paylaşımlı kitaplık kullanılır. Sistemde bir paketi kullanmaya çalıştığınızda bu kitaplık bilgisayarda varsa bunu kullanır. Bunun avantajı her programın kullandığı kitaplık ortak kullanıyorsa fazla kitaplıklardan kurtulunmuş olur. Bir kitaplığın güncellemesini yapıldığında bu kitaplığı kullanan başka bir program için de güncellenmiş olur. Bir dosyayı bir sürü yerde bulundurmak istemiyoruz. Bir de bu güncellemeyi bir tanesinde yapınca diğerleri de güncellensin istiyoruz.
  • rpmfind.net / debian.org
  • Konsoldan şu paketi kur dedik bu paket var ama sürümü uygun değil hatası neden alınır?  
    • Sizin elinizdeki paket listesinin tarihi depodakinden daha geride. Depoda o sürümün yeni sürümü var. Paket listesi güncel değil. Sorunu çözmek için;
      • $sudo apt-get update:
  • $apt-cache search ftp: Paket tanımları içerisinde ftp geçenleri listele.
    • Kendi bilgisayarımzda arar.
    • | wc -l: Kaç adet olduğunu bulur.
  • $apt-cache search mysql | grep php:
  • $apt-get autoremove: Kullanılmayan paketkeri kaldırır.
  • paketadi-deb varsa bu onun devolopment paketidir. Onu kullanmak için değilde derlemek için ya da header dosyasına ihtiyaç olursa kullanılır.
  • opensuse: zypperdebian(dpkg): apt-getred hat, fedora(rpm): yumpardus: pisi it 
# ÇALIŞMA (INIT) SEVİYELERİ:
  • $init:
    • 0-6 arasında seviye vardır.
    • Durumu değiştirmek için root olmak gerekir.
    • 0: Makineyi kapat demektir.
    • 1: Tek kullanıcı olarak ağ bağlantısının olmadığı, sistem (sunucu) servisi çalışmayan seviye. Recovery mode (kurtarma modu). Yeni bir disk eklemek, raid yapısını değiştirmek için gerekli olan seviye. Uzaktan bağlanılan makineye init 1 yaparken düşünülmelidir.
    • 2: Ağ bağlantısı yok ama servisler çalışıyor.
    • 3: Sunucu servislerinin hepsi init 3 te çalışır. Ağ bağlantısı vardır. Sadece X çalışmaz.
    • 5: init 3'ün üstüne X'i de ekler.
    • 6: Makineyi yeniden bşlatır.
  • Bir server'ın kapatılmaması gerekir. Bir sisteminin erişilebilirliğinin bir ölçüsü vardır. Sistemin ayakta ve çalışabilir olması erişilebilir olması demek. Bu 0-1 arası bir rakam. Ulaşılabilirlik zamanı yüksek olmalı.
    • 0.99: Erişilebilirliği %99 sa bu servisin %99 una erişilebilir denir. Çok yüksek bir rakam değil. Yılda 3.5 gün girilemeyecek.
    • 0.999: Yılda 8 saat.
    • 0.9999: Yılda 0.8 saat.
  • X Server: Sunucu server'ı. Çalışmazsa grafik ekranı göremeyiz.
    • Bir makinenin masaüstü ortamına (x server'ına) başka bir makineden bağlanılabilr.
  • $/sbin/runlevel:
  • sbinin altındaki dosyaları kullanıcı çalıştırdığında sadece görüntüleyebilir. root ise değişiklik ve ayar yapabilir.
  • $echo $PATH: Kullanıcının çalıştırılabilecekleri komutların dosyalarının path'ini gösterir./usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    • Buradaki dosyaların altındaki komutlar path yazmadan çalışır.
  • pathname.com/fsh: Oku!
  • linuxfromscratch.org: Hiç bişey yokken bir linux dağıtımı nasıl kurulur?
# LINUX DOSYA SİSTEMİ:
  • superblock: Dosya sistemi hakkında tüm bilgiler burada tutulur.
  • Dosya düğümü: (ls -i) dosya adı ve verilen blok no tutulur.
  • Veri bloğu: (datablock) dosya adı dışında dosya üzerinde verilerin tutulduğu bölüm.
  • Dosya Sistemleri:
    • minix
    • ufat: FAT - NTFS: Windows
    • ext2 (ilk resmi dosya)
    • ext3: ext2'nin türevi
    • ext4: En yeni dosya sistemi.
    • Günlükleme olduğu için daha güvenilir.
    • Günlükleme: Dosya geri döndürme. 
    • ReisterFS: Günlüklemeli dosyalar
    • XFS: Baştan
    • SFX: Tasarlama
# IDE AYGITLARI:
  • IDE: Entegre Geliştirme Ortamı
  • /dev/hda /dev/sda
  • /dev/hdb /dev/sdb
  • /dev/hdc /dev/sdc
  • Linux için herşey bir dosyadır. Bu dosyaların da simlendirme şekli vardır. Buna benzer bir şekilde diskler de isimlendirilir.
    • sda2 / hda2:
    • İlk harf diskin türünü belirtir.
    • s: Sata Data Ssd
    • h: IDE
    • d: Disk olduğunu belirtir.
    • a: Disklerin kaçıncısı olduğunu gösterir.
    • 2: Disk bölümü.
    • sda1: Makinenin üzerindeki birinci sata disk.
    • sda: Aygıtın adı. Cihazın sistem tarafından böyle görünür.
  • $df -h: Disk free: Ne kadar disk alanı var ve ne kadarı boş.
  • Dosya sisteminde mutlaka köke "/" bir şey bağlamanız gerekir.
  • Makineye disk taktık. Bağlayayım mı diye sormadığında;
    • $ls -l  /dev: Aygıtlara ilişkin dosyaları tutar.
  • dev/sda2'nin içine bir şey yazılamaz.
  • Dosya sistemi paylaşım yöntemi;
    • NFS:
    • Güvensiz ama hala kullanılıyor.
    • Veriyi şifrelemeden gönderip alır.
    • smb:
    • Windows makine gibi gösterip yönetebilir (samba ile).
    • Windows ile Linux arası dosya paylaşımını sağlar.
  • rfc: Güncellenmeyen protokollerdir.Gücellenmek istenirse yenisinin yazılması gerekir.
  • SCSI Aygıtları (Small Computer System Interface)
  • $sudo fdisk -l: Dosya sistemi bağlamadan görünür.
  • $sudo mount ...
  • $sudo mount -t ext3 /dev/sdb1 /mnt/disk
  • $sudo unmount /mnt/disk
  • $df -h /dev/sdb1: Bağ kalmış mı?
  • $fd format /dev/fd0
  • #mkfs ext3 /dev/sdb1: Biçimlendirir.
  • #mkfs -t ext3 /dev/sdb1: Dosya oluştururken.