তারিখ বা তারিখের সীমা অনুসারে কোনও সিস্টেম লগ ফাইল ফিল্টার করুন


12

আমি যা অর্জন করতে চাই:

আমি তারিখ অনুসারে একটি সিস্টেম লগ ফাইল ফিল্টার করতে চাই, অর্থাৎ যখন আমি এটি করি:

$ cat /var/log/syslog | grep -i "error\|warn\|kernel" 

এটি শেষ তিন দিনের জন্য এইগুলির মতো লাইনগুলি মুদ্রণ করে বলুক:

(...)
Apr  3 06:17:38 computer_name kernel: [517239.805470] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready
(...)
Apr  4 19:34:21 computer_name kernel: [517242.523165] e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
(...)
Apr  5 09:00:52 computer_name kernel: [517242.523217] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s25: link becomes ready

কীভাবে গ্রেপ করবেন (নির্বাচন করুন বা ফিল্টার করুন):

  • তারিখ অনুসারে?
  • তারিখ দ্বারা + ঘন্টা?

আমি যা চেষ্টা করেছি:

$ cat /var/log/syslog | grep -i "Apr  5" | grep -i "error\|warn\|kernel" 

এটা তোলে হিসাবে প্রত্যাশিত কাজ syslogফাইল, কিন্তু না kern.logউদাহরণস্বরূপ ফাইল, যা শুধুমাত্র আয়: Binary file (standard input) matches। এবং আমি যখন tailএই নির্দিষ্ট ফাইলটি দেখতে পাই তখন syslogফাইলের চেয়ে একই শুরু তারিখের ফর্ম্যাটটি দেখতে পাব ।

প্রশ্ন:

kern.logফাইলের মতো অন্যান্য লগগুলিতে কীভাবে এটি অর্জন করবেন ?

এছাড়াও, ফিল্টার করা কি সম্ভব:

  • তারিখের পরিসীমা দ্বারা?
  • তারিখ দ্বারা + ঘন্টা পরিসীমা?

ইঙ্গিত: যদি সম্ভব হয় তবে "মনে রাখা সহজ কমান্ডগুলি" দিয়ে।

উত্তর:


14

সিস্টেমেড সহ আমরা জার্নাল্টেল পেয়েছি যা সহজেই সূক্ষ্ম দানযুক্ত ফিল্টারিংয়ের অনুমতি দেয়:

sudo journalctl --since "2 days ago"   
sudo journalctl --since "2019-03-10" --until "2019-03-11 03:00"
sudo journalctl -b # last boot 
sudo journalctl -k # kernel messages
sudo journalctl -p er # by priority (emerg|alert|crit|err|warning|info|debug)
sudo journalctl -u sshd # by unit 
sudo journalctl _UID=1000 # by user id

উদাহরণ একত্রিত করা যেতে পারে!


5
ঠিক আছে এখন এত সুন্দর!
জর্জ উদোসেন

2
প্রায়শই এমনকি sudoপ্রয়োজন হয় না (বিশেষত যদি ব্যবহারকারী admগ্রুপটির সদস্য হয় , যা "প্রধান" ব্যবহারকারী সাধারণত হয়)।
পার্লডাক

4

সাধারণভাবে, এটি kern.logএকটি পাঠ্য ফাইল। তবে কখনও কখনও এটি ঘটে যে এটিতে কিছু বাইনারি ডেটা থাকে, বিশেষত যখন সিস্টেমের আগে ক্রাশ হয়েছিল এবং সিস্টেমটি ফাইলটি সঠিকভাবে বন্ধ করতে পারেনি। তারপরে আপনি যেমন ^@^@^@^@^@^@^@^@^@এবং এর মতো পাঠ্যযুক্ত লাইনগুলি লক্ষ্য করতে পারেন ।

যদি grepএর ইনপুটটি বাইনারি হয় তবে এটি সাধারণত আরও প্রসেসিং বন্ধ করে দেয় এবং প্রিন্ট ... binary file ...করে। তবে এই আচরণ পরিবর্তন করার জন্য একটি সুইচ রয়েছে। ম্যানপেজ থেকে :

[...]
File and Directory Selection
   -a, --text
          Process a binary file as if it were text; 
          this is equivalent to the --binary-files=text option.
[...]

আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

$ grep -a -i "Apr  5" /var/log/kern.log  | grep -i "error\|warn\|kernel"

(তবে আমি আসলে journalctlঅন্য উত্তরে প্রদত্ত সমাধানটি পছন্দ করব ))

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