2012-02-25 3 views
1

유닉스에서 shell/perl/tcl 스크립트를 실행하면 평균 실행 시간의 비율을 어떻게 표시 할 수 있습니까?유닉스에서 스크립트 실행 백분율을 표시하는 방법

예 :

./scriptname 
1% Completed the execution of script.pl 
2% Completed the execution of script.pl 
... 
100% Completed the the execution of script.pl 

과 끝에 걸리는 스크립트 실행 시간을 표시.

예 출력 :

는 두 가지 방법이 있습니다
Execution time for script.pl is :50 Seconds 

답변

4

Smart::Comments 모듈을 살펴보십시오.

경과 시간은 시작 부분에서 끝 부분까지 time()의 델타를 가져옵니다.

+0

멋진 모듈, 그 모습을 볼 것입니다, 정말 고마워요 !! – user1228191

+0

+1 매우 유용한 모듈처럼 보입니다. – TLP

0

당신이 할 수 있습니다 :

  1. 인터프리터를 기본적으로 지원할 수; 이 항목은 bash, tclsh 또는 perl이 아니므로 운이 좋지 않습니다.
  2. 스크립트는 필요한 정보를 주기적으로 인쇄하여이를 수행하는 명령문을 포함 할 수 있습니다.

일반적으로 두 번째 매개 변수 만 적용 할 수 있습니다. 죄송합니다.

1

Time::Progress 모듈로 비슷한 진행 상황을 구현했습니다. 아마도 확인해 보셨을 것입니다.

+0

나는 이것이 나를 위해 효과가 있다고 생각한다. 아이디어를 가져 주셔서 감사합니다! – user1228191

+0

@user 답장에서 raina77ow에 감사하는 대신 답안의 왼쪽에있는 0 위의 위쪽 화살표를 클릭하여 답변을 upvote해야합니다. – dsolimano

0

스크립트가 실행될 때마다 (약간) 다를 수 있으므로 셸에서이 기능을 제공하지 않으므로 스크립트에서만이 작업을 수행해야합니다.

내가이 일이 힘들 수 1 0.x

에 의해 때마다 증가되는 정수와 각 함수 호출 또는 스크립트의 어떤 단계 이후에 약간의 "이정표"로 설정하는 것이 좋습니다 싶지만, 그것의 내가 아는 한 유일한 길이야.

1
#!/bin/bash 

before=`date +%s` 

# do task 
for i in {1..10}; do 
    # do steps 
    sleep 1 
    # show progress 
    echo -ne "${i}0% Completed\r" 
done 

after=`date +%s` 

duration=$((after-before)) 
echo "Execution time is: $duration Seconds" 
+0

for 루프는 우리 작업을 완료 한 후에 실행되기 때문에 유익하지 않을 수 있습니다. 감사합니다 – user1228191