लिनक्स: कमांड लाइन के माध्यम से निर्धारित तिथि


75

लिनक्स में सिस्टम की तारीख कैसे बदलें?

मैं बदलना चाहता हूँ:

  • केवल वर्ष
  • केवल महीना
  • केवल दिनांक
  • उपरोक्त तीनों में से कोई भी संयोजन

2
आप उदाहरण के date --set='-2 years'लिए घड़ी को दो साल पीछे सेट करने के लिए उपयोग कर सकते हैं , अन्य सभी तत्वों को समान छोड़कर। आप महीने और महीने के दिन को उसी तरह बदल सकते हैं। मैंने जाँच नहीं की है कि क्या होता है अगर उस गणना का परिणाम एक डेटाइम में होता है जो वास्तव में मौजूद नहीं है, उदाहरण के लिए एक डीएसटी स्विचओवर के दौरान, लेकिन व्यवहार समान होना चाहिए "ठोस मूल्यों के लिए तिथि और समय दोनों निर्धारित करें" व्यवहार।
क्रिश्चियन सेवेरिन

मान लें कि आप वर्तमान समय में दिनांक सेट करने का प्रयास कर रहे हैं, तो आप sudo ntpd -gqntp सेवा का उपयोग करके सिस्टम अपडेट को स्वचालित रूप से कर सकते हैं।
स्टीवन सोरोका

जवाबों:


94

उपयोग करें date -s:

date -s '2014-12-25 12:34:56'

इसे रूट या अंडर के रूप में चलाएं sudo। वर्ष / माह / दिन में से केवल एक को बदलना एक चुनौती से अधिक है और इसमें वर्तमान तिथि के दोहराव को शामिल किया जाएगा। सामान्य डेस्कटॉप वातावरण में निर्मित GUI दिनांक उपकरण भी होते हैं, जिन्हें आमतौर पर घड़ी के माध्यम से एक्सेस किया जाता है।

केवल समय का हिस्सा बदलने के लिए, आप दिनांक स्ट्रिंग में कमांड प्रतिस्थापन का उपयोग कर सकते हैं:

date -s "2014-12-25 $(date +%H:%M:%S)"

तारीख बदल जाएगी, लेकिन समय रखें। देखें man dateविवरण स्वरूपण अन्य संयोजन का निर्माण करने के लिए: अलग-अलग घटक हैं %Y, %m, %d, %H, %M, और %S


मैं समय नहीं बदलना चाहता
SHW

5
ऐसा करने का कोई विकल्प नहीं है। आप date -s "2014-12-25 $(date +%H:%M:%S)"तिथि बदलने और वर्तमान समय का पुन: उपयोग करने के लिए उपयोग कर सकते हैं , हालांकि।
माइकल होमर

यहां आए और घंटों के साथ-साथ मिनट वर्तमान समय से मेल खा रहे थे। - अच्छा
एलेक्स 2 एफपी

2
date: cannot set date: Invalid argument
क्रिस स्ट्राइकसिनस्की

@MichaelHomer @SHW जैसे आदेश के साथ केवल तारीख बदलना संभव है date -s 2018-01-01। किसी ने इसे एक उत्तर में भी साझा किया: superuser.com/questions/870068/…
baptx

42

सिस्टम का समय

आप dateसिस्टम दिनांक सेट करने के लिए उपयोग कर सकते हैं । जीएनयू कार्यान्वयन date(जैसा कि अधिकांश गैर-एम्बेडेड लिनक्स-आधारित सिस्टम पर पाया जाता है) समय निर्धारित करने के लिए कई अलग-अलग स्वरूपों को स्वीकार करता है, यहां कुछ उदाहरण दिए गए हैं:

केवल वर्ष निर्धारित करें:

date -s 'next year'
date -s 'last year'

केवल माह निर्धारित करें:

date -s 'last month'
date -s 'next month'

केवल दिन निर्धारित करें:

date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'

सभी एक साथ सेट करें:

date -s '2009-02-13 11:31:30' #that's a magical timestamp

हार्डवेयर समय

अब सिस्टम का समय निर्धारित है, लेकिन आप इसे हार्डवेयर क्लॉक के साथ सिंक करना चाहते हैं:

--showहार्डवेयर समय मुद्रित करने के लिए उपयोग करें :

hwclock --show

आप वर्तमान सिस्टम समय के लिए हार्डवेयर घड़ी सेट कर सकते हैं:

hwclock --systohc

या हार्डवेयर घड़ी के लिए सिस्टम समय

hwclock --hctosys

2
गैर-स्पष्ट तरीकों को दर्शाने के लिए बोनस अंक आप तारीखों को उदाहरणों के साथ सेट कर सकते हैं और "सिस्टम टाइम" और "हार्डवेयर क्लॉक" के बीच अंतर को इंगित करने के लिए। बहुत मददगार जवाब!
मार्क एडिंगटन

3

आप dateकमांड के साथ तारीख बदलते हैं । हालाँकि, कमांड को पूरी तारीख की उम्मीद है:

# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014

तिथि के भाग को बदलने के लिए, वर्तमान तिथि को उस दिनांक भाग के साथ आउटपुट करें जिसे आप स्ट्रिंग के रूप में बदलना चाहते हैं और अन्य सभी दिनांक स्वरूपण चर के रूप में। फिर date -sइसे सेट करने के लिए कमांड को पास करें :

# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014

महीने को बदलकर 12 वां महीना - दिसंबर।

दिनांक प्रारूप हैं:

  • %Y - साल
  • %m - महीना
  • %d - दिन
  • %H - घंटा
  • %M - मिनट

मैं बदलने की कोशिश करता हूं, लेकिन इसके बदलते नहीं: - $ sudo date --set = "2015-09-30 10: 05: 59.990" Wed Sep 30 10:05:59 +0530 2015 $ date Thu May 23 15:10:37 +0530 2019
विनोद

2

मेरे जैसे ESXI 5.1 को चलाने वाले लोगों के लिए, यहाँ सिस्टम ने मुझे क्या जवाब दिया

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

मुझे इसके बजाय एक विशिष्ट ESX कमांड का उपयोग करना पड़ा:

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00

3
-1 के लिए धन्यवाद, लेकिन क्या आप समझाएंगे कि क्यों ? यदि आपको एक बेहतर / अधिक पूर्ण / अधिक सटीक उत्तर मिला है, तो टिप्पणी करने के लिए स्वतंत्र महसूस करें।
बालमीपोर

1

सिस्टम दिनांक को बदलने का आदेश है date

दिनांक कमांड को कॉल करने के दो तरीके हैं (लिनक्स में):

   date [OPTION]... [+FORMAT]
   date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

आसान

सबसे आसान तरीका यह है date -sकि यह सरल सापेक्ष तिथियों के उपयोग की अनुमति देता है

 $ 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

तारीख नहीं बदली क्योंकि इसे सीमित उपयोगकर्ता के साथ निष्पादित किया गया था $। यदि आप वास्तव में तिथि बदलना चाहते हैं, तो रूट ( #) या sudo का उपयोग करें :

 $ sudo date -s yesterday; date
 Sat Jan  5 07:21:07 EST 2019
 Sat Jan  5 07:21:07 EST 2019

इसलिए, सापेक्ष तिथि के किसी भी भाग को बदलना उतना ही आसान है जितना कि इसका नामकरण:

 $ 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

पूर्ण तिथियां थोड़ी अधिक जटिल हैं क्योंकि उन्हें और अधिक विवरण की आवश्यकता है:

 $ date -s "2001-07-23 10:11:12"

या, आप दो बार दिनांक आदेश का उपयोग कर सकते हैं:

 $ date -s "$(date +'%Y-%m-%d %H:%M:%S')"

किसी भी %मान्य मूल्य से बदलें और तिथि निर्धारित की जाएगी (केवल रूट के रूप में)।

 $ date -s "$(date +'%Y-11-%d %H:%M:%S')"
 Wed Nov  6 08:37:15 EST 2019

प्रत्यक्ष

दूसरी तिथि कॉल फॉर्म का उपयोग सिस्टम तिथि को सीधे बदलने के लिए किया जाता है ।

 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

इसलिए :

 date 11230812              # MMDDhhmm

23 नवंबर को सुबह 08 बजे और 12 मिनट पर तिथि निर्धारित करेगा।

BSD में एक समान कमांड है लेकिन एक अलग प्रारूप ([[[[[cc] yy] mm] dd] H]] MM [.ss]) है।

dateयह देखने के लिए एक सीमित उपयोगकर्ता के रूप में प्रयास करें कि यह क्या करेगा (बिना कुछ बदले)

 $ date 11230812
 date: cannot set date: Operation not permitted
 Sat Nov 23 08:12:00 EST 2019

या, यदि आप वास्तव में दिनांक को रूट के रूप में बदलना चाहते हैं:

 # date 11230812
 # date
 Sat Nov 23 08:12:00 EST 2019

ध्यान दें कि NTP या chrony जैसी सेवाएं प्रभावित होंगी। और, यदि पुनः आरंभ होता है, तो दिनांक को वास्तविक पर वापस सेट कर देगा।

वर्ष निर्धारित करने के लिए YY जोड़ें:

 $ date 1123081222
 date: cannot set date: Operation not permitted
 Wed Nov 23 08:12:00 EST 2022

या वर्ष और सदी निर्धारित करने के लिए एक CCYY :

 $ date 112308121982
 date: cannot set date: Operation not permitted
 Tue Nov 23 08:12:00 EST 1982

-1

मैंने एंड्रॉइड थिंग्स पर प्रदर्शन किए गए टर्मिनल शेल कमांड से तिथि निर्धारित करने के लिए नीचे सूचीबद्ध दिनांक और समय प्रारूप का उपयोग किया, जो लिनक्स कर्नेल का उपयोग करता है।

दिनांक 092615002017.00

MMDDHHMMYYYY.SS

एमएम - महीना - 09

डीडी - दिन - 26

एचएच - घंटा - 15

एमएम - न्यूनतम - 00

YYYY - वर्ष - 2017

.SS - दूसरा - 00


चूंकि यह जीएनयू या बीएसडी के साथ काम नहीं करता है date, तो क्या आप इस बारे में अधिक जानकारी जोड़ सकते हैं कि यह किस प्रणाली के लिए प्रासंगिक है और यह इस विशेष प्रश्न के लिए कैसे प्रासंगिक है।
Kusalananda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.