Linux
Temel Bilgiler
- root: Sistem yöneticisi, en yetkili kullanıcı. Komut satırı istemi
#ile gösterilir. - Normal kullanıcı: Standart yetkili kullanıcı. Komut satırı istemi
$ile gösterilir. - Yorum satırı: Satır başında
#karakteri yer alırsa, kabuk (shell) bu satırı yorum olarak atlar. - Dosya veya dizin isminin başında
.olursa, Linux tarafından gizli kabul edilir. Örnek:.config/ - Bağlantılar (Links):
- Soft link (sembolik): Başka bir dosyaya referans oluşturur. Gerçek dosyanın kopyası değildir.
- Hard link (sert): Dosyanın tam içeriğine işaret eder; silinirse bile diğer link üzerinden erişilebilir.
- Servisler ve İşlemler:
- daemon: Genellikle sistem başlatıldığında arka planda çalışan uzun ömürlü süreçlerdir. Örnek: sshd, cron
- process (işlem): Bir uygulama veya komut çalıştırıldığında oluşan yürütülebilir birimdir. Kısa ömürlü olabilir.
- Dosya Türleri ve İzinleri
d: Dizin (directory)l: Sembolik bağlantı (symbolic link)-: Normal dosyac: Karakter aygıtı (örneğin /dev/ttyUSB0)b: Blok aygıtı (örneğin disk bölümü)s: Socketp: FIFO (named pipe)(rwx): Okuma (r=4), yazma (w=2), çalıştırma (x=1).
örnek
drwxr-xr-- dizin, sahibi tüm izinlere, grup okuma ve çalıştırma iznine, diğerleri sadece okuma iznine sahip.
| Terminal Kısayolları | İşlevi |
|---|---|
Alt + F2 |
Komut çalıştırma penceresini açar (grafik ortam). |
Ctrl + C |
Çalışan komutu sonlandırır. |
Ctrl + R |
Önceki komutlarda arama yapar. |
Ctrl + S |
Terminal akışını durdurur (komut yürütme durmaz). |
Ctrl + Q |
Terminal akışını sürdürür. |
Ctrl + U |
İmlecin solundaki tüm metni siler. |
Ctrl + Z |
Çalışan komutu arka plana alır (durdurur). |
Operatörler ve Yönlendirmeler
| Operatör | Açıklama |
|---|---|
; |
Komut ayracı. Birden fazla komutu sırayla çalıştırır: komut1; komut2. |
& |
Komutu arka planda çalıştırır: sleep 10 &. |
| |
Bir komutun çıktısını başka bir komutun girdisine (pipe) yönlendirir. |
* |
Sıfır veya daha fazla karakterle eşleşir (her şeyi temsil eder). |
? |
Tam olarak bir karakterle eşleşir. |
[...] |
Köşeli parantez içindeki karakterlerden herhangi biriyle eşleşir. Örneğin, [ab] sadece ‘a’ veya ‘b’ ile başlayan dosyaları listeler |
{x..y} |
Belirli bir aralıktaki sayıları veya karakterleri üretir. file{1..5}.txt |
^ |
Düzenli ifadelerde satır başını ifade eder. |
> |
Standart çıktıyı (stdout) belirtilen dosyaya yazar, önceki içerik silinir. |
>> |
Standart çıktıyı dosyanın sonuna ekler. |
< |
Standart girdiyi (stdin) bir dosyadan alır. |
2> |
Standart hata çıktısını (stderr) belirtilen dosyaya yönlendirir. |
&> |
Hem stdout hem stderr’i aynı anda yönlendirir. |
tee |
Standart çıktıyı hem ekrana basar hem de dosyaya yazar. -a ile eklemeli yazma yapılır. |
| `` |
# Arka planda 10 saniye uyur
sleep 10 &
# 1'den 7'ye kadar dosyalar oluşturur
touch a{1..7}.txt
# 'a' veya 'b' ile başlayan dosyaları listeler
ls [ab]*
# a'dan z'ye kadar tek karakterli isimleri listeler
ls [a-z]
# Yönlendirme örnekleri:
echo "hello world" > file_name.txt
ls >> file.txt
cat < file.txt
telnet localhost 2> errorfile.txt
echo "hello world" | tee -a file.txt
Linux Dizin Yapısı
| Dizin | Açıklama |
|---|---|
/ (root) |
Tüm dosya sisteminin kök noktasıdır. |
/boot |
Önyükleme (boot) ile ilgili çekirdek ve başlangıç dosyaları. |
/dev |
Donanım aygıtlarını temsil eden özel dosyalar. |
/etc |
Sistem yapılandırma dosyaları. |
/bin, /sbin |
Temel kullanıcı ve sistem ikili dosyaları. |
/usr |
İkincil hiyerarşi: uygulamalar, kütüphaneler, belgeler. |
/opt |
Üçüncü taraf yazılımlar için isteğe bağlı paketler. |
/lib, /lib64 |
Temel sistem kütüphaneleri. |
/tmp |
Geçici dosyalar. |
/home |
Kullanıcıların ev dizinleri. |
/var |
Değişken veri dosyaları (loglar, posta, spool dosyaları). |
/run |
Geçici çalışma süresi bilgisi (PID dosyaları, kilitler). |
/mnt, /media |
Harici medya ve dosya sistemleri bu noktalara bağlanır. |
Not
Linux dosya sisteminde büyük/küçük harf duyarlılığı olduğunu unutmayın.
Paket Kurulumu
Linux dağıtımlarında paket yönetimi için yaygın olarak APT (Advanced Packaging Tool) ve DPKG araçları kullanılır.
| dpkg | |
|---|---|
Sistem Günlükleri (System Logs)
Linux'ta sistem olayları, hata mesajları ve uyarılar genellikle /var/log dizininde depolanır. Ayrıca systemd kullanan sistemlerde journalctl ile günlüğe erişim mümkündür.
| Dosya / Komut | Açıklama |
|---|---|
/var/log/boot.log |
Önyükleme sırasında oluşan mesajlar (init, kernel, servis bilgileri). |
dmesg |
Çekirdek (kernel) ring buffer’ını gösterir. |
/var/log/auth.log |
Kimlik doğrulama ve güvenlik olayları (giriş denemeleri, sudo kullanımı). |
/var/log/syslog |
Genel sistem ve uygulama mesajları (Debian/Ubuntu). |
/var/log/messages |
Genel sistem ve uygulama mesajları (Red Hat/CentOS gibi dağıtımlarda). |
/var/log/kern.log |
Kernel’e ait detaylı günlük kayıtları. |
journalctl |
systemd journal kayıtlarını okur |
# Son önyüklemeden itibaren tüm logları gösterir
journalctl -b
# Belirli bir servisin günlüklerini filtreler
journalctl -u <servis>
Not
Yoğun log akışını filtrelemek için grep veya less ile birlikte kullanabilirsiniz:
/etc/motdMessage Of The Day, Kullanıcı oturumu açtığında gösterilen kısa bilgilendirme mesajıdır./etc/motddosyasına yazdığın metin, her girişte terminale basılır.- Dinamik içerik için
/etc/profile.d/altına script ekleyebilirsin.
Komutlar
Dizin ve Dosya Gezinme
-
cdDizinler arasında geçiş yapar. (.bulunduğun dizin,..bir üst dizin,-bir önce ki dizin,~home) -
pwdMevcut dizinin tam yolunu gösterir. lsDizin içeriğini listeler.treeDizin yapısını ağaç formatında gösterir.
Dosya ve Dizin İşlemleri
-
cpDosya veya dizini kopyalar. -
mvDosyayı taşır veya yeniden adlandırır. -
rmDosya veya dizini siler.!ile dışında tutulabilir. -
mkdirYeni dizin oluşturur. -
rmdirBoş dizini siler. touchBoş dosya oluşturur veya zaman damgasını günceller.lnHard veya sembolik link oluşturur.-ssembolink link,-ihard link
Metin Görüntüleme & İşleme
-
catDosya içeriğini bir kerede gösterir. -
moreSayfa sayfa görüntüler. (Ekrana sığacak şekilde) -
lessİleri/geri kaydırma ve arama imkânı sunar.morekomutunun gelişmiş halidir.less deneme.txt __________ -N : Her satırın başına numara koyar. -i : Büyük küçük harf duyarlılığını devre dışı bırakır. -S : Uzun satırları keserek , yatay kaydırma çıbuğu oluşturur. -F : Dosya içeriğini gösterdikten sonra otamatik olarak kapanır. __________ space: Tuşu bir sonraki sayfayı gösterir. b : Bir önceki sayfayı gösterir. g : Dosyanın başına gitmek için kullanılır. G : Dosyanın sonuna gitmek için kullanılır. / : Arama yapmak için kullanılır. n : Bir sonraki eşleşmeyi bulmak için kullanılır. q : less komutunu kapatmak için kullanılır. __________ -
head / tailDosyanın baştan / sonundan N satırını gösterir. -
grep - egrepMetin içinde desen arar.grep keyword file.txt #Belirtilen kelimeyi dosya içinde arar grep -c keyword file.txt #Belirtilen kelimenin dosyada kaç tane olduğunu gösterir. grep -i keyword file.txt #Belirtilen kelimeyi dosya içinde arar. Arama yaparken büyük küçük duyarlılığı kapatır. grep -n keyword file.txt # Hnagi satırlarada bulunaduklarını gösterir. grep -v keyword file.txt # Belirtilen anahtar kelimesi dışındaki yerleri alır ls | grep Desktop egrep -i "keyword1|keyword2" file.txt # Arama yaparken keyword1 veya keyword2 birinin olması yeterli olur. -
cutBelirtilen sütunları veya karakterleri keser.cut -c1 file.txt # 1. sütünda bulunan karakterleri gösterir. cut -c1,3,4,5 file.txt # 1., 3., 4., 5. sütünda bulunan karakterleri gösterir. cut -c1-4 file.txt # 1. sütündan 4. sütüna kadar bulunan karakterleri gösterir. cut -c1-4, 6-8 file.txt cut -b1-3 file.txt # 1. sütündan başlayıp 3 byte veri al ls -la | cut -c2-4 -
awkAlan bazlı metin işleme sağlar.awk '{print $1}' file.txt #Dosyanın içinde bulunan her satırda bulunan ilkkelimeyi gösterir. awk '{print $2, $4}' file.txt awk '{print $NF}' file.txt #Her satırın son kelimesini gösterir. awk '/jer/ {print}' file.txt #Dosyanın içinde jey arar ve varsa ekranda gösterir. cat file.txt | awk '{$2="hi"; print $0} #Bu dosaynın içinde bulunan her satırda 2. kelimesini "hi" ile değiştirir. awk 'lenght($0) > 20' file.txt #İlk karakteri 20 bytetan fazla olan satırları gösterir. ls -l | awk '{if($9 == "Des") print $0;}' #Şartı sağlayan satırı gösterir. -
sedSatır içi metin değiştirmeye yarar. -
sortSatırları belirli kritere göre sıralar. -
uniqBirbirini izleyen tekrarları filtreler. -
trKarakter dönüşümleri yapar. -
wcSatır, kelime ve byte sayar. -
diffDosyalar arasındaki satır farklılıklarını gösterir. (line by line) cmpDosyaları byte byte karşılaştırır. (byte by byte)-
truncatekesme işlemi yapar. -
fileDosya hakkında bilgi verir.file a.txt find - locateDosya araması yapar.
Not
find ile locate komutları aralarında ki fark locate komutunun bir veri tabanı vardır. Bu yüzden aramaları daha hızlı yapar. Fakat bu veri tabanı güncellenmez ise yeni oluşturulan dosyaları bulamayız.
find . -size +100M # 100mb büyük dosyaları arar
find . -type f -perm 0777 # Belirtilen izinlere sahip dosyaları bulur.
find . --name *.gz # gz uzantılı dosyaları bulur.
find . -mtime 3 # 3 gün içinde değişiklik yapılan dosyaları bulur.
locate a.txt
updatedb # locate komutunun datebase günceller.
readlinkBu komut sayesinde link edilmiş bir dosyanın gerçek konumunu gösterir.
Süreç & Kaynak Yönetimi
psÇalışan süreçleri listeler.- TTY sütunu, işlemin hangi terminalde yürütüldüğünü,
- TIME sütunu, o işlemin ne kadar süredir çalıştığını,
- CMD sütunu ise hangi komutun çalıştırıldığını gösterir.
ps auxçıktısındaki STAT sütununda yer alan harflerin anlamları ise şunlardır:- D: uyku modu (disk I/O için bekliyor)
- R: çalışıyor
- T: duraklatılmış
- X: zorla durdurulmuş
- Z: zombi işlem
- S: işlem için kaynak (örneğin CPU) bekliyor
-
pstreeise bu işlemleri adeta bir aile ağacı gibi detaylı şekilde görselleştirir—kim kimin çocuğu, kim kimin ebeveyni, hepsini tek bakışta anlarsınız! -
topCanlı sistem kaynak kullanımını gösterir. PID, USER, PR(öncelik seviyesi), RES(RAM miktarı) gibi durumlar gözlenebilir. -
killSüreci sonlandırmak için sinyal gönderir.ps -a # Tüm işlemler ps aux ps -e # O kullanıcı tarafından yapılan tüm işlemler ps -u [user_name] # Belirli bir kullanıcının yaptıklarını gösterir. kill -l # Sinyallari sitler. kill -9 PID_number # İşlemi sonlandırır. kill -1 PID_number # İşlemi yeniden başlatır. killall top # PID numarası yerine direkt işlemin adı verilir. -
nohupKomutu oturumdan bağımsız çalıştırır. Yani terminal kapansa dahi komut yürütülmeye devam eder. -
bgDurdurulan işlemi arka plana alır. fgArka plandaki işlemi ön plana getirir.jobsO anki kabuk işlerinin durumunu listeler.-
nice - reniceKomuta öncelik (niceness) atar. / Çalışan sürecin önceliğini değiştirir. -
scriptTerminal oturumunu kaydeder. -
timeoutKomutun çalışmasını süre ile sınırlar. -
dd“Disk Dump” kısaltmasıyla bilinir. Unix/Linux’ta dosya, disk ve blok düzeyinde kopyalama yapmanızı sağlar. Veri bloklarını farklı biçimlerde işleyerek yedekleme, klonlama veya sıfırlama (örneğin/dev/zerokullanarak) gibi işlemlerde kullanılabilir.
Sistem Bilgisi & İstatistik
-
unameSistem bilgilerini görüntüler. -
archİşletim sistemi mimarisini gösterir. (64 / 32) dfDosya sistemi kullanım özetini verir.-
duDizin veya dosya boyutunu hesaplar. -
freeBellek (RAM) kullanımını gösterir. -
dmesgKernel mesajlarını okur. -
lsmodYüklü çekirdek modüllerini listeler. lsblkBlok aygıtlarını ağaç yapısında gösterir.fdiskDisk bölüm bilgilerini yönetir.blkidBlok aygıtlarının UUID ve tür bilgilerini listeler.badblocksBozuk disk bloklarını tarar.fsckDosya sistemini onarır.
Ağ & İnternet
pingAğ bağlantısını test eder.-cile kaç kez atılacağı ayarlanır.ifconfigp addr — Ağ arayüzü yapılandırmasını gösterir.netstat - ssAktif bağlantıları listeler.curlURL’lerden veri transferi yapar.-
wgetDosya indirir. -
dig - nslookupKomutları, belirli bir alan adı veya IP adresi hakkında bilgi almak için DNS (Domain Name System) sunucularına sorgu yapmak için kullanılan komut satırı araçlarıdır. iptablesPaket filtreleme ve NAT kurallarını yönetir.arpARP tablosunu gösterir.hostnameSistem adı ve IP adresini verir. Sistemin ağ üzerindeki adını (hostname)/etc/hostnamedosyasından okur ve değiştirirsudo hostnamectl set-hostname yeni_hostname-
netdiscoverAğ taraması yapar. -
nmcliNetworkManager’ı komut satırı üzerinden yönetmenizi sağlayan güçlü bir araçtır. Ağ bağlantıları oluşturabilir, düzenleyebilir, silebilir ve mevcut durum hakkında ayrıntılı bilgi alabilirsiniz.
nmcli # Genel durum bilgisi
nmcli connection show # Tüm bağlantıları listeler
nmcli device status # Ağ arayüzlerinin durumunu gösterir
nmtui
nmcli’nin metin tabanlı, kullanıcı dostu arayüzüdür. CLI yerine basit menülerle ağ ayarlarını yönetmek isterseniz tercih edebilirsiniz.
nm-connection-editorNetworkManager bağlantılarını grafiksel (GUI) ortamda düzenlemenizi sağlar. Masaüstü kullanıcıları için idealdir.
Kullanıcı & İzinler
chmodDosya/dizin izinlerini değiştirir. (u = user, g = groups, o = or)chownSahiplik bilgilerini değiştirir.-
chgrpGrup bilgisini değiştirir. -
useraddYeni kullanıcı ekler. usermodMevcut kullanıcıyı düzenler.-
userdelKullanıcı siler. -
groupaddYeni grup oluşturur. groupdelGrup siler.passwdKullanıcı şifresi ayarlar.chfnKullanıcı bilgilerini değiştirir.getfacletfacl — ACL bazlı izinleri yönetir.-
idKullanıcının bağlı olduğu ID gösterir. -
wSistemde çevrim içi kullanıcı sayısını gösterir. lastb - lastlastb Sisteme başarısız girişleri gösterir. last bütün girişleri gösterirusersSistemde aktif kullanıcıları gösterir.whoamiO an ki kullanıcı adını verir.
Zaman & Planlama
-
dateTarih ve saati gösterir veya ayarlar. -
sleepBelirtilen süre bekler.sleep 10 watchKomutu belirli aralıklarla tekrarlar.crontabZamanlanmış görevler oluşturur.atTek seferlik zamanlanmış iş başlatır.
Not
Linux sisteminde belirli zaman aralıklarında veya zamanlamalar da tekrarlanması gereken görevleri otomatikleştirmek için kullanılır. crontab komutu belirli günlerde belirli haftalarda belirli zaman aralıklarında tekrarlamasını istediğimiz komutlar için kullanılır. Oluşan dosyalar etc/cron.[] konumunda bulunur. crontab -e crontab dosyasını düzenlemek için kullanılır. Açılan dosyananın içine dakika saat gün ay ve haftanın günü son olarakda yapılacak komut yazılır.
uptimeÇalışma süresi ve kullanıcı sayısını gösterir.
Arşivleme & Sıkıştırma
tarArşiv oluşturur veya açar.gzip - unzipDosya sıkıştırır veya açar.zipnzip — Zip arşivleriyle çalışır.truncateDosyayı belirtilen boyuta keser.
Kabuk & Yardım
rebootSistemi yeniden başlatır.poweroffSistemi anında kapatır.shutdownSistemi kapatırken seçenekler sunar.exitAçık olan kullanıcıdan çıkar.-
env - printenvSistemde bulunan evrensel değişkenleri gösterir. Ortam değişkenini kullanmak için$kullanılır -
suKullanıcı değiştirmeyi sağlar. bashYeni bir kabuk başlatır.sourceBetik dosyasını mevcut kabuğa yükler.clearTerminali temizler-
historyKabuk komut geçmişini listeler. -
manKomut kılavuz sayfasını açar. infoGNU bilgi sayfasını gösterir.--helpKomut yardımını ekrana basar.alias - unaliasTakma ad oluşturur veya siler.-
aproposBelirtilen anahtar kelimeye göre kılavuz sayfalarını arar. -
exportOrtam değişkeni tanımlar. lsb_realeaseKullanılan sürüm hakkında bilgi verir.whoSisteme giriş yapmış kullanıcıları gösterir.whatisKomut hakkında kısa bilgi verir.whereis / whichKomutun konumunu gösterir.-
wallTüm kayıtlı kullanıcılara terminal üzerinden mesaj iletmenizi sağlar. Yalnızca yetkili kullanıcılar tarafından çalıştırılabilir. -
writeBelirli bir kullanıcıya doğrudan mesaj göndermek için kullanılır. İleti girdisini tamamlamak için Ctrl +D tuşuna basmanız yeterlidir.
ACL (Access Control List)
Standart Unix izinlerinin ötesinde, her dosya veya dizine kullanıcı ve grup bazlı ayrıntılı erişim hakları tanımlamanıza imkân verir. Böylece belirli bir kullanıcının veya grubun okuma, yazma, çalıştırma gibi izinlerini hassas biçimde ayarlayabilirsiniz.
getfaclDosya/dizin üzerindeki ACL girişlerini ve temel izinleri gösterir.setfaclACL üzerinden izin ekleme, düzenleme veya silme işlemleri yapar.
Run Levels
Linux’un geleneksel SysV init sistemi, farklı işletim durumu “seviyelerini” (run levels) rakamlarla tanımlar. Her run level, hangi servislerin ve işlevlerin aktif olacağını belirler:
| Run Level | Anlamı |
|---|---|
| 0 | Kapatma (shutdown). |
| 1 | Tek kullanıcı modu (sistem bakım/onarım). |
| 2 | Çoklu kullanıcı modu, ağ hizmeti kapalı (dağıtıma göre değişir). |
| 3 | Çoklu kullanıcı modu, ağ hizmeti aktif. |
| 4 | Tanımlanmamış / Kullanılmaz. |
| 5 | Çoklu kullanıcı + grafik arayüzlü (X11/Wayland) + ağ hizmeti. |
| 6 | Yeniden başlatma (reboot). |
Not
Modern dağıtımlarda Systemd kullanılıyorsa systemctl isolate multi-user.target veya graphical.target komutlarını tercih etmek daha güncel bir yöntemdir.
Device Tree
Gömülü Linux sistemlerinde (örn. ARM tabanlı kartlar), donanımı çekirdeğe tanıtmak için Device Tree kullanılır.
- .dts (Device Tree Source): İnsan tarafından okunabilir metin formatı.
- .dtb (Device Tree Blob): Derlenmiş, ikili format.
1. Bir sensör, kontrolcü veya başka bir aygıt için özellikler .dts dosyasında tanımlanır.
2. Kernel açılırken bu veriyi okur, uygun sürücüyü yükler ve donanımı yapılandırır.
3. Cihazını Linux’e “tanıştırmanın” en düzenli yolu: Device Tree!
Driver (Sürücü)
Linux çekirdeği ile donanım arasında köprü kuran yazılım bileşenidir. Donanımı algılar, kontrol eder ve veri akışını yönetir. Yeni bir cihaz eklediğinde, ilgili sürücüyü kernel modülü (ör. *.ko) olarak yüklersin.
Shell Script
- Linux’ta yaygın olarak Bash kullanılır; yüklü tüm shell’leri görmek için:
cat /etc/shells - Script’in hangi shell ile çalışacağını en başta belirtmek için shebang kullanılır:
#!/bin/bash - Satır başına # koyarak o satırı yorum (açıklama) haline getirirsiniz.
Not
Shebang (#!/bin/bash) da aslında yorum satırı gibi davranır ama kernel’e hangi yorumlayıcıyı yükleyeceğini söyler.
#!/bin/bash
# read, echo, değişkenler
my_host=`hostname` # Bilgisayarın hostname verisini alır
name="Arif"
name2=arif # İki değişken atamasıda doğrudur.
echo "server name: $my_host" # Ekrana çıktı vermeyi sağlar.
echo "My name is $name." # Bir değişkene erişmek için $ kullanılır.
echo what is your name?
read new_name # Kullanıcdan veri alınması sağlanır.
read new_surname # Bu olay read name surname olarak tek seferde
# alınabilir. Bir bolukla değişkenler doldurulur.
echo hello $new_name
| Operatör | Anlamı | Örnek |
|---|---|---|
| -eq | eşit | [ $a -eq 5 ] |
| -ne | eşit değil | [ $a -ne 0 ] |
| -lt | küçük | [ $a -lt 10 ] |
| -gt | büyük | [ $a -gt 100 ] |
| -le | küçük veya eşit | [ $a -le 20 ] |
| -ge | büyük veya eşit | [ $a -ge 1 ] |
| -e | dosya veya dizin var mı | [ -e /path/to/file ] |
| -f | normal dosya mu? | [ -f /etc/passwd ] |
| -d | dizin mi? | [ -d /home/user ] |
#!/bin/bash
gun=$(date +%a) # Mon, Tue, …
if [ "$gun" = "Mon" ]; then
echo "Bugün Pazartesi."
elif [ "$gun" = "Tue" ]; then
echo "Bugün Salı."
else
echo "Hafta içi başka bir gün."
fi
for i in 1 2 3 4 5; do
echo "Sayaç: $i"
done
for num in {1..10}; do
echo "Numara = $num"
sleep 1
done
count=0
while [ "$count" -lt 5 ]; do
echo "Merhaba Dünya ($count)"
((count++))
sleep 1
done
echo "Seçiminiz (a: ls, b: cd ~, c: echo):"
read choice
case "$choice" in
a) ls ;;
b) cd ~ ;;
c) echo "Hello, world!" ;;
*) echo "Geçersiz seçim!" ;;
esac
Ağ
IP Adresleri ve Sınıfları
Ağ üzerinde iletişim kuran her cihaza atanan benzersiz 32‑bit (IPv4) veya 128‑bit (IPv6) sayıdır. IPv4’te dört ondalık bölümle (ör. 192.168.1.10), IPv6’da ise sekiz grup onaltılık sayıyla (2001:0db8:85a3::8a2e:0370:7334) gösterilir. - IP (Internet Protocol): İnternetteki her cihazın benzersiz kimliğidir. Trafiğin doğru hedefe yönlendirilmesini sağlar. - Sınıflar: Eskiden her ip adresi 5 sınıfa ayrılırdı. Günümüzde CIDR yaygın olsa da temel fikir halen öğretici:
| Sınıf | Aralık | Kullanım Alanı |
|---|---|---|
| A | 0.0.0.0 - 127.255.255.255 | Çok büyük ağlar |
| B | 128.0.0.0 - 191.255.255.255 | Orta boy ağlar |
| C | 192.0.0.0 - 223.255.255.255 | Küçük ağlar |
| D | 224.0.0.0 - 239.255.255.255 | Multicast yayınlar |
| E | 240.0.0.0 - 255.255.255.255 | Deneysel / rezerve |
- Loopback: 127.0.0.1 “kendi kendinle konuşman” için. Yerel sistem testi ve geliştirme için vazgeçilmez.
Subnet Mask (Alt Ağ Maskesi)
- IP adresini “ağ kısmı” ve “cihaz kısmı” olarak ikiye bölen 32‑bit değer. Genellikle dört ondalık bölümle gösterilir (ör. 255.255.255.0). 255 olan bitler → ağ adresini, 0 olan bitler → host (cihaz) adresini temsil eder
- Örnek: 255.255.255.0 → ilk 24 bit ağ, son 8 bit host.
- CIDR karşılığı: /24
ip addr show eth0
# Çıktıda "inet 192.168.1.10/24" görürseniz:
# - IP: 192.168.1.10
# - Alt ağ masking: /24 (255.255.255.0)
Gateway (Varsayılan Ağ Geçidi)
- Yerel ağdan çıkış noktasıdır. Genellikle bir router veya firewall cihazı.
- Farklı ağları birbirine bağlar.
- Bir cihaz başka ağdaki IP’lere paket gönderdiğinde kullanılır.
MAC Adresi
- Her NIC (Network Interface Card) için üretici tarafından atanan 48‑bit benzersiz donanım adresi. Genellikle altı çift onaltılık sayı ile gösterilir (00:1A:2B:3C:4D:5E).
- Veri Bağlantı Katmanı (OSI Katman 2).
- Donanıma gömülü, normalde değiştirilemez (ancak ip link set dev eth0 address ile yazılımla da değiştirilebilir).
- IP adresi katmanından bağımsız çalışır; LAN içi iletişimde kullanılır.
DNS (Domain Name System)
- Alan adlarını (ör. chat.openai.com) IP adreslerine çeviren hiyerarşik dağıtık bir sistem.
- “İnsan-dostu” isimlerle internette gezinmeyi mümkün kılar.
NIC (Network Interface Card)
- Ağa bağlı cihazlar ve bilgisayarlar arasındaki veri iletişimini yönetmek için kullanılan bir donanım bileşenidir. NIC, bir bilgisayarın ağa bağlanabilmesi için gereken fiziksel bağlantıyı sağlar ve verilerin kablosuz veya kablolu ağlar üzerinden transfer edilmesini sağlar
- Fiziksel veya sanal ağ adaptörü.
- Ethernet, Wi‑Fi, Bluetooth vs. gibi farklı türleri vardır.
Not
/etc/hosts Küçük ölçekli isim‑adres eşleştirmelerini içerir.
FTP (File Transfer Protocol)
- Port 21 üzerinden çalışan eski işlevsel dosya aktarım protokolü. Şifrelenmemiştir, bu yüzden güvensiz kabul edilir.
Rsync
- Dosya ve dizinleri hem yerelde hem de uzak sistemlerde senkronize eden, delta-transfer (sadece değişen blokları) destekli araç.
-aArşiv modu (izinler, tarih, vs.)-vAyrıntılı çıktı-zSıkıştırma--progressAktarım durumu--deleteile hedefde olmayan dosyaları siler.--dry-runile neler yapılacağını test edersiniz.
SCP (Secure Copy Protocol)
- SSH tüneli üzerinden dosya transferi yapan, verileri otomatik olarak şifreleyen araç.
-r:Dizinleri recursive kopyalar.
SSH (Secure Shell)
- Uzak makinaya şifreli bağlantı kuran, komut satırı ve port yönlendirme gibi özellikler sunan protokol.
ssh user@remote_host - Önemli Ayarlar (/etc/ssh/sshd_config):
| Ayar | Açıklama |
|---|---|
| Port | SSH dinleme portu (varsayılan 22). |
| PermitRootLogin no | Direkt root girişini engeller. |
| PermitEmptyPasswords | Boş parola kullanımını yasaklar. |
| AllowUsers serkan | Sadece belirtilen kullanıcı(lar) giriş yapabilir. |
| ClientAliveInterval | Boşta kalındığında sunucudan istemciye ping gönderme aralığı (s). |
| ClientAliveCountMax | Kaç ping sonrası bağlantıyı keser (0 = sınırsız). |
ssh-keygen -t ed25519 # Anahtar çifti oluşturur
ssh-copy-id user@host # Public anahtarı uzak sunucuya kopyalar
ssh -i ~/.ssh/id_ed25519 user@host # Belirli anahtar ile bağlanma
Cockpit
- Web tabanlı, interaktif sunucu yönetim konsolu. Sistem durumu, servisler, konteynerler ve kullanıcı yönetimi gibi işlemleri tarayıcıda yapmanızı sağlar.
DHCP (Dynamic Host Configuration Protocol)
- LAN’a katılan cihazlara otomatik IP, subnet mask, gateway ve DNS bilgisi atayan protokol.
Communication
Netlink Soketleri
- Linux çekirdeği ile kullanıcı alanı (user‐space) uygulamaları arasında iletişim sağlar.
- AF_NETLINK (veya PF_NETLINK) adres ailesini kullanır.
- Yaygın mesaj tipleri: NETLINK_ROUTE (ağ yönlendirme), NETLINK_NETFILTER (iptables), NETLINK_KOBJECT_UEVENT (udev olayları) vb.
- Mesaj yapısı:
ioctl (Input/Output Control)
- Cihaz sürücüleriyle veya özel dosya tabanlı arayüzlerle kontrol komutları göndermek için kullanılan bir sistem çağrısıdır.
Aygıt Dosyaları (Device Files)
/devaltında bulunan, fiziksel veya sanal donanım aygıtlarını temsil eden özel dosyalardır.- Her bir aygıt dosyası, major (sürücü) ve minor (aygıt) numaralarıyla eşlenir.
Sistem Çağrıları (System Calls)
- Kullanıcı alanındaki uygulamaların çekirdek (kernel) fonksiyonlarını çalıştırmasını sağlayan temel arayüzdür.
- Örnekler:
- Dosya işlemleri:
open(), read(), write(), close() - Süreç kontrolü:
fork(), execve(), waitpid() - Bellek yönetimi:
mmap(), brk() - Ağ iletişimi:
socket(), bind(), connect(), send(), recv()
- Dosya işlemleri:
- Uygulamalar genellikle glibc gibi kütüphaneler üzerinden dolaylı çağrı yapar; nihai iş syscall talebiyle çekirdeğe düşer.
- POSIX uyumluluğu sayesinde, farklı Unix türevi sistemlerde benzer arayüzler kullanılır.
Systemd
- Systemd, modern Linux dağıtımlarında “init” sisteminin yerini alan bir sistem ve hizmet yöneticisidir.
- Amaçları:
- Paralel başlatma ile açılış süresini kısaltmak.
- Bağımlılık grafiği kullanarak servisler arası doğru sırayı garantilemek.
- Journald ile merkezi günlük kaydı (log) tutmak.
- Socket, D-Bus, timer, mount ve daha pek çok birimi yönetmek. -Genel Konumlar
- Sistem geneli:
/etc/systemd/system/ - Dağıtım birincil:
/lib/systemd/system/veya/usr/lib/systemd/system/ - Kullanıcı bazlı:
~/.config/systemd/user/
-
Her
.servicedosyası üç ana başlığa sahiptir: -
[Unit]- Description: Hizmetin ne yaptığını özetler.
- After / Before: Başlama sırasını ayarlar. Örneğin After=network.target → ağ hazır olmadan başlamaz.
- Wants / Requires: Zayıf / güçlü bağımlılık ilişkileri kurar.
-
[Service]- Type: Başlatma davranışını belirler.
- simple (default): ExecStart arka planda ayrılmadan çalışır.
- forking: Daemon arka plana fork ettiğinde kabul edilir.
- oneshot: Tek seferlik kısa işler için.
notify, dbus, idle vb.gelişmiş tipler de var.
- ExecStart, ExecReload, ExecStop: Başlatma, yeniden yükleme ve durdurma komutları.
- Restart: Yeniden başlatma koşulları (no, on-success, on-failure, always vb.).
- RestartSec: Yeniden başlatma öncesi bekleme süresi.
- User / Group: Hizmeti hangi kullanıcı/grup altında çalıştıracağını belirler.
- Environment: Çevresel değişkenleri tanımlar.
- WorkingDirectory: Çalışma dizinini ayarlar.
- Type: Başlatma davranışını belirler.
-
[Install]- WantedBy: Hangi target’a “enable” edildiğinde ekleneceğini tanımlar. Örneğin
multi-user.target → systemctl enable my.service ile /etc/systemd/system/multi-user.target.wants/my.servicebağlantısı oluşturulur. - RequiredBy: Zorunlu alt birim ilişkisi oluşturur
- WantedBy: Hangi target’a “enable” edildiğinde ekleneceğini tanımlar. Örneğin
systemctl Komutları
sudo systemctl start my.service # Başlatır
sudo systemctl stop my.service # Durdurur
sudo systemctl restart my.service # Yeniden başlatır
sudo systemctl status my.service # Durum bilgisini gösterir
sudo systemctl enable my.service # Boot’ta otomatik başlayacak şekilde işaretler
sudo systemctl disable my.service # Artık otomatik başlamaz
sudo systemctl is-enabled my.service # Etkin mi diye kontrol eder
sudo systemctl daemon-reload # Yeni veya güncellenmiş birim dosyalarını tanıtmak
systemctl list-units --all # Tüm birimleri listeler
systemctl list-units --type=target # Sadece target’ları gör
# Sistemi kapat / yeniden başlat / uyku moduna al
sudo systemctl poweroff
sudo systemctl reboot
sudo systemctl suspend
sudo systemctl hibernate
[Unit]
Description=ROS 2 Startup Service
After=network.target
[Service]
Type=simple
User=rosuser
Environment=HOME=/home/rosuser
ExecStart=/home/rosuser/start_ros2.sh
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
- Bu dosyayı
/etc/systemd/system/ros2-start.serviceolarak kaydedin.
sudo systemctl daemon-reload
sudo systemctl enable ros2-start.service
sudo systemctl start ros2-start.service
Birim (Unit) Türleri
| Tip | Uzantı | Ne İşe Yarar? |
|---|---|---|
| Service | .service | Arka plan hizmetlerini (daemon) tanımlar. |
| Target | .target | Çeşitli birimleri gruplar, run level yerine geçer. |
| Socket | .socket | Socket-activated servisler tanımlar. |
| Timer | .timer | Zamanlanmış görevler (cron alternatifi). |
| Mount | .mount | Dosya sistemleri otomatik monteler. |
| Path | .path | Dosya/dizin değişikliklerini tetikleyici yapar. |