লিনাক্স সেন্টোস ডেমসগ টাইমস্ট্যাম্প সহ


15

আমি টাইমস্ট্যাম্প সহ আমার সেন্টোস 5.x ডেমেসগটি পড়তে চাই, আমি এটি কীভাবে করব?


পরে dmesg -T পতাকা সমর্থন করে, আপনার dmesg সমর্থন করে তবে -T ব্যবহারের চেষ্টা করুন।
ইলানসচ

সেন্টোস 7+ সাপোর্ট করেdmesg -T
রজারডপ্যাক

উত্তর:


12

dmesgকার্নেল লগ রিং বাফার পড়ে। এটি টাইমস্ট্যাম্পগুলি করে না। আপনার যা করা উচিত তা হ'ল বাফার থেকে কার্নেল লগগুলি ধরতে এবং একটি ফাইলে প্রেরণ করার জন্য সিসলগ কনফিগার করা (যদি এটি ইতিমধ্যে এটি সেট না করে থাকে)। দ্রষ্টব্য, ডিফল্ট CentOS 5.x syslog কনফিগারেশন কার্নেল লগগুলিকে /var/log/messagesআমার স্মরণ হিসাবে পাঠায় ।

আপনি যদি /var/log/kern.logডিফল্ট সিসলোগ ডেমন ব্যবহার করে সমস্ত কার্নেল (dmesg) লগগুলিতে প্রেরণ করতে চান তবে আপনি নীচের মতো একটি লাইন যুক্ত করতে চান/etc/syslog.conf

kern.*                         /var/log/kern.log

4
উত্তরের জন্য ধন্যবাদ. যে কেউ সেন্টোস 6 চালাচ্ছেন এটির জন্য, আমি এটি খুঁজে পেয়েছি/etc/rsyslog.conf
সাফাদো

হ্যাঁ, সেন্টোস (এবং আরএইচইএল) x.x এর সাহায্যে তারা ডিফল্ট সিস্লগ ডেমনকে পুরানো সিস্কলগ থেকে আরএসস্লগে পরিবর্তন করেছে। এটি RHEL / CentOS 5.x এর জন্যও (সমর্থিত) প্যাকেজ হিসাবে উপলব্ধ।
ক্রিস্টোফার ক্যাসেল

1
ঠিক আছে, আমি আমার জিনিসগুলির তালিকাতে এটি বের করেছিলাম তবে এখন আপনি আমাকে কিছু গুগল বাঁচিয়েছেন
সাফাদো

8

সমাধান রয়েছে "dmesg / কার্নেল রিং বাফারের জন্য টাইমস্ট্যাম্পগুলি সক্ষম করা"

আপনি যোগ করতে পারেন:

printk.time=1

কার্নেল সেমিডলাইন।

আমার হিসাবে, আমি পুতুলের সাথে সমস্ত মেশিনে rc.local যুক্ত করেছি। এটি আমার পক্ষে সহজ):

if test -f /sys/module/printk/parameters/time; then
   echo 1 > /sys/module/printk/parameters/time
fi

যা আমার পক্ষে কাজ করে
c4f4t0r

5
ব্যবহার rc.localকরা এটির জন্য সত্যই এক ধরনের কদর্য সমাধান ( rc.localব্যবহারটি প্রায়শই যে কোনও কিছুর কুশল সমাধান)। একটি ভাল সমাধান হ'ল একটি ফাইল printk.time = 1intoোকানো /etc/sysctl.confবা inোকানো /etc/sysctl.d/। এই কারণেই এই ফাইলগুলি বিদ্যমান। স্টাফ ক্র্যামিং rc.localশেষ পর্যন্ত আপনাকে একটি ভঙ্গুর, বিশৃঙ্খল, অগোছালো, অবিশ্বাস্য প্রারম্ভকালে ছেড়ে যায়।
ক্রিস্টোফার ক্যাসেল

@ ক্রিস্টোফারক্যাসেলের মন্তব্যে এটিই এই প্রশ্নের একমাত্র সঠিক উত্তর। এটি লজ্জাজনক এটি সত্য উত্তর নয়।
পেট্র

1

আমি এই সহজ স্ক্রিপ্ট লিখেছি। হ্যাঁ, এটি ধীর। আপনি যদি দ্রুত কিছু চান তবে আপনি আসলে পার্ল, পাইথন বা অন্য কিছুতে একটি স্ক্রিপ্ট লিখবেন write আমি নিশ্চিত যে এই সাধারণ স্ক্রিপ্টটি এটি কীভাবে গণনা করা যায় তার ঝুলন্ত স্থান দিতে পারে।

দয়া করে নোট করুন আমি প্রতিটি লাইনে নিবন্ধিত সেকেন্ডের ভগ্নাংশটিকে উপেক্ষা করেছি (টাইমস্ট্যাম্পের পরে।)

#!/bin/bash
localtime() {
 perl -e "print(localtime($1).\"\n\");";
}

upnow="$(cut -f1 -d"." /proc/uptime)"
upmmt="$(( $(date +%s) - ${upnow} ))"

dmesg | while read line; do
 timestamp="$(echo "${line}" | sed "s/^\[ *\([0-9]\+\).*/\1/g")"
 timestamp=$(( ${timestamp} + ${upmmt} ))
 echo "${line}" | sed "s/^[^]]\+]\(.*\)/$(localtime "${timestamp}") -\1/g"
done

আমি আসা করি এটা সাহায্য করবে. :)


0

ক্ষেত্রে স্ক্রিপ্ট পরিবর্তন "" "দিয়ে শুরু হয় না

#!/bin/bash
localtime() {
 perl -e "print(localtime($1).\"\n\");";
}

upnow=$(cut -f1 -d"." /proc/uptime)
upmmt=$(( $(date +%s) - ${upnow} ))

dmesg \
| while read LINE; do
    if [ "$(echo ${LINE} | egrep -v "^\[")" == "" ] ; then
        timestamp=$(echo "${LINE}" | sed "s/^\[ *\([0-9]\+\).*/\1/g")
        timestamp=$(( ${timestamp} + ${upmmt} ))
        echo "${LINE}" | sed "s/^[^]]\+]\(.*\)/$(localtime "${timestamp}") -\1/g"
    else
        echo "${LINE}"
    fi
done

0

টাইমস্ট্যাম্প থেকে নেতৃস্থানীয় স্পেসগুলি সরিয়ে এটি প্লুটোইডের পরামর্শের উপর আপডেট।

dmesg|perl -ne 'BEGIN{$a= time()- qx!cat /proc/uptime!};s/( *)(\d+)\.\d+/localtime($2 + $a)/e; print $_;' 
  • পার্ল-এন হ'ল স্ট্যান্ডার্ড ইনপুট পড়ার এবং ভেরিয়েবল read _ এ পড়ার।
  • তারপরে প্রতিটি লাইনের জন্য বডিটি (বিগইন বিভাগ নয়) চালানো হবে।
  • বিগইন একবার {in কোড চালায়।
  • $ এ যুগের পর থেকে সেকেন্ডে ডেমসগের শুরু (সেকেন্ড)
  • S / ... কমান্ডটি $ _ এ মান গ্রহণ করে এবং ডেমসগ অফসেটের "লোকালটাইম" সংস্করণ ($ 1) এর সাথে টাইমস্ট্যাম্পের অংশটিকে বিকল্প হিসাবে যুক্ত করেছে ###### সিস্টেম শুরুর সময় ($ এ)
  • মুদ্রণ $ একটি "লোকাল বন্ধুত্বপূর্ণ টাইম স্ট্যাম্প" "বুট থেকে সেকেন্ড" সময় স্ট্যাম্পের পরিবর্তে প্রতিলিপি প্রিন্ট করে।

1
এবং মূল উত্তরের মতো এরও কিছু ব্যাখ্যা দরকার needs আপনি কি আপনার পোস্ট সম্পাদনা করতে পারেন, এটি ভেঙে ফেলতে পারেন এবং এর মাধ্যমে পদক্ষেপ নিতে পারেন?
কোরি নটসন

-1

নীচে হিসাবে একটি সামান্য পার্ল স্ক্রিপ্ট। এটি একটি সাধারণ উপায়, এবং আমি লেখক নই।

dmesg|perl -ne 'BEGIN{$a= time()- qx!cat /proc/uptime!};s/(\d+)\.\d+/localtime($1 + $a)/e; print $_;'
  • perl -n মানক ইনপুট পড়ার এবং পরিবর্তনশীল able _ এ পড়ার একটি উপায়।
  • তারপরে প্রতিটি লাইনের জন্য বডিটি (বিগইন বিভাগ নয়) চালানো হবে।
  • বিগইন একবার {in কোড চালায়।
  • $ এ যুগের আগে থেকেই ডেমসগের শুরু
  • এস / ... কমান্ডটি $ _ এ মান গ্রহণ করে এবং সিস্টেম শুরুর সাথে ডেমসগ অফসেটের (লোকালটাইম) সংস্করণ ($ 1) সহ টাইমস্ট্যাম্পের অংশকে প্রতিস্থাপন করে ###### ####### সময় ($ ক)
  • মুদ্রণ $ একটি "লোকাল বন্ধুত্বপূর্ণ টাইম স্ট্যাম্প" "বুট থেকে সেকেন্ড" সময় স্ট্যাম্পের পরিবর্তে প্রতিলিপি প্রিন্ট করে।

1
এই উত্তরের আরও কিছু ব্যাখ্যা দরকার।
ক্যাস্পারড

@ ক্যাস্পারড এটির অর্থ এখানে: - পার্ল-এন হল একটি স্ট্যান্ডার্ড ইনপুট পড়ার এবং ভেরিয়েবল read _ এ পড়ার। তারপরে প্রতিটি লাইনের জন্য বডিটি (বিগইন বিভাগ নয়) চালানো হবে। - বিগইন একবার {in কোড চালায়। $ a যুগের আগে থেকেই s/...ডেমসগের সূচনা - কমান্ডটি $ _ এ মান গ্রহণ করে এবং ###### ) সিস্টেম শুরুর সময় ($ ক) এ যুক্ত হয়েছে। - print $a"বুট থেকে সেকেন্ড" সময় স্ট্যাম্পের পরিবর্তে স্থানীয় বন্ধুত্বপূর্ণ টাইম স্ট্যাম্পের সাহায্যে ডেমসাগ মুদ্রণ করে।
ড্যাডিংক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.