프로세스가 완료된 후 얼마나 오래 실행되었는지 확인하는 방법은 무엇입니까?


13

현재 프로세스를 실제로 얼마나 오래 실행하는지 확인하기 위해 다음을 사용하고 있습니다.

ps -eo uid,pid,etime | egrep '^ *MY_ID' | egrep 'PID_OF_PROCESS'

그리고 그 결과는 다음과 같습니다.

MY_ID PID_OF_PROCESS       00:16

그러나 프로세스가 끝나면 실제로 얼마나 오래 실행되었는지 알고 싶지만 해당 정보를 찾을 수없는 것 같습니다.

답변:


14

프로세스가 이미 완료된 후에는 그러한 정보를 얻을 수 없다고 생각합니다.

해당 정보가 필요하다는 것을 미리 알고 있다면 다음과 같이 명령을 실행할 수 있습니다.

time <command>

예 :

~> time sleep 1

real        0m1.003s
user        0m0.002s
sys         0m0.001s

7

유닉스 변형이 프로세스 계정을 지원하는지 확인하십시오 . 예를 들어, Ubuntu (및 대부분의 다른 Linux 배포판)에서는 Install acct http://bit.ly/software-small acct패키지 로 제공됩니다 . 계정 서브 시스템이 작동 중이면 사용 된 프로세서 시간 (벽 시계 시간이 기록되지 않음)을 포함하여 완료된 프로세스에 대한 정보 를 표시합니다.lastcomm

특정 프로그램에 대한 타이밍이 필요한 경우를 통해 호출하십시오time .

보다 정확한 정보가 필요하면 Linux 의 감사 서브 시스템 과 같은 더 멋진 감사 패키지를 사용하십시오 .


이 답변은 이미지를 잃어 버렸습니다.
mattdm

@mattdm 아, 그것은 Ubuntu에 대한 링크에 대한 표준 링크 였으며 이미지가 imgur에서 삭제되었습니다. SE 전역에서 수백 번 사용 했어야했으며 모두 편집 할 가능성이별로 없습니다. 나는 여전히 모든 Java 문서가 움직일 때조차하지 않았기 때문에 자동 교체를 수행하는 SE를 유지하고 있습니다. apt.ubuntu.com
Gilles 'SO- 악마 그만해'

1

이 질문과 답변을보기 전에 작은 bash 스크립트를 만들었습니다. 이것은 루트 권한이없고 acct가 설치되어 있지 않거나 명령을 직접 호출하지 않은 경우에도 유용합니다 (제 경우에는 gui를 사용하여 백그라운드 프로세스를 설정합니다). 실행하기 전에 PID를 가져와야합니다 (스크립트에 PID를 추가하려는 사람이 있습니까? :)

#!/bin/bash

echo "Checking run time"
read -p "What is the pid? " PID

while true; do
    # sleep needed! used to reduce cpu usage and mass of output
    sleep 5
    ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done

이것으로 PROCESS_NAME의 PID를 찾으십시오.

ps aux | awk 'NR == 1 || /PROCESS_NAME/'

실제로 USER-ID와 PID를 결합하여 스크립트를 모호하지 않게 만들려고 시도했지만 쉽지 ps -eo uid,pid,etime | egrep '$UID[[:space:]]$PID'는 않습니다 ... 항상 작동하지 않는 것 같습니다 ...


내가 필요한 것! Centos 6.8에서 '$ PID'주위의 따옴표를 생략하고 egrep '$UID'다음과 같은 유일한 사용자이므로 건너 뛰어야 한다는 것을 알았습니다.ps -eo uid,pid,etime | egrep $PID
Chris Adams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.