सवाल
मैं एक लंबी अवधि में हर सेकंड ठीक एक यूनिक्स कमांड चलाने में सक्षम होना चाहता हूं ।
मुझे एक समाधान की आवश्यकता है, जो एक निश्चित समय के बाद पीछे नहीं रहता है, क्योंकि उस समय के लिए कमांड को निष्पादन की आवश्यकता होती है। नींद , घड़ी और एक निश्चित अजगर लिपि सभी ने मुझे इस संबंध में विफल कर दिया।
माइक्रोकंट्रोलर जैसे कि http://Arduino.cc पर मैं हार्डवेयर क्लॉक के माध्यम से हस्तक्षेप करता हूं। मैं जानना चाहता हूं कि क्या एक समान समय-सटीक शेल स्क्रिप्ट समाधान है। सभी समाधान जो मुझे StackExchange.com के भीतर मिले, एक ध्यान देने योग्य समय अंतराल के परिणामस्वरूप, अगर घंटे से अधिक चलता है। विवरण नीचे देखें।
व्यावहारिक उद्देश्य / आवेदन
मैं यह परीक्षण करना चाहता हूं कि क्या मेरा नेटवर्क कनेक्शन nc
हर 1 सेकंड में टाइमस्टैम्प (netcat) के माध्यम से भेज रहा है ।
प्रेषक:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
रिसीवर:
nc -l -p $port > netcat-receiver.txt
पूरा होने के बाद, दो लॉग की तुलना करें:
diff netcat-sender.txt netcat-receiver.txt
अंतर अनियंत्रित टाइमस्टैम्प होगा। इससे मुझे पता चलेगा कि मेरा LAN / WAN / ISP किस समय परेशानी पैदा करता है।
समाधान सो
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
समय के साथ एक निश्चित ऑफसेट हो जाता है, क्योंकि लूप के भीतर कमांड को भी थोड़ा समय लगता है।
शुद्धता
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
सेकंड बीत गया: 34520
wc -l timelog-sleep.txt
फ़ाइल में लाइनें: 34243
सटीक संक्षेप:
- 34520-34243 = 277 समय समस्याएँ
- 34520/34243 = 1.008 = 0.8% की छूट
समाधान REYAT PYTHON
यहां पाया गया: हर x सेकंड में हमेशा के लिए यूनिक्स कमांड दोहराएं
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
माना जाता है कि समय की कमी से बचने के लिए, लेकिन ऐसा करने में विफल रहता है।
शुद्धता
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
सेकंड बीत गया: 10960
wc -l timelog-repeat-py.txt
फ़ाइल में लाइनें: 10859
सटीक संक्षेप:
- 10960-10859 = 101 टाइमिंग की समस्या
- 10960/10859 = 1.009 = 0.9% की छूट
समाधान देखो
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
शुद्धता
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
सेकंड समाप्त हो गया: 8499
wc -l timelog-watch.txt
फ़ाइल में लाइनें: 8366
सटीक संक्षेप:
- 8499-8366 = 133 समय समस्या।
- 8499/8366 = 1.016 = 1.6% की छूट।
nice
सोते हैं तो प्रक्रिया क्या होती है?