তারিখের আউটপুট সংরক্ষণ এবং একটি ফাইলের কমান্ড দেখুন


23

আমি লিনাক্সের নবাগত এবং আমি একটি কমান্ড দেখার চেষ্টা করছি এবং এটি একটি ফাইলে লগ ইন করার চেষ্টা করছি। আমি চেষ্টা করেছিলাম

ওয়াচ -t -n 10 "(তারিখ '+ সময়:% এইচ:% এম:% এস'; পিএস অক্স | গ্রেপ" প্যাটার্ন "| ডাব্লুসিএল)" >> লগফাইলে

এবং মত একটি ফলাফল আশা করছি

TIME: 10:32:30    12
TIME: 10:32:40    18
TIME: 10:32:50    2

লগফাইলে সংরক্ষণ করা। যাইহোক, যখন লগফাইলে ইন-প্রিন্টেবল অক্ষর থাকে I আমি কীভাবে লি কমান্ড থেকে এই ধরণের আউটপুট পেতে পারি

উত্তর:


20

আপনি যা খুঁজছেন তা করতে, একটি সাধারণ স্ক্রিপ্ট (@ ইগনাসিও উল্লেখ করেছেন) এর কৌশলটি করা উচিত:

while true
do
    echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
    sleep 2
done

আমি এর teeপরিবর্তে >>এমনটি ব্যবহার করি যাতে আপনি আপনার টার্মিনালের আউটপুট দেখতে দেখতে এবং আপনার লগে ক্যাপচার করতে পারেন।


প্রথম লাইনে 1 দিয়ে আমি একটি ত্রুটি পেয়েছি বলে মনে হচ্ছে। তবে আমি যখন এটি সত্যে পরিবর্তন করেছি, এটি কাজ করেছিল। তবে স্ক্রিনের আউটপুট দুটি ভিন্ন লাইনে সময় এবং গণনা দেখায় তবে লগ ফাইলটি কেবল গণনাটি দেখায়। আমি লগফাইলে একই লাইনে সময় পাওয়ার এবং গণনা করার কোনও উপায় আছে কি?
লাউডকুর

আহ ঠিক আছে, কারণ টি কমান্ড কেবল চলমান ps। আমি আমার উত্তরটি পরিবর্তন করব।
কির্ক

পুরোপুরি কাজ করে! ধন্যবাদ। লগফাইলে টাইমস্ট্যাম্প যুক্ত করার কোনও উপায় আছে যাতে এটি অনন্য ফাইলগুলিতে সঞ্চয় হয়?
লাউডকুর

আপনি লগফিলের নাম বলতে চাচ্ছেন? আপনি লগফিলের মতো কিছু করতে পারেন every (তারিখ +% Y% m% d) প্রতিদিন একটি নতুন লগফিল তৈরি করতে।
কির্ক

হ্যাঁ, আমি এটা করেছি। এই প্রশ্নের উত্তর হিসাবে কোডটি সংযুক্ত করেছেন। ধন্যবাদ!
লাউডকুর

37

watchকোনও স্ক্রিপ্ট ব্যবহার না করে খুব সহজেই এটি করা যায় ।

watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"


1
সঠিক। আমি ম্যাকের যা ছিল তা লিখেছিলাম, যেখানে ঘড়িটি বাক্সের বাইরে পাওয়া যায় না এবং পোর্টেবল সমাধানটি বেছে নিয়েছিলাম। আপনার অনেক সহজ।
কির্ক

2
অন্য কথায়, অর্গের tee -a logfile মধ্যে প্রবেশের জন্য একটি পাইপ অন্তর্ভুক্ত করুন watch। খুব পরিষ্কার, আপনাকে ধন্যবাদ।
ওয়াইল্ডকার্ড

7

watchএকটি প্রদর্শন আউটপুট জন্য বোঝানো হয়। আপনি যদি প্রতি X সেকেন্ডে কেবল কমান্ড চালাতে চান তবে তার জন্য আপনার কেবল বিলম্বের লুপটি ব্যবহার করা উচিত।

while true ; do somecommand ; sleep 2 ; done

5

ঘড়িটি একটি এনক্রেস প্রোগ্রাম, এবং এটি একটি কনসোল উইন্ডোতে চালিত করার জন্য ডিজাইন করা হয়েছে (পুনর্নির্দেশ করা হয়নি), এ কারণেই এটি অপ্রিন্টযোগ্য অক্ষরগুলির একটি গুচ্ছ তৈরি করছে (স্ক্রিনটি পুনরায় আঁকানোর জন্য কার্সারকে পরিচালনা করে এমন নিয়ন্ত্রণের অক্ষরগুলি এগুলি)।

আপনি তারিখ / গ্রেপ কমান্ডগুলি কোনও স্ক্রিপ্টে স্থানান্তরিত করার চেষ্টা করতে পারেন এবং তারপরে ক্রোনজব থেকে সেই স্ক্রিপ্টটি কল করুন।


3

ঠিক আছে, তাই আমি এটিকে একটি স্ক্রিপ্টে রেখেছি এবং নিম্নলিখিত কোডটি রেখেছি:

#!/bin/sh
NOW=$(date '+%Y%m%d%H%M%S')
LOGFILE="log.$NOW"

while true
do
    echo $(date '+[TIME: %H:%M:%S]   Output: ' ; ps aux | grep "pattern" | wc -l ) | tee -a $LOGFILE
    sleep 2
done

0

আমি যখন এই থেকে আরও ভাল / লগড আউটপুট পাওয়ার চেষ্টা করছিলাম তখন আমি এই প্রশ্নটি জুড়ে এসেছি du -sh $data_path। আমি এখানে পাওয়া "উইন্ড কমান্ড, ডু স্লিপ" প্যাটার্নটি ব্যবহার করেছি, তবে আমার পছন্দসই আউটপুট দেওয়ার জন্য কিছু জটিল AWK ব্যবহার করেছি K

while du -sh $data_path; do sleep 1; done | awk '
$1 != size {
    size=$1;
    path=$2;
    time=systime();
    seconds=time-prevtime;
    if(seconds < 1000000000){
        seconds=seconds" seconds"
    }else{
        seconds=""
    }
    print size, path, strftime("%m/%d/%Y@%H:%M:%S", time), seconds; 
    prevtime=time
}'

আমি এটি অননিলাইনার হিসাবে আসলেই করেছি, সেজন্য সেমিকোলন রয়েছে are তবে এটি পঠনযোগ্য করে তোলার জন্য, আমি এটি ভেঙে ফেলেছি। আউটপুটটি দেখে মনে হচ্ছে:

502G /var/lib/cassandra/dump/ 05/22/2018@04:46:17
503G /var/lib/cassandra/dump/ 05/22/2018@04:46:59 42 seconds
504G /var/lib/cassandra/dump/ 05/22/2018@04:47:57 58 seconds
505G /var/lib/cassandra/dump/ 05/22/2018@04:48:55 58 seconds
506G /var/lib/cassandra/dump/ 05/22/2018@04:49:53 58 seconds
507G /var/lib/cassandra/dump/ 05/22/2018@04:50:50 57 seconds
508G /var/lib/cassandra/dump/ 05/22/2018@04:51:46 56 seconds
509G /var/lib/cassandra/dump/ 05/22/2018@04:52:44 58 seconds
510G /var/lib/cassandra/dump/ 05/22/2018@04:53:41 57 seconds

0

এখানে একটি উদাহরণ আমি শুধু একটি জন্য প্রয়োজনীয় watchএকটি উপর ps axfসমগ্র আউটপুট নীচে একটি টাইমস্ট্যাম্প সঙ্গে। আপাচি যখন ব্যর্থ হয় আমি তার জন্য নজর রাখছি। আমি teeপ্রতিটি কমান্ড, এবং psএবং এর জন্য পাইপ করতে হয়েছিল date

watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'

tail --follow logfile-apache-issue.logফলাফল ফাইলের নমুনা আউটপুট ।

29862 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29863 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29864 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29865 ?        S      0:00          \_ /usr/sbin/apache2 -k start
26635 pts/2    S+     0:00  |       \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:13
13622 ?        SN     0:33      \_ /usr/sbin/apache2 -k start
25038 ?        Ss     0:01      \_ /usr/sbin/apache2 -k start
29859 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29860 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29861 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29862 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29863 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29864 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29865 ?        S      0:00          \_ /usr/sbin/apache2 -k start
26635 pts/2    S+     0:00  |       \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:15
13622 ?        SN     0:33      \_ /usr/sbin/apache2 -k start
25038 ?        Ss     0:01      \_ /usr/sbin/apache2 -k start
29859 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29860 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29861 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29862 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29863 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29864 ?        S      0:00          \_ /usr/sbin/apache2 -k start
29865 ?        S      0:00          \_ /usr/sbin/apache2 -k start
26635 pts/2    S+     0:00  |       \_ tail -n 1000 -f /var/log/apache2/error.log
TIME:02:21:16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.