আমার একটি টাইমার দরকার যা স্ক্রিপ্টের একেবারে শুরুতে শুরু হবে এবং শেষে থামবে।
time yourprogram.shসেন্টিমিডি ব্যবহার করুন:, যে @ মারিয়াস কোটোফানা ব্যাখ্যা করেছেন
আমার একটি টাইমার দরকার যা স্ক্রিপ্টের একেবারে শুরুতে শুরু হবে এবং শেষে থামবে।
time yourprogram.shসেন্টিমিডি ব্যবহার করুন:, যে @ মারিয়াস কোটোফানা ব্যাখ্যা করেছেন
উত্তর:
আপনি যদি সেকেন্ডের মধ্যে সময়কাল চান তবে শীর্ষে ব্যবহার করুন
start=$SECONDS
এবং শেষে
duration=$(( SECONDS - start ))
আপনি লিনাক্সের অন্তর্নির্মিত timeকমান্ডটি ব্যবহার করতে পারেন । ম্যান পৃষ্ঠা থেকে:
সময় কম্যান্ড [যুক্তি]
সময় নির্ধারণ করে যে COMMAND স্ট্রিং থেকে FORMAT দ্বারা ব্যবহৃত সংস্থানগুলি সম্পর্কে কোন তথ্য প্রদর্শন করবে। যদি কমান্ড লাইনে কোনও বিন্যাস নির্দিষ্ট না করা থাকে তবে TIME পরিবেশ পরিবর্তনশীল সেট করা থাকে তবে এর মান বিন্যাস হিসাবে ব্যবহৃত হয় its
cleanup.shস্ক্রিপ্ট সময় করতে , ব্যবহার করুন:
$ time cleanup.sh
timeআপনি ব্যবহার করছেন তা জানুন । hackernoon.com/…
আমি বুঝতে পেরেছি এটি একটি বেশ পুরানো প্রশ্ন তবে যখনই আমি চাই / কিছু চালাতে কত সময় নিয়েছে তা জানতে আমার প্রয়োজনের জন্য এটি করার জন্য এই উপায়।
বাশের একটি অভ্যন্তরীণ ভেরিয়েবল নামের আকারে একটি অন্তর্নির্মিত সেকেন্ডের টাইমার রয়েছে SECONDS(দেখুন: অন্যান্য অভ্যন্তরীণ ভেরিয়েবলগুলির জন্য এখানে দেখুন )
SECONDS=0আপনি রান সময় যা যা যাচাই করছেন তার আগে রাখুন । কোনও ভাল ফলাফল পাওয়ার জন্য কোনও ব্যবহারকারীর ইনপুট হওয়ার পরে এটি হওয়া দরকার তাই আপনি যদি তথ্যের জন্য অনুরোধ করেন, তা প্রম্পট (গুলি) এর পরে রাখুন।
তারপরে, আপনি যা যা পরীক্ষা করছেন তার শেষে রাখুন:
if (( $SECONDS > 3600 )) ; then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"
elif (( $SECONDS > 60 )) ; then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"
else
echo "Completed in $SECONDS seconds"
fi
আপনি যদি কেবল সেকেন্ডের মধ্যে সময়টি জানতে চান, আপনি উপরেরটি সহজ করতে পারেন:
echo "Completed in $SECONDS seconds"
উদাহরণ হিসাবে:
read -rp "What's your name? " "name"
SECONDS=0
echo "Hello, $name"
if (( $SECONDS > 3600 )) ; then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"
elif (( $SECONDS > 60 )) ; then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"
else
echo "Completed in $SECONDS seconds"
fi
date +%T -d "1/1 + $SECONDS sec"(২৪ ঘন্টা-এরও কম সীমাবদ্ধ তবে আপনিও কিছু দিন যুক্ত করতে মানিয়ে নিতে পারেন)
#!/bin/bash
start=$(date +%s)
#
# do something
sleep 10
#
#
end=$(date +%s)
seconds=$(echo "$end - $start" | bc)
echo $seconds' sec'
echo 'Formatted:'
awk -v t=$seconds 'BEGIN{t=int(t*1000); printf "%d:%02d:%02d\n", t/3600000, t/60000%60, t/1000%60}'
@ আনাস্ক এই উত্তরের জন্য একটি চতুর সমাধান করুন, আমি কেবল $SECONDSনতুন তৈরির পরিবর্তে নেটিভ ব্যবহার করার পরামর্শ দিই
awk -v t=$SECONDS 'BEGIN{t=int(t*1000); printf "Elapsed Time (HH:MM:SS): %d:%02d:%02d\n", t/3600000, t/60000%60, t/1000%60}'
printfএবং বিভাগটির উদ্দেশ্য হ'ল অতিবাহিত সেকেন্ডগুলিকে সংশ্লিষ্ট unityক্য সময়, মিনস, সেকেন্ডগুলিতে রূপান্তর করা।
timeকমান্ড (সময় ./script.sh) পরিমাপ করতে , বর্তমান সময়ের ব্যবহারেরdateকমান্ড প্রিন্ট আউট করা ইত্যাদি।