2011-08-14 4 views
1

명령Unix/Linux 명령 ps에서 S-output-modifier를 사용하는 방법?

ps -o time -p 21361 

작품; 그러나 내가 필요한 것은 모두 아이들을 포함하여 프로세스의 실행 시간입니다. 예를 들어, 21361이 다른 스크립트를 호출하는 bash 스크립트 인 경우 모든 자식의 실행 시간을 포함하여 총 실행 시간을 원합니다.

이제 PS 문서는 "OUTPUT 수정"을 나열

S 

Sum up some information, such as CPU usage, from dead child processes into their parent. This is useful for examining a system where a parent process repeatedly forks off short-lived children to do work. 

이 바로 소리. 불행하게도, ps 구문의 지정이 없습니다. 따라서 "S"를 어디에 배치해야하는지 전혀 알지 못합니다! 몇 시간 동안 여러 조합을 시도했지만 구문 오류가 발생하거나 "S"로 표시되지 않습니다. 그리고 인터넷에서 당신은 ps (그리고 항상 같은)에 대한 매우 기본적인 정보, 특히 "S"수정 자 찾을 수 없었습니다. 그리고 아무도 ps의 구문을 설명하지 못했습니다.

+0

부모 프로세스가 가장 오래 실행되는 프로세스가 아닐까요? 고의적으로 childern 프로세스 시간을 두 배로 계산하려고합니까? 행운을 빕니다. – shellter

답변

2

확실치 않지만, ps가이 점에서 다소 버그가있을 수 있습니다. 이것을보십시오 :

$ ps p 12104 k time 
PID TTY  STAT TIME COMMAND 
12104 ?  Ss 16:17 /usr/sbin/apache2 -k start 

$ ps p 12104 k time S 
PID TTY  STAT TIME COMMAND 
12104 ?  Ss 143:16 /usr/sbin/apache2 -k start 

이것은 ps에 BSD 옵션을 사용하고 있습니다. 그것은 내 컴퓨터에서 작동하지만 추가 헤더 행과 여분의 열을 얻을 수 있습니다. 나는 TR을 사용하여 절단 및 절단 것이다 :

$ ps p 12104 k time S | tail -n 1 | tr -s '[:space:]' | cut -d ' ' -f 4 
143:39 
$ ps p 12104 k time | tail -n 1 | tr -s '[:space:]' | cut -d ' ' -f 4 
16:17 
+2

감사합니다 !! 나는 ps가 확실히 버그가있다 : 당신의 조합은 결과를 얻기위한 ** 유일한 것 **과 같거나 더 강력해야한다 (예를 들어 불필요한 결과물을 잘라내는 것)는 효과가 없다고 말할 것이다. –

+2

반갑습니다. 내 또는 조나단의 대답이 귀하의 질문을 충족 ​​시키면, 답변으로 표시하는 것을 잊지 마십시오. – Arne

0

를 맥 OS X (10.7, 사자) 매뉴얼 페이지 말한다에 : 처리 시간이 모두 종료 어린이를 합산하여 계산

-S 변경 방법 부모 프로세스로

그래서, 난 사용하여 출력을 얻을 수 있었다 :

$ ps -S -o time,etime,pid -p 305 
    TIME  ELAPSED PID 
    0:00.12 01-18:31:07 305 
$ 

그러나, 그 출력은 '-S'옵션이 생략되었을 때부터 정말 어떤 차이가 없었다.

내가 시도 : 당신이 볼 수 있듯이

$ ps -S -o time,etime,pid -p 305 
    TIME  ELAPSED PID 
    0:00.14 01-18:43:59 305 
$ time dd if=/dev/zero of=/dev/null bs=1m count=100k 
102400+0 records in 
102400+0 records out 
107374182400 bytes transferred in 15.374440 secs (6983941055 bytes/sec) 

real 0m15.379s 
user 0m0.056s 
sys  0m15.034s 
$ ps -S -o time,etime,pid -p 305 
    TIME  ELAPSED PID 
    0:00.14 01-18:44:15 305 
$ 

/dev/null/dev/zero을 복사하는 동안 시스템 시간의 15 초 요약에 포함되지 않았다.

'-S'옵션을 수행하는 유일한 방법은이 단계에서 소스를 보는 것입니다. FreeBSD 버전에서 sumrusage을 찾을 수 있습니다 (예 : FreeBSD).

관련 문제