अस्थायी रूप से समय बदलें


18

मुझे अपने सॉफ़्टवेयर के पहलुओं का परीक्षण करने की आवश्यकता है जो केवल दिन के निश्चित समय पर होते हैं। पूरे दिन इंतजार करने के बजाय (और 2:00 पूर्वाह्न पर यहां पहुंचना), मैं समय बदलना चाहूंगा।

लेकिन मैं इसे स्थायी रूप से नहीं बदलूंगा

मुझे पता है कि मैं समय का उपयोग कर बदल सकता हूं date, और फिर इसे फिर से बदल सकता हूं , लेकिन क्या कोई बेहतर तरीका है?

VM में OS एक VM में चल रहा है।


इसके लायक होने के लिए, मुझे अपने वीएम के अंदर अस्थायी रूप से समय बदलने में परेशानी हुई थी, लेकिन मुझे स्टैंड-अलोन प्रणाली के साथ कोई समस्या नहीं थी। यह इसे पढ़ने लायक हो सकता है: उबंटू पर समय
सारिणी

जवाबों:


24

वहाँ एक पुस्तकालय कहा जाता है libfaketime( GitHub पर भी ) जो आपको सिस्टम को आपके आवेदन के लिए दिए गए समय की रिपोर्ट करने की अनुमति देता है। कार्यक्रम निष्पादन की अवधि के लिए आपके पास या तो सिस्टम रिपोर्ट का निश्चित समय हो सकता है, या कुछ विशिष्ट समय पर घड़ी शुरू कर सकता है (उदाहरण के लिए, 01:59:30)। असल में, आप लाइब्रेरी लोडर के माध्यम से अपने प्रोग्राम की इन-मेमोरी मेमोरी में फ़ाकटाइम लाइब्रेरी को हुक करते हैं, और यह सिस्टम के समय से संबंधित सभी सिस्टम कॉल को अपने तरीके से कैप्चर और हैंडल करता है। यह सिस्टम समय को बिल्कुल नहीं बदलता है, लेकिन यह बदलता है कि आपके विशिष्ट एप्लिकेशन को बिना किसी और चीज को प्रभावित किए बिना किस समय रिपोर्ट किया जाता है, जो कि संभवतः आप वास्तव में हैं (अन्यथा, मुझे कोई कारण नहीं है कि बस वैश्विक परिवर्तन न करें सिस्टम का समय)।

इसका उपयोग करने के तरीके पर कई संभावित संस्करण हैं, लेकिन यह बदलते समय की तरह दिखता है, जब यह प्रक्रिया सोचती है कि यह libfaketime के साथ है, उन्हें आज़माने के लिए नमूना कोड के साथ एक पूरी तरह से लिस्टिंग है। Google को कुछ ऐसे उदाहरणों का भी पता लगाने में सक्षम होना चाहिए जो आपको पता है कि आपको क्या खोजना है।

ऐसा प्रतीत होता है कि यह आरएचईएल रिपॉजिटरी के माध्यम से उपलब्ध नहीं है, लेकिन उदाहरण के लिए डेबियन इसे पैकेज नाम के तहत प्रदान करता हैfaketime । यह स्रोत कोड से निर्माण करने के लिए सीधे आगे दिखता है (यह स्पष्ट रूप से एक configureकदम या उस तरह की चीज की भी आवश्यकता नहीं है)।


1
किसी भी फेडोरा / सेंटोस / आरएचईएल रेपो में इसका कोई पुनर्निर्माण नहीं है जो मुझे मिल सकता है। यह आरपीएम यहां उपलब्ध है लेकिन इसे CentOS के लिए फिर से बनाना होगा।
स्लम

@ एसएलएम दया, कि, लेकिन इसे स्रोत से बनाने के लिए मुश्किल नहीं होना चाहिए (बिना कोशिश किए)।
बजे एक CVn

1
नहींं, मैं बस सभी को उन्हें देखने से बचाने के लिए जानता था। यह बहुत सीधा दिखता है।
स्लम

6

दूरस्थ सर्वर के साथ समय को सिंक्रनाइज़ करने केntp लिए मैं पहली बार एक सेवा स्थापित करूंगा । फिर, सेवा को रोकें, मैन्युअल रूप से तारीख बदलें, चारों ओर खेलें और सेवा को पुनरारंभ करें:

service ntpd stop
date -s "Aug 11 2012"
[ do stuff ]
service ntpd start

1
"जहां तक ​​मुझे पता है, आप केवल एक प्रक्रिया के लिए समय नहीं बदल सकते क्योंकि यह एक सिस्टम-वाइड चीज है।" वास्तव में, आप कर सकते हैं, एक तरह से; मेरा जवाब देखिए।
एक CVn

2
@ माइकलकॉर्जिंग वास्तव में, लेकिन लेखन के समय मेरा ज्ञान आपके उत्तर तक नहीं पहुंचा। जहाँ तक मुझे पता था कि कोई रास्ता नहीं है :)।
terdon

मैंने अपना उत्तर पोस्ट करने से लगभग 90 सेकंड पहले आपका पोस्ट किया। ;)
एक CVn

1
@ माइकलकॉर्जिंग युप, और मैंने वास्तव में मेरा संपादन किया (आप इसे नहीं देख सकते, यह पोस्टिंग के बाद सही किया गया था जब मैंने आपका देखा) "जहाँ तक मुझे पता है" को जोड़ने के लिए :)।
terdon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.