Tarih ve Saat Ayarlama
Sistem Saati
Linux üzerinde tarih ve saat ayarlama işlemleri date komutu ile gerçekleştirilir. Komutu tek başına yazdığınızda tarih ve saati çıktı olarak verir.
date komutu ile istediğimiz biçimde çıktı alabiliriz.
Daha kompleks işlemler için boşluklu parametreleri çift tırnak içinde birleştirip tek parametre olarak programa sunmak gerekir.
Saati ve tarihi ayarlamak içinse aşağıdaki gibi bir yol izlenebilir.
Sadece saati değiştirmek için,
Veya dilediğiniz biçimde tarih belirtmek için,
Fiziksel Saat
Sistem üzerine yazılan saatler, bilgisayarın pil ile tutulan fiziksel saatine doğrudan kaydedilmez. Fiziksel saatteki bilgiye erişmek için hwclock komutu kullanılmalıdır.
Fiziksel saatteki bilgiyi okumak için
Yukarıdaki çıktıda -0.960295 saniye'lik bir fark görünüyor. Bu komutu verdiğimiz an ile, cihazdan okuduğumuz saat arasındaki fark. Kısacası cihaz bize neredeyse 1 saniye içerisinde cevap vermiş. Bu süre zarfında hwclock komutunun yaptıklarını daha detaylı görmek için -D (debug) parametresiyle çalıştırabilirsiniz.
Fiziksel saatteki değeri okuyup, sistem saatinizi bununla güncellemek isteyebilirsiniz. Aslında bilgisayarlarınızın açılışta yaptığı bir işlemdir bu. Böylelikle sisteminize hiç enerji verilmediği durumlarda saat pili ile sistem geçen zamanı tutmaya devam eder, sisteminiz tekrar açıldığında bu cihazdan (RTC: Real Time Clock) saati okur ve kendi tarihini bu değerle günceller.
Öte yandan, date komutu ile sistem saatini güncellemeyi öğrenmiştik. Bu komut ile sistem saatinizi güncelledikten sonra fiziksel saatin değerinin değişmemesi normal. Eğer fiziksel saatin değerini de sistem saatinizdekine ayarlamak isterseniz, bu bilgiyi RTC modülüne yazmanız gerekir.
NTP ile Zaman Senkronizasyonu (Modern Yöntemler)
NTP (Network Time Protocol), ağ üzerindeki sunuculardan hassas zaman bilgisi alarak sistem saatini doğru tutmak için kullanılan standart protokoldür. Modern Linux dağıtımları genellikle zaman senkronizasyonu için systemd-timesyncd
veya chrony
servislerini kullanır. ntpdate
komutu çoğu sistemde artık önerilmemektedir (deprecated).
systemd-timesyncd
Birçok modern dağıtımda varsayılan olarak gelen basit bir NTP istemcisidir. Genellikle ek kurulum gerektirmez.
Durumu Kontrol Etme:timedatectl status
komutu ile hem zaman ayarlarını hem de NTP senkronizasyon durumunu görebilirsiniz:
System clock synchronized: yes
ve NTP service: active
satırları senkronizasyonun çalıştığını gösterir.
Etkinleştirme/Devre Dışı Bırakma:timedatectl
komutu ile NTP senkronizasyonunu açıp kapatabilirsiniz:
systemd-timesyncd
servisi genellikle /etc/systemd/timesyncd.conf
dosyasından yapılandırılır ve varsayılan olarak dağıtımın belirlediği NTP sunucu havuzlarını (pool) kullanır.
chrony
ntpd
'ye göre daha modern, hızlı ve esnek bir NTP istemcisi ve sunucusudur. Özellikle sık sık uyku moduna giren veya ağ bağlantısı kararsız olan sistemler için daha uygundur. Bazı dağıtımlar (örneğin RHEL/CentOS 7 ve sonrası) varsayılan olarak chrony
kullanır.
Kurulum (Gerekliyse):
Durumu Kontrol Etme:chronyc
komutu ile senkronizasyon durumu ve kaynaklar hakkında detaylı bilgi alınabilir:
Yapılandırma:chrony
genellikle /etc/chrony/chrony.conf
(veya /etc/chrony.conf
) dosyasından yapılandırılır. Kullanılacak NTP sunucuları bu dosyada server
veya pool
direktifleri ile belirtilir.
Servis Yönetimi:chrony
bir sistem servisidir ve systemctl
ile yönetilir:
Önemli Not: Sistemde aynı anda sadece bir NTP istemcisinin (örneğin systemd-timesyncd
veya chrony
veya eski ntpd
) aktif olması önerilir. Çakışmaları önlemek için kullanılmayacak olan servisleri devre dışı bırakmak gerekir.
Zaman senkronizasyonu yapıldıktan sonra, sistem saatindeki değişikliğin donanım saatine (RTC) yazılması genellikle bu servisler tarafından otomatik olarak veya periyodik olarak yapılır. Ancak manuel olarak yapmak isterseniz hwclock -w
komutunu kullanabilirsiniz.
Saat Diliminin Ayarlanması
Sistem saat dilimi (timezone), sistemin yerel saati doğru göstermesi için önemlidir.
timedatectl ile Ayarlama (Önerilen Yöntem)
Modern systemd tabanlı sistemlerde saat dilimini ayarlamanın en kolay ve önerilen yolu timedatectl
komutunu kullanmaktır.
Mevcut Saat Dilimini Görme:
Kullanılabilir Saat Dilimlerini Listeleme:
Saat Dilimini Ayarlama: Örneğin, saat dilimini İstanbul olarak ayarlamak için:
Bu komut, gerekli sembolik linki (/etc/localtime
-> /usr/share/zoneinfo/...
) otomatik olarak oluşturur veya günceller.
Manuel Yöntem (Eski veya systemd olmayan sistemler)
timedatectl
komutunun bulunmadığı sistemlerde veya manuel olarak yapmak istenirse, /etc/localtime
dosyası, /usr/share/zoneinfo
altındaki doğru saat dilimi dosyasına işaret eden bir sembolik link olarak ayarlanır.
Önce mevcut link (varsa) kaldırılır, sonra yenisi oluşturulur:
Bazı eski sistemlerde /etc/timezone
gibi metin tabanlı bir yapılandırma dosyası da bulunabilir ve bunun da güncellenmesi gerekebilir (örneğin içine Europe/Istanbul
yazmak). Ancak modern sistemlerde genellikle sadece /etc/localtime
linki yeterlidir.
/etc/localtime
dosyası, saat dilimi kurallarını içeren binary bir dosyaya işaret eden bir sembolik linktir. Bu dosyanın doğrudan kopyalanması yerine sembolik link kullanılması, tzdata
paketi güncellendiğinde saat dilimi kurallarının da otomatik olarak güncellenmesini sağlar. /etc/localtime
dosyasının veya linkinin olmaması durumunda, sistem genellikle saat dilimini UTC (GMT+0) olarak varsayar.
Last updated