আমার স্ক্রিপ্টটি চালাতে কতক্ষণ সময় লাগে এবং ইমেলের উত্পন্ন এটিতে এটি অন্তর্ভুক্ত হয় কীভাবে?


11

আমি একটি সহজ ব্যাশ স্ক্রিপ্ট যে চেক (একটি সিরিজ রান আছে ping, nslookupইত্যাদি) এবং তারপর যে ডেটা আউটপুট সহ একটি ইমেল প্রতিবেদন পাঠায়।

পুরো স্ক্রিপ্টটি চালাতে কত সময় লেগেছে তার তথ্য অন্তর্ভুক্ত করতে আমি ইমেলটি চাই। সেই তথ্য সংগ্রহের কি সহজ উপায় আছে?

উত্তর:


15

আমি bashপরিবর্তনশীলটি একবার দেখে নেওয়ার পরামর্শ দিই SECONDS:

সেকেন্ডস : প্রতিবার এই প্যারামিটারটি রেফারেন্স করা হলে শেল ডেকে আনা থেকে সেকেন্ডের সংখ্যা। যদি একটি মান SECONDS এ বরাদ্দ করা হয়, পরবর্তী রেফারেন্সগুলির সাথে প্রত্যাবর্তিত মান হ'ল অ্যাসাইনমেন্ট প্লাস নির্ধারিত মানের পরে সেকেন্ডের সংখ্যা।

এইভাবে আপনি স্ক্রিপ্টের শেষে এই পরিবর্তনশীলটি মুদ্রণ করতে পারবেন। বিকল্পভাবে, যদি আপনার উদ্দেশ্য প্রোগ্রামের কেবলমাত্র অংশের সময় পরিমাপ করা হয়, তবে SECONDS=0কমান্ডগুলির পরিমাপক ব্লকের শুরুতে সেট করুন , এবং শেষে কেবল এই ভেরিয়েবলের মধ্যে সঞ্চিত মান ব্যবহার করুন।


আমি কখনই জানতাম না $SECONDS; দারুণ! এটি যুক্ত করতে, আপনি কয়েক সেকেন্ডকে ঘন্টা: মিনিট: কয়েক সেকেন্ডে রূপান্তর করতে পারবেন এমন কিছু দিয়ে date -d "1970-01-01 ${SECONDS} sec" +'%k:%M:%S'( man dateআরও ফর্ম্যাটিং বিকল্পের জন্য দেখুন)।
স্পারহক

আমি এই পদ্ধতির সত্যই পছন্দ করি তবে আমি এখনও কিছুটা বিভ্রান্ত। ধরা যাক আমি একই স্ক্রিপ্টটি একে অপরকে বাদ দিয়ে কয়েক সেকেন্ডের মধ্যে চালিয়েছি। আমি যদি SECONDS=0একটি স্ক্রিপ্ট এবং একই জিনিসটিকে অন্য স্ক্রিপ্টে সেট করি তবে তারা কি একে অপরের সাথে হস্তক্ষেপ করবে?
মাইক বি

3
কিছুই নয় - আমি স্ট্যাক ওভারফ্লো পোস্টে স্ট্যামের প্রতিক্রিয়াটিকে হোঁচট খেয়েছি ( স্ট্যাকওভারফ্লো.com/ a/ 5153036 / 344780 ) যা মূলত পার্থক্যটি বিয়োগ করে START_TIME=$SECONDS; dosomething; ELAPSED_TIME=$(($SECONDS - $START_TIME))। একযোগে ব্যবহারের জন্য এটি কিছুটা নমনীয় বলে মনে হয়।
মাইক বি

8

আপনার কমান্ডটির সাথে প্রিফিক্স /usr/bin/timeএবং টাইম কমান্ড স্ক্রিপ্টটি চালানোর সময় আউটপুট দেয়। bashনির্দিষ্ট কিছু ব্যবহারের চেয়ে এটি বহনযোগ্য ।


6

ব্যবহার করার সময় SECONDSএবং timeআপনাকে আপেক্ষিক মান দেবে। আপনি যদি স্ক্রিপ্টটি কখন চালিত হয়েছিল এবং কখন এটির কাজ শেষ হয়েছে তা নিরীক্ষণ এবং প্রতিবেদনের উদ্দেশ্যগুলির জন্য নিখুঁত মান পেতে চাইলে আপনি আপনার আদেশগুলি আগে এবং পরে এর আগে কিছু চেষ্টা করতে চাইতে পারেন date '+%Y%m%d%H%M%S.%N'। এটি আপনাকে আরও ভাল গ্রানুলারিটি দিতে পারে কারণ এটি সাব-সেকেন্ডের পার্থক্যগুলি ক্যাপচার করতে পারে কারণ আপনার কাছে কমান্ড রয়েছে pingযা সাধারণত একটি সেকেন্ডের মধ্যে কার্যকর হয়।


1

আপনার স্ক্রিপ্ট নীড়। একটি ইমেল প্রেরণে অনেকগুলি বিকল্প রয়েছে। আমি ব্যক্তিগতভাবে এটির জন্য এমএসএমটিপি সমর্থন করি, আপনি শিরোনামগুলি "এখানে" স্টাইলটি (ইনলাইন) নিজেরাই সংজ্ঞায়িত করতে পারেন বা একটি পৃথক ফাইল ব্যবহার করতে পারেন এবং তাদের একসাথে বিড়াল করতে পারেন। পার্ল, পাইথন ইত্যাদির সাথে জড়িত এর সব ধরণের বিকল্প রয়েছে

Reply-To: someone@somehost
Sender: someone <someone@somehost>
To: somebody@somewhere.else
Subject: some subject
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/html; charset="iso-8859-1"

ফাঁকা ফাঁকা রেখাটি গুরুত্বপূর্ণ। আপনার এসেম্বল করা বার্তাটি এমএসএমটিপিতে বিড়াল করুন:

cat assembled.eml | msmtp somebody@somewhere.else

একজন হতাশাবাদী সাফল্য অবধি লুফে নেবেন যুক্তিসঙ্গত সংখ্যা।

পে-লোডও এইচটিএমএল হতে পারে এবং পিএইচপি উত্পন্ন হতে পারে।

রাতারাতি "ব্যাচী" অপারেশনের জন্য খুব কুরুচিপূর্ণ বিকল্প হ'ল ক্রোনজব তৈরি করা এবং আউটপুটটি স্টাডাউট / স্টাডারের পরিবর্তে ইমেল করা হয়।

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