ฉันจะรับเวลานาฬิกาแขวนผนังของกระบวนการทำงานได้อย่างไร


14

timeฉันเริ่มต้นการตรวจสอบกัญชาของไฟล์ขนาดใหญ่และไม่ต้องการที่จะเริ่มต้นใหม่ได้โดยใช้ ฉันจะได้เวลานาฬิกาวอลล์โดยไม่ใช้เวลาตอนเริ่มต้นหรือใช้dateก่อนที่จะเรียกใช้คำสั่งได้อย่างไร

คำตอบ:


12

สำหรับกระบวนการที่กำลังทำงานอยู่คุณสามารถทำได้:

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เวลา

สิ่งนี้ไม่ได้แก้ปัญหาทั้งหมดแม้ว่า พรอมต์ใหม่จะปรากฏขึ้นเมื่อกระบวนการสิ้นสุดลง แต่พรอมต์เดิมอาจค่อนข้างเก่าเมื่อคำสั่งที่จะวัดเริ่มต้นขึ้น ดังนั้นคุณจำการต่ออายุพรอมต์ก่อนที่จะเริ่มต้นคำสั่งที่รันนานหรือคุณต้องจดจำเวลาปัจจุบันเมื่อคุณต้องการทราบว่ากระบวนการปัจจุบันจะใช้เวลานานเท่าใด

สำหรับโซลูชันที่สมบูรณ์คุณต้องใช้คุณสมบัติการตรวจสอบ (ซึ่งจะบันทึกเวลาเริ่มต้นและสิ้นสุดของกระบวนการ) แต่นั่นอาจทำให้เกิดข้อมูลจำนวนมากหากไม่สามารถ จำกัด เปลือกได้


1

จากคำตอบที่ได้รับการยอมรับคุณสามารถตรวจสอบเวลาที่ผ่านไปของกระบวนการทำงานโดยใช้watch:

PID=5462
watch command ps -p "$PID" -o etime
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.