ฉันพยายามวัดเวลาดำเนินการของกระบวนการที่ฉันเรียกใช้ผ่านบรรทัดคำสั่ง (เช่นฉันต้องการค้นหาระยะเวลาที่กระบวนการจะเสร็จสิ้น) มีคำสั่งใดบ้างที่ฉันสามารถเพิ่มลงในคำสั่งที่เรียกกระบวนการที่จะบรรลุผลนี้ได้หรือไม่?
ฉันพยายามวัดเวลาดำเนินการของกระบวนการที่ฉันเรียกใช้ผ่านบรรทัดคำสั่ง (เช่นฉันต้องการค้นหาระยะเวลาที่กระบวนการจะเสร็จสิ้น) มีคำสั่งใดบ้างที่ฉันสามารถเพิ่มลงในคำสั่งที่เรียกกระบวนการที่จะบรรลุผลนี้ได้หรือไม่?
คำตอบ:
เพิ่ม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ครั้งที่คำสั่งนี้คืนหรือไม่