dmesg সময় বনাম সিস্টেম সময় সময় সঠিক নয়


14

আমি আশা করি যে এখানে কেউ আছেন যিনি এই অদ্ভুত সমস্যার সাথে আমাকে সহায়তা করতে পারেন।

আমি মনে করি যে এটি কেন ঘটছে তা আমি জানি তবে এটি কীভাবে সমাধান করা যায় তা আমি জানি না। কারণ এটি হতে পারে কারণ BIOS সময়টি সঠিকভাবে সেট করা হয়নি বা এর মতো কিছু। তবে আমি আনুমানিক 400+ সার্ভারের BIOS সময় পরিবর্তন করতে চাই না। (বা বিআইওএস যুদ্ধ পরিবর্তন করুন)

root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 04:57:03 2014] TEST
root@spool:~# date
Mon Feb 17 11:45:17 CET 2014

টাইম সিঙ্কের জন্য সার্ভারটি এনটিপি চলছে।

এখানে যে কেউ ওএস-এ এই সমস্যাটি কীভাবে ঠিক করবেন জানেন?

Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux

কেন, কখন অনুনাদী /dev/kmsgআমার বার্তার তারিখ / সময়, এ dmesgব্যবস্থা তারিখ / সময় সাথে সিংক্রোনাইজ করা হয় না?


আপনি কি নিশ্চিত যে আপনার লোকালটাইম ফাইলটি /etc/localtimeসঠিক? স্থানীয় syslogসময় থেকে পেতে সময়।
ভিক্টরলি

আমি journalctl -kএখন (জার্নাল্ডযুক্ত সিস্টেমে) এর জন্য স্পষ্টভাবে ব্যবহার করার প্রবণতা রাখি । এটি আমার সময় অঞ্চলে সঠিক সময় অন্তর্ভুক্ত করে।
নবজাতক

উত্তর:


6

আপনার তত্ত্বটি যাচাই করতে (যা উপায় দ্বারা শব্দ), নিম্নলিখিতটিকে মূল হিসাবে চালিত করুন:

hwclock --show

আপনি যে কমান্ডটি চালাচ্ছেন সেই সার্ভারে এটি আপনাকে আপনার হার্ডওয়্যার ঘড়িটি দেখায়।

আপনার সিস্টেম-সময় (যা এনটিপি দ্বারা পরিচালিত হয়) এর সাথে আপনার হার্ডওয়্যার ক্লকটি সিঙ্ক্রোনাইজ করতে নিম্নলিখিত কমান্ডটি চালান:

hwclock --systohc --utc

শেষ আর্গুমেন্ট (--utc) সমন্বিত সর্বজনীন সময়ে হার্ডওয়্যার ঘড়ির মধ্যে সময় সংরক্ষণ করতে hwlk কে বলে।

অতিরিক্তভাবে, দয়া করে মনে রাখবেন যে dmesg (1) এর জন্য ম্যান পেজটি নীচে বলেছে, সুতরাং আপনি যে আচরণটি ভোগ করছেন তা নথিভুক্ত ও বৈধ:

   -T, --ctime
          Print human-readable timestamps.

          Be aware that the timestamp could be inaccurate!  The time
          source used for the logs is not updated after system
          SUSPEND/RESUME.

1
আপনার উত্তরের জন্য ধন্যবাদ. তবে দুর্ভাগ্যজনকভাবে কাজ হয়নি ... আমি যা করেছি তা হ'ল:root@spool:~# hwclock --show Mon Feb 17 20:30:14 2014 -0.985068 seconds root@spool:~# hwclock --systohc --utc root@spool:~# echo TEST > /dev/kmsg root@spool:~# dmesg -T | tail -1 [Mon Feb 17 13:50:14 2014] TEST root@spool:~# date Mon Feb 17 20:30:46 CET 2014
g00gle

ঠিক আছে, dmesg -T টাইমস্ট্যাম্পের সঠিকতার গ্যারান্টি দেয় না (ডকুমেন্টেশন অনুযায়ী), সুতরাং সঠিক লগিং ডিমন ব্যবহার করুন (উদাহরণস্বরূপ klogd) এবং আপনি কার্নেল বার্তাগুলির জন্য সঠিক টাইমস্ট্যাম্পগুলি পাবেন।
গ্যালাক্সি

1
সুতরাং ডেমসগে ভুল টাইমস্ট্যাম্পগুলির কোনও সমাধান নেই?
g00gle

আফাইক, না, নেই। তদ্ব্যতীত, ডেমসগের এই-টি বিকল্পটি সাম্প্রতিক সংযোজন (ডিবিয়ান দ্বারা?) এবং লিনাক্সের বেশিরভাগ ডিস্ট্রোই এই জাতীয় বিকল্প সম্পর্কে জানেন না। কেন এটি আপনার জন্য একটি চুক্তি ব্রেকার? আমি একটি সমাধান পুনরায় সরবরাহ করেছি: কীভাবে কার্নেল বার্তাগুলির জন্য সঠিক টাইমস্ট্যাম্পগুলি পাওয়া যায় (যেমন klogd)।
গ্যালাক্সি

1
আমার সার্ভারে আমার একই সমস্যা রয়েছে এবং মেশিনটি কখনও স্থগিত / পুনরায় চালু হয়েছিল তা অবশ্যই অস্বীকার করতে পারি। টাইমস্ট্যাম্প বন্ধ হওয়ার অন্য কোনও কারণ আছে কি? (এনটিপি এবং হার্ডওয়্যার সময় সঠিক এবং সর্বদা ছিল)
ডেওয়ালকার 30:58

12

dmesg সবেমাত্র কার্নেল রিংবফার প্রিন্ট করে যা টাইমস্ট্যাম্প হিসাবে শুরু হওয়া থেকে সেকেন্ডে আপটাইম সহ বার্তাগুলি লগ করে।

সুতরাং আপনি যদি -T বিকল্পটি ব্যবহার করেন তবে এই সমস্ত আপটাইম মানগুলি কেবলমাত্র আপনার সিস্টেম বুট হওয়ার তারিখে যুক্ত হবে। আপনার যদি স্থগিত বা পুনরায় সূচনা করার সময় ঘুমিয়ে পড়ে থাকে তবে সেগুলি হারিয়ে যায়, সুতরাং এই ক্ষেত্রে -T বিকল্পটি কার্যকর নয়, কারণ তারিখ / সময় মানগুলি অতীতে ও ঠিক আগের মতো নয়।


3

"সাম্প্রতিক" এন্ট্রিগুলিতে সঠিক সময় পেতে dmesg, আপনি আউটপুট হ্যাকিংয়ের সাথে ডেমসগ টাইমস্ট্যাম্পগুলি রিয়েল টাইমে রূপান্তর করতে পারেন।

"সাম্প্রতিক" দ্বারা, আমার অর্থ শেষ স্থগিত / পুনরায় শুরু হওয়ার পরে সময়গুলি, যেহেতু (অন্যরা ইতিমধ্যে দেখানো হয়েছে) স্থগিত সময়গুলি ডেমেসগ টাইমস্ট্যাম্পে গণনা করা হয় না।

তবে আপনার যদি প্রায়শই এটির প্রয়োজন হয়, যেমন কোনও নোটবুকের মতো, আপনি নীচের মতো কিছু ফাংশন বা উপস্বায় রাখতে পারেন:

# write current time to kernel ring buffer
echo "timecheck: $(date +%s) = $(date +%F_%T)" | sudo tee /dev/kmsg

# use our "timecheck" entry to get the difference
# between the dmesg timestamp and real time
offset=$(dmesg | grep timecheck | tail -1 \
| perl -nle '($t1,$t2)=/^.(\d+)\S+ timecheck: (\d+)/; print $t2-$t1')

# pipe dmesg output through a Perl snippet to
# convert it's timestamp to correct readable times
dmesg | tail \
| perl -pe 'BEGIN{$offset=shift} s/^\[(\d+)\S+/localtime($1+$offset)/e' $offset

# or use this instead to keep dmesg colors
dmesg --color=always | tail \
| perl -pe 'BEGIN{$offset=shift} s/^(\x1b\[.*?m)?\[(\d+)\S+/$1.localtime($2+$offset)/e' $offset

নমুনা আউটপুট:

...
Sat Jun 29 11:12:28 2019 wlp3s0: Limiting TX power to 30 (30 - 0) dBm as advertised by 10:5a:f7:53:1d:0f
Sat Jun 29 11:12:28 2019 IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
Sat Jun 29 11:34:16 2019 timecheck: 1561800856 = 2019-06-29_11:34:16
Sat Jun 29 12:10:11 2019 wlp3s0: cannot understand ECSA IE operating class, 5, ignoring

আসল dmesgআউটপুটটির তুলনায় (যা 3 দিনের মধ্যে বন্ধ রয়েছে):

$ dmesg | tail -4
[249424.746958] wlp3s0: Limiting TX power to 30 (30 - 0) dBm as advertised by 10:5a:f7:53:1d:0f
[249424.749662] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
[250732.318826] timecheck: 1561800856 = 2019-06-29_11:34:16
[252887.828699] wlp3s0: cannot understand ECSA IE operating class, 5, ignoring

$ dmesg -T | tail -4
[Wed Jun 26 17:59:09 2019] wlp3s0: Limiting TX power to 30 (30 - 0) dBm as advertised by 10:5a:f7:53:1d:0f
[Wed Jun 26 17:59:09 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
[Wed Jun 26 18:20:57 2019] timecheck: 1561800856 = 2019-06-29_11:34:16
[Wed Jun 26 18:56:52 2019] wlp3s0: cannot understand ECSA IE operating class, 5, ignoring

দুর্দান্ত, এবং আমার ল্যাপটপের জন্য আমার ঠিক কী প্রয়োজন! :-) এর কি কোনও উপায় - রঙের সাথে কাজ করার অনুমতি দেয় = সবসময় ডেমসগের জন্য বিকল্প, যদিও এখনও পার্ল প্রতিস্থাপনের অনুমতি দেয় (যেমন রঙের কোডগুলি মঞ্জুরি দেওয়া)?
অ্যাস্ট্রোফ্লয়েড

1
@ অস্ট্রোফ্লয়েড: হ্যাঁ dmesgআপডেট হওয়া রেজেক্সের সাথে বিকল্প লাইনটি দেখুন ।
mivk

আমি যদি পারতাম আবার উপভোগ করতাম - অনেক অনেক ধন্যবাদ! :-)
অ্যাস্ট্রোফ্লয়েড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.