কিভাবে 'dmesg' সময় ফর্ম্যাটকে 'রিয়েল' টাইম ফর্ম্যাটে রূপান্তর করবেন


42

আমার কাছে (উদাহরণস্বরূপ) dmesgআউটপুটটিতে এই লগ এন্ট্রি রয়েছে :

[600711.395348] do_trap: 6 callbacks suppressed

এই 'ডেমসগ' সময়টিকে 'আসল' সময়টিতে রূপান্তরিত করার কোনও সম্ভাবনা আছে, যখন এই ইভেন্টটি সুখী হবে?

উত্তর:


59

দেখে মনে হচ্ছে এটি সম্প্রতি কোয়ান্টালের জন্য প্রয়োগ করা হয়েছে (12.10): দেখুন http://brainstorm.ubuntu.com/idea/17829/

মূলত, dmesgএকটি নতুন স্যুইচ আছে বলে জানা গেছে -T, --ctime


সম্পাদনা করুন। Ignacio এর উত্তরের আর একটি এক্সটেনশন হিসাবে, পুরানো সিস্টেমে dmesg আউটপুট উন্নত করতে এখানে কিছু স্ক্রিপ্ট রয়েছে।

(দ্রষ্টব্য: সেখানে প্রদর্শিত কোডটির অজগর সংস্করণটির জন্য, কেউ আবার এটি ব্যবহারযোগ্য করে তুলতে পুনরায় প্রতিস্থাপন করতে &lt;এবং &gt;ফিরে যেতে <>চাইবে))


অবশেষে, একক মান যেমন 600711.395348একটি করতে পারে

ut=`cut -d' ' -f1 </proc/uptime` 
ts=`date +%s` 
date -d"70-1-1 + $ts sec - $ut sec + 600711.395348 sec" +"%F %T"

এবং ইভেন্টের তারিখ এবং সময় পান।

(দয়া করে মনে রাখবেন যে রাউন্ড-অফ ত্রুটির কারণে শেষ দ্বিতীয় সংখ্যা সম্ভবত সঠিক হবে না))

সম্পাদনা (২) : দয়া করে নোট করুন - নীচে ওম্বলের মন্তব্য অনুসারে - এটি কেবল তখনই কাজ করবে যদি মেশিনটি হাইবারনেটেড না করা হত ইত্যাদি। (সেক্ষেত্রে, কেউ অবশ্যই syslogকনফিগারগুলিতে /etc/*syslog*উপযুক্ত ফাইলগুলি পরীক্ষা করে দেখতে পারেন এবং আরও দেখুন : dmesg বনাম / var / বার্তা ।)


4
এবং, যুক্ত বোনাস হিসাবে, মেশিনটি যদি কখনও স্থগিত করা হয় তবে আপনি পুরোপুরি নষ্ট হয়ে যাবেন, কারণ ঘুমিয়ে সময় কাটেনি time
ওম্বল

উম্বলের মন্তব্য অত্যন্ত অপ্রয়োজনীয়! হাইবারনেটেড বা স্ট্যান্ডবাইতে সেট করা ল্যাপটপ ব্যবহার করা হলে এটি ভুল সময় দেখায়। আসল ফাইলটি দেখতে আপনার /var/log/kern.log ফাইলটি ব্যবহার করা উচিত।
অলিগোফ্রেন

ওয়ান-লাইনার:date -d"1970-01-01 + $(date +%s) sec - $(cut -d' ' -f1 </proc/uptime) sec + 600711.395348 sec" +"%F %T.%N %Z"
কেজিবিএম

দ্রষ্টব্য: আমি আর আমার মন্তব্য সম্পাদনা করতে পারি না, তবে %Zএটির পরিবর্তে এটি হওয়া উচিত UTC, date +%sইউটিসি থেকে সেকেন্ড পরে ফেরত দেয়। এরপরে এটি স্থানীয় সময় অঞ্চলে রূপান্তর করতে হবে।
কেজিবিএম

1
@ কেজিবিএম: আমি (২) এর সাথে একমত (1) হিসাবে, এটি এমন নয় যে ওয়ান-লাইনারের বিরুদ্ধে আমার কিছু আছে - তবে আমি এখানে এটির জন্য আসলে একটি পয়েন্ট দেখতে পাচ্ছি না: উপরের কোডটি পাঠযোগ্যতার জন্য ইচ্ছাকৃতভাবে তিনটি লাইনে বিভক্ত করা হয়েছে ( এটি লোকেরা কীভাবে তা বুঝতে আমার প্রয়োজন কাজ করে, এটি যতটা সম্ভব কমপ্যাক্ট তৈরি করে না; তার জন্য, আমি এটি আরও ভালভাবে ক্রমান্বয়ে গড়ে তুলব) এবং আকার (আমি দীর্ঘতর পরিবর্তনশীল নাম রাখতে পছন্দ করব তবে এটি লাইন 3টিকে দুঃস্বপ্ন-ইশ দেখায়); অন্যদিকে, আপনি সম্ভবত টার্মিনালে পুরো লম্বা লাইনটি টাইপ করবেন না, বরং এটি একটি ফাইলে রাখবেন এবং কার্যকর করতে পারবেন - সুতরাং এখানেও কোনও বড় জয় নেই।
ョ ー ジ

17

Ignacio এর উত্তর বাড়ানোর জন্য, অন্তর্ভুক্ত থাকা এন্ট্রিগুলি dmesgসিসলগের মাধ্যমে সিস্টেমে সাধারণত অন্য কোথাও লগ করা হয়, যা আপনাকে একটি "রিয়েল" টাইমস্ট্যাম্প দেয়। উবুন্টু যদি ডেবিয়ান-সেট ডিফল্টটি পরিবর্তন না করে, লগ এন্ট্রি থাকা উচিত /var/log/kern.log


1
সেন্ট ওএস 5 এবং 6 এ, লগ এন্ট্রিটি / ভার / লগ / বার্তাগুলিতে রয়েছে।
এমেরিনো

11

ডেমসগে প্রদত্ত সময় কার্নেল শুরুর পরে সেকেন্ডে। সুতরাং, যখন কার্নেলটি চলতে শুরু করেছে তখন কেবলমাত্র কয়েক সেকেন্ড যুক্ত করুন (ইঙ্গিত: আপটাইম)।


1
এটি কেবল তখনই কাজ করবে যদি আপনি এমন কোনও সিস্টেম ব্যবহার করেন যা কখনও স্ট্যান্ডবাইতে না যায়। অন্যথায় আপনার লগগুলি ব্যবহার করা দরকার।
অলিগোফ্রেন

2

ব্যস্তবক্সে, উপরের 3 টি লাইনারটি কাজ করে না, সুতরাং এটি একেবারে বন্ধ করার জন্য আমার উপায় ( 1628880.0আপনার dmesgটাইমস্ট্যাম্পের সাথে প্রতিস্থাপন করুন ):

perl -e '@a=split(`/proc/uptime`);print scalar(localtime(time()+$a[0] - 1628880.0)."\n");'


2

আমি জানি এটি এখন পুরানো তবে স্থানীয় সময়ে সময়টি প্রদর্শনের জন্য ডেমসগে এখন একটি বিল্ট ইন -e বা --reatime বিকল্প রয়েছে।

root@bbs:/var/log# dmesg|tail -1
[50755952.379177] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB

root@bbs:/var/log# dmesg -e|tail -1
[Feb20 17:10] Out of memory in UB 1593: OOM killed process 3183 (sbbs) score 0 vm:747204kB, rss:242764kB, swap:88224kB
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.