2013-10-21 5 views
0

탠덤 (논스톱) 프로세스가 생성 된 이후로 경과 된 시간을 계산하는 방법을 결정하는 데 정말로 도움이된다.탠덤 프로세스 시간 계산

예를 들어

: 는 - 나는 상태 $ proc 디렉토리, DETAIL을하고 내가 "프로세스 생성 시간"의 텍스트 시간을 얻을 때 나는 프로세스의 생성 시간을 얻을 수 있습니다 - 제가 정확하게 처리하기 때문에 얼마나 많은 시간을 계산하려면 내가 만든 초기 생각은 #TIMESTAMP (또는 #JULIANTIMESTAMP)로 현재 시간을 얻은 다음 텍스트 프로세스 생성 시간을 위의 3 또는 4 단어 형식 중 하나로 변환 한 다음 차이를 찾기 위해 빼기로 변환하는 것입니다. . 그 다음, 나는 그 차이를 텍스트로 돌려 보내 실제 시간을 얻는다.

정확하게 이것을 계산하는 데 어려움을 겪고 있습니다. 어떤 조언을 감사드립니다!

감사합니다.

답변

0

나는 올바른 생각이 있다고 생각합니다. 프로세스 생성 시간을 얻기위한 깔끔한 방법 (TACL에서)이 없어서 상태 명령 출력을 처리해야합니다. 변수를 OUTV 매개 변수로 사용하지 않으므로 파일을 사용할 수 있으며 TACL 대신 파일에서 처리 할 수 ​​있습니다.

타임 스탬프를 #CONTIME이 제공하는 공백으로 구분 된 목록으로 변환 한 다음 줄리안 타임 스탬프 (아래 참조)로 변환했습니다.

이렇게하면 생성 시간 소인을 직접 얻기 위해 PROCESS_GETINFOLIST_를 호출 할 수있는 (말) C에서 훨씬 더 쉬울 것입니다. OSS 쉘에서 더 쉽게 타임 스탬프를 처리 할 수 ​​있습니다.

?TACL ROUTINE 
#FRAME 

#PUSH tempfile 
#SET tempfile XXTEMPXX  


[#DEF MakeTimeList ROUTINE |BODY| 
#FRAME 
#PUSH month day year time hour min sec centi milli 

SINK [#ARGUMENT/VALUE month/WORD] 
SINK [#ARGUMENT/VALUE day/WORD] 
SINK [#ARGUMENT COMMA] 
SINK [#ARGUMENT/VALUE year/NUMBER] 
SINK [#ARGUMENT/VALUE hour/NUMBER] 
SINK [#ARGUMENT/VALUE min/NUMBER] 
SINK [#ARGUMENT/VALUE sec/NUMBER] 
SINK [#ARGUMENT/VALUE centi/NUMBER] 

[#CASE [month] 
    |January| #SET month 1 
    |February| #SET month 2 
    |March| #SET month 3 
    |April| #SET month 4 
    |May| #SET month 5 
    |June| #SET month 6 
    |July| #SET month 7 
    |August| #SET month 8 
    |September| #SET month 9 
    |October| #SET month 10 
    |November| #SET month 11 
    |December| #SET month 12 
] 

#SET milli [#CHARGET centi 4 TO 6] 
#SET centi [#CHARGET centi 1 TO 3] 

#RESULT [year] [month] [day] [hour] [min] [sec] [centi] [milli] 
#UNFRAME 
] 

#PUSH start now lines line pos process 


SINK [#ARGUMENT/VALUE process/ PROCESSNAME] 
[#IF NOT [#PROCESSEXISTS [process]] |THEN| 
    #OUTPUT [process] does not exist 
] 

status/out [tempfile]/[process],detail 
edit [tempfile];cqab/:/ /a;cqab/./ /a;exit 
filetovar [tempfile] lines 
SINK [#PURGE [tempfile]] 

#SET pos [#LINEFIND lines 1 Process Creation Time] 
[#IF pos > 1 |THEN| 
    #SET line [#LINEGET lines [pos]] 
    #SET start [#CHARGET line 23 TO [#CHARCOUNT line]] 
    #SET start [MakeTimeList [start]] 
    #SETMANY start, [#COMPUTETIMESTAMP [start] ] 

    #SETMANY now, [#COMPUTETIMESTAMP [#CONTIME [#TIMESTAMP]] 0] 
    #OUTPUT [#COMPUTE ([now] - [start])/1000000] seconds have elapsed 
] 

#UNFRAME