Ana içeriğe geç

Linux sürümü ve işletim sistemi bilgisi öğrenme#

Bir sunucuya SSH ile ilk bağlandığınızda ya da elinize aldığınız bir kurulumun ne olduğunu bilmediğinizde sorduğunuz ilk soru budur: bu hangi dağıtım, hangi sürüm, ne zamandan beri güncellenmiyor? Cevap tek bir komutta değil - birkaç yerde saklı, ve hangisine bakacağınız neyi öğrenmek istediğinize bağlı.

Hızlı cevap: hostnamectl#

hostnamectl

Modern systemd tabanlı dağıtımların çoğunda (Ubuntu 16.04+, Debian 9+, RHEL/CentOS/Rocky/AlmaLinux 7+) tek komutla dağıtım adı, sürüm, çekirdek ve mimari birlikte gelir. Çıktının başındaki "Operating System" satırına bakmanız yeterli.

Dağıtım kimliği: /etc/os-release#

hostnamectl yoksa (ya da script içinden makine-okunabilir çıktı istiyorsanız) doğrudan kaynağına gidin:

cat /etc/os-release
NAME="Ubuntu"
VERSION="24.04.1 LTS (Noble Numbat)"
ID=ubuntu
ID_LIKE=debian
VERSION_ID="24.04"

ID ve VERSION_ID alanları script'lerde if koşulu yazmak için idealdir - dağıtım adını greplemekten çok daha güvenilirdir, çünkü format 2012'den beri (systemd'nin os-release standardını getirmesinden beri) hemen hemen değişmedi.

ID_LIKE'ı unutmayın

Rocky Linux'ta ID=rocky ama ID_LIKE="rhel centos fedora" yazar. Bir paketin RHEL ailesinde mi Debian ailesinde mi olduğuna karar veren script'ler genelde ID yerine ID_LIKE'a bakar - yoksa her yeni türev dağıtım için ayrı bir case satırı eklemeniz gerekir.

Çekirdek ve mimari#

uname -a
Linux sunucu 6.8.0-51-generic #52-Ubuntu SMP x86_64 GNU/Linux

Sırasıyla: hostname, çekirdek sürümü, derleme tarihi/numarası, mimari (x86_64, aarch64). Yalnızca çekirdek sürümü istiyorsanız uname -r yeterli.

Sanal mı, fiziksel mi#

systemd-detect-virt

kvm, vmware, xen, lxc gibi bir sanallaştırma teknolojisi ya da none (fiziksel donanım) döner. VeriTeknik VPS'lerinde beklenen cevap kvm'dir; bir donanım sorununu teşhis ederken "bu sanal mı gerçek mi" sorusunu bu tek satır çözer.

Script içinden: tek satırda dağıtım tespiti#

Bir kurulum script'i yazıyorsanız ve paket yöneticisine göre dallanmanız gerekiyorsa:

#!/usr/bin/env bash
source /etc/os-release
case "$ID" in
  ubuntu|debian) echo "apt tabanlı: $PRETTY_NAME" ;;
  rocky|almalinux|rhel|centos) echo "dnf tabanlı: $PRETTY_NAME" ;;
  *) echo "bilinmeyen dağıtım: $PRETTY_NAME" ;;
esac

ID_LIKE'ı da kontrol etmek isterseniz (türev dağıtımları yakalamak için):

source /etc/os-release
if [[ "$ID_LIKE" == *debian* || "$ID" == "debian" ]]; then
  echo "Debian ailesi"
fi

Morpheus ile

"bu sunucu hangi dağıtım ve sürümde çalışıyor"

Morpheus /etc/os-release ve uname -a'yı okuyup tek cümlede özetler - ayrıca güncellemesi çıkmış paketleri de kontrol edebilir.

Sık karışan komutlar#

Komut Ne verir Ne zaman kullanılır
hostnamectl Dağıtım + sürüm + çekirdek + mimari, insan-okunabilir Hızlı genel bakış
cat /etc/os-release Makine-okunabilir dağıtım kimliği Script içinde dallanma
uname -r Yalnızca çekirdek sürümü Kernel modülü/uyumluluk kontrolü
lsb_release -a Eski ama hâlâ yaygın; bazı minimal imajlarda kurulu değil Debian/Ubuntu türevlerinde alışkanlık
systemd-detect-virt Sanallaştırma teknolojisi ya da none Donanım/performans teşhisi

Kontrol listesi#

  • [ ] hostnamectl dağıtım adını ve sürümünü gösteriyor
  • [ ] Script'ler dağıtım adını grep'lemek yerine /etc/os-release'deki $ID'yi okuyor
  • [ ] uname -r beklediğiniz çekirdek sürümüyle eşleşiyor