ฉันพยายามวัดเวลาดำเนินการของกระบวนการที่ฉันเรียกใช้ผ่านบรรทัดคำสั่ง (เช่นฉันต้องการค้นหาระยะเวลาที่กระบวนการจะเสร็จสิ้น) มีคำสั่งใดบ้างที่ฉันสามารถเพิ่มลงในคำสั่งที่เรียกกระบวนการที่จะบรรลุผลนี้ได้หรือไม่?
ฉันพยายามวัดเวลาดำเนินการของกระบวนการที่ฉันเรียกใช้ผ่านบรรทัดคำสั่ง (เช่นฉันต้องการค้นหาระยะเวลาที่กระบวนการจะเสร็จสิ้น) มีคำสั่งใดบ้างที่ฉันสามารถเพิ่มลงในคำสั่งที่เรียกกระบวนการที่จะบรรลุผลนี้ได้หรือไม่?
คำตอบ:
เพิ่มtime
ก่อนคำสั่งที่คุณต้องการวัด ตัวอย่างเช่นtime ls
.
ผลลัพธ์จะมีลักษณะดังนี้:
real 0m0.606s
user 0m0.000s
sys 0m0.002s
ชี้แจงreal
, user
และsys
(จากman time
):
real
: เวลาที่ผ่านไปจริง (นาฬิกาแขวนผนัง) ที่ใช้โดยกระบวนการในหน่วยวินาทีuser
: จำนวน CPU-วินาทีทั้งหมดที่กระบวนการใช้โดยตรง (ในโหมดผู้ใช้) เป็นวินาทีsys
: จำนวน CPU-วินาทีทั้งหมดที่ระบบใช้ในนามของกระบวนการ (ในโหมดเคอร์เนล) เป็นวินาทีsudo apt-get install time
ถ้าคุณใช้เปลือกที่time
ไม่ได้อยู่ในตัว
time
บิวด์อิน แต่man time
จะเกี่ยวกับความสามารถในการใช้งาน (เช่น/usr/bin/time
จากtime
แพ็คเกจ) และเอาต์พุตของมันจะดูแตกต่างออกไป นอกจากนี้ใน Bash คุณสามารถhelp time
ขอความช่วยเหลือจาก builtin ได้
สำหรับบรรทัดโดยบรรทัดวัดเดลต้าพยายามแสงแดด
มันเป็นยูทิลิตี้บรรทัดคำสั่ง, บิตเช่น ts moreutils ของ, เพื่อเตรียมข้อมูลการประทับเวลาไปยังเอาต์พุตมาตรฐานของคำสั่งอื่น มีประโยชน์สำหรับกระบวนการที่ใช้เวลายาวนานซึ่งคุณต้องการให้บันทึกประวัติของสิ่งที่ใช้เวลานาน
การส่งทุกอย่างไปที่ gnomon จะเป็นการเพิ่มเวลาประทับให้กับแต่ละบรรทัดเพื่อระบุว่าบรรทัดนั้นเป็นบรรทัดสุดท้ายในบัฟเฟอร์ - นั่นคือระยะเวลาที่บรรทัดถัดไปปรากฏ โดยค่าเริ่มต้น gnomon จะแสดงวินาทีที่ผ่านไประหว่างแต่ละบรรทัด แต่ที่สามารถกำหนดค่าได้
sudo npm i gnomon -g
npm
ไม่แน่ใจว่ามันขัดกับ "ความคืบหน้า" ได้ดีเพียงใดโดยใช้ '\ r' (อยู่ในบรรทัดเดียวกัน): ในกรณีนี้ฉันต้องการให้นับทั้งหมดเป็นหนึ่งบรรทัดยาวไม่ใช่แยกกัน
คุณสามารถใช้time
:
time ls -R
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
การรันคำสั่งนี้ในเทอร์มินัลจะทำให้คุณมีเวลาโดยรวมในการจัดการไฟล์
find
คำสั่งต่อไปนี้- โดยไม่มีการ2>/dev/null
เปลี่ยนเส้นทาง - ให้ข้อความมากมาย Permission denied
อย่างไรก็ตามการเพิ่ม2>/dev/null
คำสั่งนั้นจะแบ่งtime
ส่วนของคำสั่งนั้น ต่อไปนี้ให้การประนีประนอมที่ดี: START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"
, ให้ (เช่น) /usr/lib/libname-server-2.a find command took 3 sec
เป็นผลลัพธ์เพียงอย่างเดียว
time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print
(เช่นเป็นsudo
) - หลีกเลี่ยงPermission denied
คำเตือนมากมายเหล่านั้น
บางครั้งฉันพบว่าตัวเองต้องการนาฬิกาจับเวลาเพื่อนับว่าต้องใช้เวลานานเท่าใดสำหรับการดำเนินการเช่นการบู๊ตแอปของฉันซึ่งในกรณีนี้วิธีแก้ปัญหามากมายที่นี่ไม่มีประโยชน์
สำหรับเรื่องนี้ผมชอบที่จะใช้sw
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
sw
- start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
- start a stopwatch from the last saved start time (or current time if no last saved start time exists)
- "-r" stands for --resume
time -v command
-v
ให้ข้อมูลเพิ่มเติม
real
,user
และsys
ครั้งที่คำสั่งนี้คืนหรือไม่