← Bash tools
TEKNİK REHBER BASH TOOLS SİSTEM BİLGİSİ 2026

free, uptime, uname, date
sistem durumu ve zaman

Bir sistemi hızlıca tanımak için temel araçlar. RAM durumu, çalışma süresi, kernel versiyonu, işlemci bilgisi ve sistem zamanı — hepsi birkaç komutla.

00 Sistem durum araçları

Yeni bir sisteme bağlandığınızda veya sorun giderirken ilk çalıştırdığınız komutlar bunlardır.

bash — sisteme ilk bakış (5 komut)
# 1. Ne zaman açıldı, yük nasıl?
uptime

# 2. Hangi kernel, hangi OS?
uname -a

# 3. RAM durumu
free -h

# 4. Disk durumu
df -h

# 5. CPU bilgisi
lscpu

01 free: bellek kullanımı

free toplam, kullanılan, boş ve önbellek belleği gösterir. Linux bellek modeli biraz karmaşıktır — "available" sütunu gerçek boş alanı gösterir.

bash
# İnsan-okunur (en yaygın kullanım)
free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi        4.2Gi       1.1Gi       234Mi       10Gi        10Gi
Swap:          2.0Gi        0Ki         2.0Gi

# Megabyte bazlı
free -m

# Gigabyte bazlı
free -g

# Her N saniyede yenile
free -h -s 2              # 2 saniyede bir
free -h -s 2 -c 5        # 5 kez tekrar et, dur

# watch ile sürekli izle
watch -n 1 'free -h'

# Sadece belirli satırı al (betik için)
free -m | awk '/^Mem:/ {printf "Kullanılan: %dM / Toplam: %dM\n", $3, $2}'
-h
İnsan-okunur: K, M, G, T
-m
Megabyte bazlı
-g
Gigabyte bazlı
-s N
N saniyede bir güncelle
-c N
N kez güncelle, dur (-s ile birlikte)
AVAILABLE NEDİR?

Linux'ta free sütunu yanıltıcıdır — çekirdek dosya önbelleği için kullandığı belleği boş olarak göstermez. available sütunu gerçekten kullanılabilecek belleği gösterir: boş + geri alınabilecek önbellek. Uygulamalar başlamadan önce bu sütuna bakın.

02 uptime ve yük ortalaması

uptime sistemin ne kadar süredir çalıştığını ve CPU yük ortalamalarını gösterir.

bash
# Çalışma süresi ve yük ortalaması
uptime
14:23:05 up 42 days,  3:15,  2 users,  load average: 1.23, 0.87, 0.65
#                                                      ^1dk  ^5dk  ^15dk

# Sadece çalışma süresini göster
uptime -p
up 6 weeks, 10 hours, 15 minutes

# Son boot zamanı
uptime -s
2025-11-28 11:08:03

# Alternatif: who -b de boot zamanını gösterir
who -b

# CPU sayısına göre yük yorumu
nproc                      # kaç CPU core var?
8
# Yük 8.0 → %100 meşgul, 4.0 → %50 meşgul
# 1dk yük > nproc → sistem aşırı yüklü
YÜK ORTALAMASINI OKUMAK

Load average (yük ortalaması), son 1/5/15 dakikadaki ortalama çalışmak isteyen (CPU'da veya I/O bekleyen) süreç sayısıdır. CPU sayısıyla karşılaştırın: 8 core'lu sistemde yük 8.0 = %100 dolu, 4.0 = %50. 1dk yük 15dk yükten çok yüksekse ani artış, tersi ise iyileşme.

03 uname: kernel ve sistem bilgisi

uname kernel, işlemci mimarisi, hostname ve OS hakkında bilgi verir. CI/CD betikleri ve OS tespiti için temel araç.

bash
# Tüm bilgiler
uname -a
Linux myserver 6.1.0-25-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.106-3 (2024-08-26) x86_64 GNU/Linux

# Sadece kernel versiyonu
uname -r
6.1.0-25-amd64

# Makine mimarisi
uname -m
x86_64

# İşlemci tipi
uname -p

# OS adı
uname -s
Linux

# OS dağıtım bilgisi (uname'den daha detaylı)
cat /etc/os-release
lsb_release -a            # Ubuntu/Debian tabanlı sistemlerde

# Betiklerde platform tespiti
case "$(uname -s)" in
  Linux*)   echo "Linux" ;;
  Darwin*)  echo "macOS" ;;
  MINGW*)   echo "Windows/Git Bash" ;;
  *)        echo "Bilinmiyor" ;;
esac

# ARM mı x86 mi?
arch=$(uname -m)
if [[ "$arch" == "aarch64" ]]; then
  echo "ARM64 sistemi"
fi
-a
Tüm bilgiler (en çok kullanılan)
-r
Kernel sürümü
-m
Makine donanım adı (x86_64, aarch64, armv7l)
-s
Kernel adı (Linux, Darwin)
-n
Hostname (ağ düğüm adı)

04 hostname ve ek sistem bilgisi

Hostname değiştirme, FQDN alma ve dağıtım sürümünü okuma.

bash
# Mevcut hostname
hostname
myserver

# Tam nitelikli alan adı (FQDN)
hostname -f
myserver.example.com

# IP adresini al
hostname -I
192.168.1.10 10.0.0.1

# Hostname geçici olarak değiştir
sudo hostname yeni-sunucu-adi

# Kalıcı değiştir (systemd)
sudo hostnamectl set-hostname yeni-sunucu-adi
hostnamectl                    # mevcut durum

# OS dağıtım bilgisi
cat /etc/os-release | grep '^PRETTY_NAME'
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"

# Çalışan kullanıcılar
who
w                              # kim oturum açmış ve ne yapıyor

05 date: zaman ve biçimlendirme

date sistem saatini gösterir ve betiklerde zaman damgası üretmek için kullanılır. Biçimlendirme oldukça esnek.

bash
# Mevcut tarih ve saat
date
Fri Jan 10 14:23:05 +03 2026

# ISO 8601 format (log ve dosya adı için ideal)
date +%Y-%m-%d
2026-01-10

date +%Y-%m-%dT%H:%M:%S
2026-01-10T14:23:05

# Dosya adı için güvenli (boşluk yok)
date +%Y%m%d_%H%M%S
20260110_142305

# Unix timestamp (epoch)
date +%s
1736512985

# Epoch'tan tarihe çevir
date -d @1736512985
date -d @1736512985 +%Y-%m-%d

# Nispi tarih (GNU date)
date -d 'yesterday' +%Y-%m-%d
date -d '1 week ago' +%Y-%m-%d
date -d 'next monday' +%Y-%m-%d
date -d '+3 days' +%Y-%m-%d

# UTC zamanı
date -u
date -u +%Y-%m-%dT%H:%M:%SZ   # ISO 8601 UTC

# Belirli tarihin gün adı
date -d '2026-01-10' +%A
Saturday
FormatAnlamÖrnek
%Y4 haneli yıl2026
%mAy (01-12)01
%dGün (01-31)10
%HSaat (00-23)14
%MDakika (00-59)23
%SSaniye (00-59)05
%sUnix timestamp1736512985
%AGün adı (tam)Friday
%aGün adı (kısa)Fri
%BAy adı (tam)January
%ZZaman dilimi kısaltması+03
%NNanosaniye123456789

06 lsblk, lscpu, lshw: donanım bilgisi

Disk bölümleri, CPU detayları ve donanım envanteri için özel araçlar.

bash
# Disk ve bölüm listesi
lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0    50G  0 disk
├─sda1   8:1    0    49G  0 part /
└─sda2   8:2    0     1G  0 part [SWAP]

# Dosya sistemi türüyle
lsblk -f

# JSON formatı
lsblk -J

# CPU bilgisi
lscpu
lscpu | grep -E 'Model|Thread|Core|Socket|CPU\(s\)'

# Kaç CPU core?
nproc
nproc --all               # hyperthreading dahil tüm

# Donanım özeti (root gerekebilir)
sudo lshw -short

# PCI cihazları
lspci
lspci -v                  # detaylı

# USB cihazları
lsusb

# Bellek detayı (RAM modülleri)
sudo dmidecode --type memory | grep -E 'Size|Speed|Type:'

07 Pratik vakalar

Monitoring, deployment ve sistem tanımlama için tipik kullanımlar.

bash — Sistem raporu scripti
#!/bin/bash
echo "=== Sistem Raporu: $(date '+%Y-%m-%d %H:%M:%S') ==="
echo
echo "Hostname : $(hostname)"
echo "OS       : $(grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '\"')"
echo "Kernel   : $(uname -r)"
echo "Uptime   : $(uptime -p)"
echo "CPUs     : $(nproc)"
echo "Yük      : $(uptime | awk -F'load average:' '{print $2}')"
echo
free -h
echo
df -h -x tmpfs -x devtmpfs
bash — Tarihli yedek dosya adı
# Timestamp bazlı yedek adı
BACKUP="backup-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf "$BACKUP" /etc/myapp/

# Haftalık: haftanın günü ile
BACKUP="backup-$(date +%A).tar.gz"   # "backup-Monday.tar.gz"
bash — Uptime monitoring: alarm
# Yük ortalaması CPU sayısının 2 katını aşıyorsa uyar
CPUS=$(nproc)
LOAD=$(uptime | awk -F'load average: ' '{print $2}' | cut -d, -f1)
THRESHOLD=$(echo "$CPUS * 2" | bc)

if $(echo "$LOAD > $THRESHOLD" | bc -l); then
  echo "UYARI: Yüksek yük: $LOAD (eşik: $THRESHOLD)"
fi
bash — Son N günde RAM artışı var mı?
# available belleği logla (cron'la çalıştır)
free -m | awk '/^Mem:/ {
  printf "%s available=%dM used=%dM\n",
  strftime("%Y-%m-%dT%H:%M:%S"), $7, $3
}' >> /var/log/memory.log

Hatırlanacaklar

  • free -h: bellek durumu — available sütunu gerçek boş bellek
  • uptime: sistem süresi + 1/5/15dk yük ortalaması
  • Yük ortalaması / CPU sayısı > 1.0 → aşırı yüklü
  • uname -a: kernel + mimari + hostname
  • uname -m: mimari tespiti (x86_64 / aarch64)
  • date +%Y%m%d_%H%M%S: dosya adı için güvenli timestamp
  • date -d 'yesterday' +%Y-%m-%d: nispi tarih ifadeleri (GNU)
  • lsblk -f: disk bölümleri ve dosya sistemi türleri

Devam: df, du — disk kullanımı · süreç ve sistem izleme — ps, top, lsof