কিভাবে '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.