답변:
유닉스 변형이 프로세스 계정을 지원하는지 확인하십시오 . 예를 들어, Ubuntu (및 대부분의 다른 Linux 배포판)에서는 Install acct http://bit.ly/software-small acct
패키지 로 제공됩니다 . 계정 서브 시스템이 작동 중이면 사용 된 프로세서 시간 (벽 시계 시간이 기록되지 않음)을 포함하여 완료된 프로세스에 대한 정보 를 표시합니다.lastcomm
특정 프로그램에 대한 타이밍이 필요한 경우를 통해 호출하십시오time
.
보다 정확한 정보가 필요하면 Linux 의 감사 서브 시스템 과 같은 더 멋진 감사 패키지를 사용하십시오 .
apt.ubuntu.com
이 질문과 답변을보기 전에 작은 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'
는 않습니다 ... 항상 작동하지 않는 것 같습니다 ...
egrep '$UID'
다음과 같은 유일한 사용자이므로 건너 뛰어야 한다는 것을 알았습니다.ps -eo uid,pid,etime | egrep $PID