실행 중인 프로세스의 벽시계 시간을 얻는 방법은 무엇입니까?

실행 중인 프로세스의 벽시계 시간을 얻는 방법은 무엇입니까?

대용량 파일에 대한 해시 확인을 시작했는데 를 사용하고 싶지 않습니다 . 명령을 호출하기 전에 time시간으로 시작하거나 시간을 사용하지 않고 벽시계 시간을 얻으려면 어떻게 해야 합니까 ?date

답변1

실행 중인 프로세스의 경우 다음을 수행할 수 있습니다.

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지금입니다.

그러나 그것이 모든 문제를 해결하는 것은 아닙니다. 프로세스가 끝나면 새로운 프롬프트가 표시되지만 측정할 명령이 시작될 때쯤에는 이전 프롬프트가 꽤 오래되었을 수 있습니다. 따라서 장기 실행 명령을 시작하기 전에 프롬프트를 업데이트하는 것을 기억하거나 현재 프로세스에 소요되는 시간을 알고 싶을 때 현재 시간을 기억해야 합니다.

완전한 솔루션을 위해서는 감사 기능(프로세스의 시작 및 종료 시간 기록)이 필요합니다. 하지만 셸에만 국한할 수 없다면 엄청난 양의 데이터가 발생할 수 있습니다.

답변2

허용된 답변을 바탕으로 다음을 사용하여 실행 중인 프로세스의 경과 시간을 지속적으로 모니터링할 수도 있습니다 watch.

PID=5462
watch command ps -p "$PID" -o etime

관련 정보