คำถามติดแท็ก time-utility

"เวลา" เป็นยูทิลิตี้บรรทัดคำสั่งสำหรับรันโปรแกรมอื่นและสรุปการใช้ทรัพยากร


3
วิธีรันไทม์บนหลายคำสั่งและเขียนเอาต์พุตเวลาไปยังไฟล์?
ฉันต้องการเรียกใช้timeคำสั่งเพื่อวัดเวลาของคำสั่งต่างๆ สิ่งที่ฉันต้องการจะทำคือ: วัดเวลาในการทำงานของพวกเขาทั้งหมดเข้าด้วยกัน เขียนtimeเอาต์พุตไปยังไฟล์ เขียนSTDERRจากคำสั่งที่ฉันวัดSTDERR สิ่งที่ฉันไม่ต้องการทำคือ เขียนคำสั่งต่าง ๆ ลงในสคริปต์แยกต่างหาก (เพราะเหตุใดเพราะทั้งหมดนี้เป็นสคริปต์ที่ฉันสร้างขึ้นมาโดยทางโปรแกรมแล้วและการสร้างสคริปต์ชั่วคราวอีกอันหนึ่งจะเป็นระเบียบมากกว่าที่ฉันต้องการ) สิ่งที่ฉันพยายาม: /usr/bin/time --output=outtime -p echo "a"; echo "b"; ใช้งานไม่ได้ทำงานtimeเฉพาะกับเครื่องแรกเท่านั้น /usr/bin/time --output=outtime -p ( echo "a"; echo "b"; ) ไม่ทำงาน(เป็นโทเค็นที่ไม่คาดคิด /usr/bin/time --output=outtime -p { echo "a"; echo "b"; } ไม่ทำงาน "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" /usr/bin/time --output=outtime -p ' echo "a"; echo "b";' ไม่ทำงาน "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" …

5
ทำให้ bash ใช้คำสั่ง `time 'จากภายนอกแทนที่จะใช้เชลล์ในตัว
ฉันจะทำให้ bash ใช้ time binary (/ usr / bin / time) เป็นค่าเริ่มต้นแทนที่จะเป็นคีย์เวิร์ดเชลล์ได้อย่างไร? which timeการส่ง/usr/bin/time type timeคืนการtime is a shell keyword รันtimeกำลังดำเนินการคำหลักเชลล์: $ time real 0m0.000s user 0m0.000s sys 0m0.000s $ /usr/bin/time Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose] [--portability] [--format=format] [--output=file] [--version] [--quiet] [--help] command [arg...] enable -n …

3
ฉันจะเปลี่ยนทิศทางเอาต์พุต "time" และเอาต์พุตคำสั่งไปยังไพพ์เดียวกันได้อย่างไร
fooสมมติว่าฉันมีไบนารีที่เรียกว่า หากฉันต้องการเปลี่ยนเส้นทางผลลัพธ์fooไปยังกระบวนการอื่นbarฉันสามารถเขียน./foo | barได้ ในทางกลับกันถ้าฉันต้องการtimefoo และเปลี่ยนเส้นทางผลลัพธ์ของtimeฉันสามารถเขียน, time (./foo) | bar. คำถามของฉันคือฉันจะติดเอาท์พุทของtimeไปยังจุดสิ้นสุดของการส่งออกfooและท่อผ่านท่อเดียวกันได้อย่างไร วิธีการแก้ปัญหาต่อไปนี้เป็นไม่ได้สิ่งที่ฉันกำลังมองหาเพราะมันเริ่มต้นสองกรณีแยกต่างหากของกระบวนการในขณะที่ฉันต้องการท่อที่ใช้ร่วมกันเดียวกับเช่นเดียวของbarbar time (./foo | bar) | bar สำหรับผู้ที่อยากรู้อยากเห็นเหตุผลที่ไม่ต้องการเริ่มต้นสองอินสแตนซ์ของbarเพราะbarเป็นเครือข่ายลูกค้าและฉันต้องการข้อมูลเวลาที่จะถูกส่งไปยังเซิร์ฟเวอร์เป็นส่วนหนึ่งของhttp POSTข้อความเดียวกันเป็นผลลัพธ์ของกระบวนการ

1
ทำไมเวลา "ของจริง" ถึงสูงกว่าเวลาที่“ ผู้ใช้” และ“ sys” รวมกันมาก?
ฉันดำเนินการและtimeมีคำสั่งมากมาย (เช่นnslookup) ผ่านSSHและฉันรวบรวมเวลาทั้งหมดที่จำเป็นสำหรับการให้บริการโดยนัยเพื่อให้สมบูรณ์ (เช่นDNS ) ดังนั้นฉันจึงรวบรวมuserและsysเวลาตามrealเวลานับเวลาที่กระบวนการของฉันปิดกั้นซึ่งฉันไม่ต้องการ ... ฉันเดา แต่การทดสอบบางอย่างของฉันมีผลลัพธ์เช่น: real 3m22.033s user 0m0.009s sys 0m0.014s ฉันทำการทดสอบเหล่านี้ในกล่อง linux ที่มีทรัพยากร จำกัด แต่ถึงกระนั้นrealเวลาก็ยังสูง นี่จะบ่งบอกว่ากล่องนั้นยุ่งมากที่ใช้กระบวนการต่าง ๆ หรือไม่? มันยังคงถูกต้องหรือไม่ที่จะเพิ่มขึ้นuserและsysเวลาที่จะรู้ว่าบริการใช้เวลาเท่าไหร่?

2
มีบางเวลาเหมือนกันที่บันทึก I / O และ CPU
ฉันสามารถตรวจสอบเวลาทำงานของกระบวนการได้อย่างรวดเร็วด้วยtime: x@y ~ $ time foo real 0m14.299s user 0m4.770s sys 0m0.440s มีวิธีที่ฉันสามารถรับข้อมูลเดียวกันสำหรับการใช้ I / O และ CPU ของอาร์กิวเมนต์ที่บันทึกใน STDOUT หรือไม่ คำสั่งหรือยูทิลิตีอย่างง่าย ๆtimeน่าจะเหมาะสมที่สุดที่ฉันเพิ่งผ่านการโต้แย้งของสิ่งที่ฉันต้องการเรียกใช้: x@y ~ $ stats foo wallclock runtime 0m14.299s I/O reads 290,420 KB I/O writes 239,429 KB peak CPU usage 18.62% mean CPU usage 1.44% # etc.

5
คำสั่งเวลาเฉลี่ยวิธีการ?
ฉันกำลังใช้timeคำสั่งของฉันอยู่ ตอนนี้เพื่อเฉลี่ยการวัดฉันต้องการเรียกใช้และเวลาที่คำสั่งของฉันตามจำนวนครั้งที่ระบุและรับผลลัพธ์ด้วยค่าเฉลี่ยที่คำนวณและส่วนเบี่ยงเบนมาตรฐาน ผลลัพธ์จะเป็นเช่น: avgtime -n 100 my_command real 0m5.388s stdev 0m0.068s user 0m5.380s stdev 0m0.067s sys 0m0.004s stdev 0m0.000s มีเครื่องมือ UNIX สำหรับสิ่งนี้หรือไม่? GNU / Linux มีหรือไม่

1
การใช้คำสั่ง“ time” ในตัวในทุบตีมากกว่าคำสั่งภายนอก
การทำงานกับtimeคำสั่งผมมาในสถานการณ์ที่ฉันควรใช้ในตัวมากกว่าคำสั่งเวลาtime GNU ภายนอก /usr/bin/timeดังนั้นฉันจะทำสิ่งนี้ได้อย่างไร ฉันเห็นบางที่ใช้enableและ / หรือcommandจะช่วย แต่พวกเขาไม่ได้ นี่เป็นกรณีการใช้งาน: watch "time ls" ซึ่งใช้/usr/bin/timeคำสั่งภายนอกซึ่งฉันไม่ต้องการ! สิ่งนี้เกิดขึ้นเมื่อtimeเรียกใช้ฟังก์ชันทุบตีภายในเมื่อฉันรันtime lsบนเทอร์มินัลเช่นนี้ $ time ls โปรดทราบว่าได้รับคำตอบตรงข้ามแน่นอน: ทำให้ทุบตีใช้คำสั่ง `time 'ภายนอกมากกว่าเชลล์ในตัว มีความแตกต่างมากมายกับสองคำสั่ง ภายในtimeมีความแม่นยำมากขึ้น (ซึ่งฉันต้องการ) แต่คำสั่งภายนอกมีตัวเลือกเพิ่มเติม (ซึ่งฉันไม่ต้องการ)

2
เปลี่ยนทิศทางเอาต์พุตของคำสั่งใน 'time command'
ฉันกำลังพยายามกำหนดเวลาบางสิ่งที่ใช้: /usr/bin/time myCommand อย่างไรก็ตามเนื่องจาก/usr/bin/timeเขียนไปยัง stderr ถ้าmyCommandเขียนไปยัง stderr ด้วยฉันจะได้รับมากกว่าเวลาของสตรีม สิ่งที่ฉันต้องการจะทำคือเปลี่ยนเส้นทางเอาต์พุตทั้งหมดของ myCommand ไป/dev/nullแต่ยังคงเขียนเอาต์พุตของเวลาไปยัง stderr เมื่อใช้ตัวอย่างmyCommandที่เขียนไปยัง stderr ของls /nofileเราจะเห็นว่า (เห็นได้ชัด) ว่าไม่มีเอาต์พุตเลยด้วยต่อไปนี้: $ /usr/bin/time ls /nofile 2> /dev/null $ โดยไม่มีการเปลี่ยนเส้นทางใด ๆ เราจะเห็นทั้งเอาต์พุตจากls(ไปยัง stderr) และเอาต์พุตจากเวลา (เช่นไปยัง stderr): $ /usr/bin/time ls /nofile ls: cannot access /nofile: No such file or directory 0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata …

1
`\ time ',` t \ ime` และ `\ cd` จริง ๆ ทำอะไร? (สนุกกับแบ็กสแลชในเปลือกหอย)
ขณะที่คุยมากกว่าความแตกต่างระหว่าง/usr/bin/timeและเปลือก (ทุบตีและ zsh) ในตัวtimeใครบางคนบอกว่าหนึ่งสามารถใช้เป็นชวเลขที่จะได้รับ\time/usr/bin/time ครั้งแรกดูเหมือนว่าจะเป็นทางลัดที่ไร้เดียงสา แต่คำถามก็เกิดขึ้น ทำไมถึงt\imeทำงานเช่นกัน? ทำไมถึง\cdเปลี่ยนได/usr/bin/cdเร็กตอรี่ถึงแม้ว่า¹จะไม่เป็นเช่นนั้น? ดังนั้นเห็นได้ชัดว่าจะไม่เทียบเท่ากับ\foo $(which foo)คำถามคือตอนนี้: พฤติกรรมที่สังเกตได้ของ\fooทั้งใน bash และ zsh ในทุก ๆ ด้านที่ครอบคลุมโดยนิยาม POSIX ของเชลล์และถ้าเป็นเช่นนั้นทำไมมันมีพฤติกรรมเหมือนมัน? เชิงอรรถ 1: /usr/bin/cdคือบนระบบของฉัน #!/bin/sh builtin cd "$@"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.