Linux'ta sistem tarihi nasıl değiştirilir?
Değiştirmek istiyorum:
- Sadece yıl
- Sadece ay
- Sadece tarih
- Yukarıdaki üç herhangi bir kombinasyonu
sudo ntpd -gq
, ntp servisini kullanarak sistemin otomatik olarak güncellenmesini sağlayabilirsiniz.
Linux'ta sistem tarihi nasıl değiştirilir?
Değiştirmek istiyorum:
sudo ntpd -gq
, ntp servisini kullanarak sistemin otomatik olarak güncellenmesini sağlayabilirsiniz.
Yanıtlar:
Kullanım date -s
:
date -s '2014-12-25 12:34:56'
Bunu root olarak veya altında çalıştırın sudo
. Yıl / ay / günün yalnızca bir tanesini değiştirmek daha zordur ve mevcut tarihin bitlerini içerir. Ayrıca, genellikle saatlerce erişilen belli başlı masaüstü ortamlarında yerleşik olan GUI tarih araçları da vardır.
Zamanın yalnızca bir bölümünü değiştirmek için tarih dizesinde komut değiştirme kullanabilirsiniz:
date -s "2014-12-25 $(date +%H:%M:%S)"
tarihi değiştirecek, fakat saati koruyacak. Bkz man date
tek tek bileşenler şunlardır: diğer kombinasyonlar oluşturmak için ayrıntıları biçimlendirmek için %Y
, %m
, %d
, %H
, %M
, ve %S
.
date -s "2014-12-25 $(date +%H:%M:%S)"
Ancak tarihi değiştirmek ve geçerli saati yeniden kullanmak için kullanabilirsiniz .
date: cannot set date: Invalid argument
date -s 2018-01-01
. Birisi bunu bir cevapta da paylaştı: superuser.com/questions/870068/…
Sistem zamanı
date
Sistem tarihini ayarlamak için kullanabilirsiniz . GNU'nun date
(gömülü olmayan Linux tabanlı sistemlerin çoğunda olduğu gibi) uygulaması , zamanı ayarlamak için birçok farklı biçimi kabul eder, burada birkaç örnek:
sadece yılı ayarla:
date -s 'next year'
date -s 'last year'
sadece ayı ayarla:
date -s 'last month'
date -s 'next month'
sadece günü ayarla:
date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'
hepsini bir araya getirin:
date -s '2009-02-13 11:31:30' #that's a magical timestamp
Donanım zaman
Şimdi sistem saati ayarlandı, ancak donanım saati ile senkronize etmek isteyebilirsiniz:
--show
Donanım zamanını yazdırmak için kullanın :
hwclock --show
Donanım saatini geçerli sistem saatine ayarlayabilirsiniz:
hwclock --systohc
Veya donanım saatine sistem zamanı
hwclock --hctosys
Tarihi date
komutla değiştirirsiniz . Ancak, komut argüman olarak tam bir tarih bekler:
# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014
Tarihin bir bölümünü değiştirmek için geçerli tarihi, bir dize olarak değiştirmek istediğiniz tarih bölümü ve diğer tüm tarih biçimlendirme değişkenleri olarak verin. Sonra date -s
onu ayarlamak için komuta geçmek :
# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014
ayı 12. ayına değiştirir - Aralık.
Tarih biçimleri:
%Y
- yıl%m
- Ay%d
- Gün%H
- Saat%M
- DakikaBenim gibi ESXI 5.1 çalıştıranlar için, işte sistemin bana cevap verdiği
~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'
Bunun yerine belirli bir ESX komutunu kullanmak zorunda kaldım:
esxcli system time set -y 2016 -M 03 -d 23 -H 10 -m 05 -s 00
Komut için sistem tarihi değiştirmek olduğunu date
.
Date komutunu çağırmanın iki yolu vardır (Linux'ta):
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
En kolay yol, basit göreceli tarihlerin date -s
kullanımına izin verdiğinden kullanmaktır.
$ date -s yesterday; date
date: cannot set date: Operation not permitted
Sat Jan 5 07:21:07 EST 2019
Sun Jan 6 07:21:07 EST 2019
Tarih değişmedi çünkü sınırlı bir kullanıcıyla yürütüldü $
. Gerçekten tarihin değişmesini istiyorsanız, root ( #
) veya sudo kullanın:
$ sudo date -s yesterday; date
Sat Jan 5 07:21:07 EST 2019
Sat Jan 5 07:21:07 EST 2019
Dolayısıyla, göreli tarihin herhangi bir bölümünü değiştirmek , adlandırmak kadar kolaydır:
$ date -s "5 years ago"
Mon Jan 6 08:26:26 EST 2014
$ date -s "+6 months"
Sat Jul 6 08:28:39 EDT 2019
$ date -s "+3 hours -13 minutes"
Sun Jan 6 11:16:59 AST 2019
Mutlak tarihler, daha fazla ayrıntıya ihtiyaç duyduklarından biraz daha karmaşıktır:
$ date -s "2001-07-23 10:11:12"
Veya date komutunu iki kez kullanabilirsiniz:
$ date -s "$(date +'%Y-%m-%d %H:%M:%S')"
Herhangi birini %
geçerli bir değerle değiştirin , tarih ayarlanacaktır (sadece root olarak).
$ date -s "$(date +'%Y-11-%d %H:%M:%S')"
Wed Nov 6 08:37:15 EST 2019
İkinci tarih çağrı formu, sistem tarihini doğrudan değiştirmek için kullanılır .
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Yani :
date 11230812 # MMDDhhmm
Tarihi 23 Kasım’da 08: 00-12: 00 arasında belirleyecektir.
BSD benzer bir komuta ancak farklı bir biçime sahiptir ([[[[[[[] [y] a] a] aa] aaa] aaaa [.ss]).
date
Ne olacağını görmek için sınırlı bir kullanıcı olarak deneyin (hiçbir şeyi değiştirmeden):
$ date 11230812
date: cannot set date: Operation not permitted
Sat Nov 23 08:12:00 EST 2019
Veya, tarihi gerçekten değiştirmek istiyorsanız, root olarak:
# date 11230812
# date
Sat Nov 23 08:12:00 EST 2019
NTP veya chrony gibi servislerin etkileneceğini unutmayın. Ve eğer yeniden başlatılırsa, tarihi tekrar gerçek tarihe döndürür.
Yılı ayarlamak için bir YY ekleyin:
$ date 1123081222
date: cannot set date: Operation not permitted
Wed Nov 23 08:12:00 EST 2022
Veya yıl ve yüzyılı belirlemek için bir CCYY :
$ date 112308121982
date: cannot set date: Operation not permitted
Tue Nov 23 08:12:00 EST 1982
Linux Kernal'ı kullanan Android Nesnelerinde gerçekleştirilen terminal kabuğu komutundan tarihi başarıyla ayarlamak için aşağıda listelenen tarih komutunu ve saat biçimini kullandım.
092615002017.00
MMDDHHMMYYYY.SS
MM - Ay - 09
DD - Gün - 26
SS - Saat - 15
MM - Min - 00
YYYY - Yıl - 2017
.SS - ikinci - 00
date
, bunun hangi sistemle alakalı olduğu ve bu özel soru ile nasıl alakalı olduğu hakkında daha fazla bilgi ekler misiniz?
date --set='-2 years'
, saati diğer tüm öğeleri aynı bırakarak saati iki yıl geriye ayarlamak için kullanabilirsiniz . Ayı ve günü, aynı şekilde değiştirebilirsiniz. Bu hesaplamanın gerçekte olmayan bir tarihte sonuçlanıp sonuçlanmadığını kontrol etmedim, örneğin bir DST geçişi sırasında, ancak davranış her zamanki "hem tarihi hem de saati somut değerlere ayarla" davranışıyla aynı olmalıdır.