শেল কমান্ডের কার্য সম্পাদনের সময় প্রিন্ট করুন


89

শেল কমান্ডের কার্যকর সময়টি নিম্নলিখিত সংমিশ্রণ সহ মুদ্রণ করা সম্ভব?

root@hostname:~# "command to execute" && echo "execution time"

উত্তর:


73

ভুলে যাবেন না যে বাশের বিল্টিনের মধ্যে পার্থক্য রয়েছে time(যা করার সময় আপনাকে ডিফল্টরূপে ডাকা উচিত time command) এবং /usr/bin/time(যার জন্য এটির পুরো পথে আপনাকে কল করতে হবে)।

বিল্টিন timeসর্বদা স্টডারারে প্রিন্ট করে তবে /usr/bin/timeআপনাকে নির্দিষ্ট ফাইলটিতে সময়ের আউটপুট প্রেরণ করতে দেয়, তাই আপনি এক্সিকিউটড কমান্ডের স্টডার স্ট্রিমের সাথে হস্তক্ষেপ করবেন না। এছাড়াও, /usr/bin/timeএর বিন্যাসটি কমান্ড লাইনে বা এনভায়রনমেন্ট ভেরিয়েবলের দ্বারা কনফিগারযোগ্য TIME, যেখানে বাশের বিল্টিন timeবিন্যাসটি শুধুমাত্রTIMEFORMAT পরিবেশ পরিবর্তনশীল দ্বারা কনফিগার করা হয়েছে ।

$ time factor 1234567889234567891 # builtin
1234567889234567891: 142662263 8653780357

real    0m3.194s
user    0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps

থেকে man bash: "TIMEFORMAT ভেরিয়েবলটি এমন ফর্ম্যাট স্ট্রিংয়ে সেট করা যেতে পারে যা টাইমিংয়ের তথ্যটি কীভাবে প্রদর্শিত হবে তা নির্দিষ্ট করে"
ডেনিস উইলিয়ামসন

ওফস - আমি ভেবেছিলাম এটির ফর্ম্যাট করার কোনও উপায় আছে তবে আমি এটিকে মিস করেছি help timeকারণ আমি কেবল এটির দিকে চেয়েছিলাম এবং আমি ভেবেছিলাম এটি একটি কমান্ড লাইনের যুক্তি। আমি উত্তর আপডেট করব।
মার্ক রুশাকফ

4
এখানে আমরা 9 ​​বছর পরে আছি এবং কমান্ডটি কেবল 0m0.018s নিয়েছে। আমি কেবল ভেবেছিলাম আমি এটি উল্লেখ করব।
ঘাসসেন লৌহাইচি

112

time বেশিরভাগ শেলের মধ্যে একটি অন্তর্নির্মিত কমান্ড যা টিটিআইকে কার্যকর করার সময় তথ্য লিখে।

আপনিও এরকম কিছু চেষ্টা করতে পারেন

start_time=`date +%s`
<command-to-execute>
end_time=`date +%s`
echo execution time was `expr $end_time - $start_time` s.

বা এতে bash:

start_time=`date +%s`
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s

মাজার সাথে একমত হয়েছিলেন, এই নমনীয়তাটি আমাকে পুরো আদেশের পুরো সেটটি নির্ধারণের অনুমতি দেয়।
নাথ

এক্সিকিউশন গণনা করতে লিনাক্স কমান্ডের চারপাশে লিনাক্সের দিকগুলি প্রয়োগ করা সম্ভব
সৈয়দ মাজরিনা

4
এই পদ্ধতির একটি অসুবিধা হ'ল এটি কয়েক সেকেন্ডে পরিমাপ করে, যেখানে timeমিলিসেকেন্ড ব্যবহার করে। এবং যদি আপনি ভেরিয়েবল এবং গণনাগুলি ব্যবহার না করে একত্রে কয়েক মুখ্য কমান্ডের সময় কাটাতে চান তবে আপনি প্রথম বন্ধনী ব্যবহার করতে পারেন: time ( command1 ; command2 ; command3 )আপনি এমনকি এগুলি পৃথকভাবে মোট সময়ের সাথেও করতে পারেন, যেমন: time ( time command1 ; time command2 ; time command3 ) অবশ্যই যদি আপনি বিশটি কমান্ড চান তবে এই উত্তরের সমাধানটি ব্যবহার করা আরও ভাল। তবে তারপরে আপনার কমান্ডগুলি সমস্ত স্ক্রিপ্টে রাখার চিন্তা করা উচিত ...
এমএসবি

26
root@hostname:~# time [command]

এটি ব্যবহৃত আসল সময় এবং ব্যবহূত সিস্টেমের সময়ের মধ্যে পার্থক্য করে ishes


এটি অবশ্যই মূল উত্তর - তবে আপনি যদি কমান্ড থেকে ত্রুটি আউটপুটটি দেখতে চান এবং এখনও সময় মতো তথ্যকে স্ট্যান্ডার্ড আউটপুটে প্রেরণ করতে চান তবে কিছু জটিলতা রয়েছে। টাইম কমান্ড স্টাডারকে লিখেছে। আপনি যা পরামর্শ দেন তা যথেষ্ট সঠিক - তাই আমার +1।
জোনাথন লেফলার

4
timetty লিখেছেন, stderr না। যা আমি অনুমান করি বিষয়গুলি আরও খারাপ করে দেয়।
ভিড়

13

লাইন বাই লাইন ডেল্টা পরিমাপের জন্য, গনোনম ব্যবহার করে দেখুন

এটি একটি কমান্ড লাইন ইউটিলিটি, কিছুটা মুর্টিলের টিএস-এর মতো, অন্য কমান্ডের স্ট্যান্ডার্ড আউটপুটে টাইমস্ট্যাম্প তথ্য প্রিপেন্ড করতে। দীর্ঘ-চলমান প্রক্রিয়াগুলির জন্য দরকারী যেখানে আপনি এত দীর্ঘ সময় নিয়ে যাচ্ছেন তার একটি recordতিহাসিক রেকর্ড চাই।

জ্ঞোমনকে কোনও কিছুর পাইপ দেওয়া প্রতিটি লাইনের জন্য একটি টাইমস্ট্যাম্প তৈরি করে, এটি নির্দেশ করে যে সেই রেখাটি বাফারের শেষ লাইনটি কত দীর্ঘ ছিল - এটি পরবর্তী লাইনটি প্রদর্শিত হতে কতক্ষণ সময় নিয়েছিল। ডিফল্টরূপে, জ্ঞোমন প্রতিটি লাইনের মধ্যবর্তী সময় সেকেন্ডে প্রদর্শন করবে তবে তা কনফিগারযোগ্য।

জ্ঞানমন ডেমো


8

@ জনতার উত্তরে যুক্ত করা:

সংযোজন %Nকরতে date +%sআমাদের ন্যানোসেকেন্ড সঠিকতা দেয়:

start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`

5

যদি আমি একটি অনুলিপি বা হ্যাশের মতো দীর্ঘস্থায়ী প্রক্রিয়া শুরু করি এবং কতক্ষণ সময় লেগেছিল তা পরে জানতে চাই, আমি কেবল এটি করি:

$ date; sha1sum reallybigfile.txt; date

যার ফলে নিম্নলিখিত ফলাফলের ফলাফল হবে:

Tue Jun  2 21:16:03 PDT 2015
5089a8e475cc41b2672982f690e5221469390bc0  reallybigfile.txt
Tue Jun  2 21:33:54 PDT 2015

মঞ্জুর, এখানে প্রয়োগ হিসাবে এটি খুব সুনির্দিষ্ট নয় এবং অতিবাহিত সময় গণনা করে না। তবে এটি ময়লা সহজ এবং কখনও কখনও আপনার সমস্ত প্রয়োজন।


4

Zsh এ আপনি ব্যবহার করতে পারেন

=time ...

ব্যাশ বা zsh এ আপনি ব্যবহার করতে পারেন

command time ...

এগুলি (বিভিন্ন প্রক্রিয়া দ্বারা) একটি বাহ্যিক কমান্ড ব্যবহার করতে বাধ্য করে।


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