time
ฉันเริ่มต้นการตรวจสอบกัญชาของไฟล์ขนาดใหญ่และไม่ต้องการที่จะเริ่มต้นใหม่ได้โดยใช้ ฉันจะได้เวลานาฬิกาวอลล์โดยไม่ใช้เวลาตอนเริ่มต้นหรือใช้date
ก่อนที่จะเรียกใช้คำสั่งได้อย่างไร
time
ฉันเริ่มต้นการตรวจสอบกัญชาของไฟล์ขนาดใหญ่และไม่ต้องการที่จะเริ่มต้นใหม่ได้โดยใช้ ฉันจะได้เวลานาฬิกาวอลล์โดยไม่ใช้เวลาตอนเริ่มต้นหรือใช้date
ก่อนที่จะเรียกใช้คำสั่งได้อย่างไร
คำตอบ:
สำหรับกระบวนการที่กำลังทำงานอยู่คุณสามารถทำได้:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
ในฐานะคุณสมบัติทั่วไปคุณสามารถแก้ไขเชลล์พรอมต์ของคุณได้ นี่คือคำจำกัดความของพรอมต์ bash ของฉัน:
TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "
ส่วนที่เกี่ยวข้องกับคุณคือ\t
เวลา
สิ่งนี้ไม่ได้แก้ปัญหาทั้งหมดแม้ว่า พรอมต์ใหม่จะปรากฏขึ้นเมื่อกระบวนการสิ้นสุดลง แต่พรอมต์เดิมอาจค่อนข้างเก่าเมื่อคำสั่งที่จะวัดเริ่มต้นขึ้น ดังนั้นคุณจำการต่ออายุพรอมต์ก่อนที่จะเริ่มต้นคำสั่งที่รันนานหรือคุณต้องจดจำเวลาปัจจุบันเมื่อคุณต้องการทราบว่ากระบวนการปัจจุบันจะใช้เวลานานเท่าใด
สำหรับโซลูชันที่สมบูรณ์คุณต้องใช้คุณสมบัติการตรวจสอบ (ซึ่งจะบันทึกเวลาเริ่มต้นและสิ้นสุดของกระบวนการ) แต่นั่นอาจทำให้เกิดข้อมูลจำนวนมากหากไม่สามารถ จำกัด เปลือกได้
จากคำตอบที่ได้รับการยอมรับคุณสามารถตรวจสอบเวลาที่ผ่านไปของกระบวนการทำงานโดยใช้watch
:
PID=5462
watch command ps -p "$PID" -o etime