Câu trả lời:
Đối với một quy trình đang chạy, bạn có thể làm điều này:
PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime
Là một tính năng chung, bạn có thể sửa đổi nhắc nhở shell của bạn. Đây là định nghĩa nhắc bash của tôi:
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:> "
Phần có liên quan cho bạn là \t
thời gian.
Điều này không giải quyết tất cả các vấn đề, mặc dù. Dấu nhắc mới sẽ hiển thị khi quá trình kết thúc nhưng dấu nhắc cũ có thể đã khá cũ khi lệnh cần đo được bắt đầu. Vì vậy, hoặc bạn nhớ làm mới lời nhắc trước khi bắt đầu các lệnh chạy dài hoặc bạn phải nhớ thời gian hiện tại khi bạn muốn biết quá trình hiện tại sẽ mất bao lâu.
Đối với một giải pháp hoàn chỉnh, bạn cần một tính năng kiểm toán (ghi lại thời gian bắt đầu và kết thúc của các quy trình). Nhưng điều đó có thể gây ra một lượng dữ liệu khổng lồ nếu nó không thể bị giới hạn trong hệ vỏ.