প্রশ্ন
আমি দীর্ঘ সময়কালে প্রতি সেকেন্ডে অবিকল UNIX কমান্ড চালাতে সক্ষম হতে চাই ।
আমার একটি সমাধান দরকার, যা একটি নির্দিষ্ট সময়ের পরে পিছিয়ে থাকে না, কারণ সময়টি কমান্ড নিজেই কার্যকর করার জন্য প্রয়োজন। ঘুম , দেখুন এবং একটি নির্দিষ্ট অজগর স্ক্রিপ্ট সবই আমাকে এই ব্যর্থ করেছিল।
মাইক্রোকন্ট্রোলারের যেমন http://Ardino.cc এ আমি হার্ডওয়্যার ক্লক বিঘ্নের মাধ্যমে এটি করতাম। অনুরূপ সময়-সঠিক শেল স্ক্রিপ্ট সমাধান আছে কিনা তা আমি জানতে চাই। স্ট্যাকএক্সচেঞ্জ.কমের মধ্যে আমি যে সমস্ত সমাধান পেয়েছি, তার ফলে কয়েক ঘন্টার বেশি সময় চলতে থাকলে একটি লক্ষণীয় সময় পিছিয়ে পড়ে। বিস্তারিত নীচে দেখুন.
ব্যবহারিক উদ্দেশ্য / প্রয়োগ
আমি পরীক্ষা করতে চাই যে আমার নেটওয়ার্ক সংযোগটি nc
প্রতি 1 সেকেন্ডে (নেটক্যাট) মাধ্যমে টাইমস্ট্যাম্পগুলি প্রেরণ করে অবিচ্ছিন্নভাবে চলছে কিনা ।
প্রেরকের:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
রিসিভার:
nc -l -p $port > netcat-receiver.txt
সমাপ্তির পরে, দুটি লগের তুলনা করুন:
diff netcat-sender.txt netcat-receiver.txt
ভিন্নতা হ'ল অপরিবর্তিত টাইমস্ট্যাম্পগুলি। এ থেকে আমি জানতে পারি যে আমার ল্যান / ডাব্লু / ডাব্লু / ইএসপি সমস্যাগুলি কখন তৈরি করে।
সমাধান স্লিপ
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% বন্ধ
সমাধান পুনরাবৃত্তি পাইথন
পাওয়া গেছে: ইউনিক্স কমান্ড প্রতি 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
ঘুমন্ত প্রক্রিয়া যদি কি ঘটে ?