스크립트 재생을 사용하는 방법은 무엇입니까?

스크립트 재생을 사용하는 방법은 무엇입니까?

다음을 통해 터미널 작업을 재생할 수 있다는 것을 알고 있습니다.

scriptreplay /path/to/$STARTTIME-timing.txt /path/to/$STARTTIME-log.txt

하지만 예를 들어 2분 부터 3 까지의 작업을 어떻게 다시 재생할 수 있습니까 ? scriptreplay"가속/감속" 옵션만 사용할 수 있나요?

답변1

scriptreplayJoey Hess가 제공하는 공개 도메인 버전의 Perl이 있습니다 .스크립트 재생.

시작/끝 기능을 추가하도록 이를 조정할 수 있습니다(작성자가 공개 도메인에 구현을 배치했습니다).

다음은 두 개의 추가 매개변수, 즉 시작 시간(초 단위, 기본값은 0)과 종료 시간(선택 사항, 지정하지 않은 경우 끝까지 실행)을 사용하는 해당 코드의 빠른 수정입니다. 귀하의 필요에 맞게 조정하십시오:

#!/usr/bin/perl -w
use strict;
$|=1;
open (TIMING, shift)
        or die "cannot read timing info: $!";
open (TYPESCRIPT, shift || 'typescript')
        or die "cannot read typescript: $!";
my $divisor=shift || 1;
my $start_sec=shift || 0;
my $end_sec=shift;
# Read starting timestamp line and ignore.
<TYPESCRIPT>;
my $printing = ($start_sec > 0 ? 0 : 1);
my $elapsed = 0;
my $block;
my $oldblock='';
while (<TIMING>) {
        my ($delay, $blocksize)=split ' ', $_, 2;
        if ($printing && ($delay / $divisor > 0.0001)) {
                select(undef, undef, undef, $delay / $divisor - 0.0001);
        }
        read(TYPESCRIPT, $block, $blocksize) or die "read failure: $!";
        print $oldblock if ($printing);

        $elapsed += $delay;
        exit if ((defined $end_sec) && ($elapsed > $end_sec));
        $printing = ($elapsed > $start_sec);

        $oldblock=$block;
}
print $oldblock;

관련 정보