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#
- [ ]
hostnamectldağı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 -rbeklediğiniz çekirdek sürümüyle eşleşiyor