2009-09-11 4 views
0

로컬 컴퓨터에있는 Perl 스크립트를 사용하여 원격 컴퓨터에서 여러 배치 파일을 실행하고 있는데이 배치 파일을 장기간 실행하고 싶습니다.Perl을 사용하여 원격 프로세스를 시작하고 완료 될 때까지 기다리지 않으려면 어떻게해야합니까?

문제는 로컬 컴퓨터에서 실행중인 Perl 프로그램이 배치 파일이 끝난 후에 만 ​​중지되고 이후 명령을 실행한다는 것입니다.

원격 컴퓨터에서 배치 파일을 실행하고 중단하지 않고 Perl 스크립트의 나머지 명령을 실행하고 싶습니다.

도와주세요.

답변

2

어떻게 원격 프로세스를 실행하고 있습니까? 최선의 대답은 아마도 특정 구현에 달려있을 것입니다. 그러나 Net :: SSH 또는 Expect 또는 RPC 메커니즘과 같은 것을 사용한다고 가정하면 가장 쉬운 방법은 원격 작업을 실행하고 스크립트로 계속 진행하는 새로운 프로세스 인 fork입니다.

my $pid = fork; 
if ((defined $pid) and $pid == 0) {  
    # child process 
    do_remote_batch_jobs(); 
} elsif (defined $pid) { 
    # parent process 
    do_other_stuff(); 
} else { 
    # fork error 
    die "Unable to fork: $!"; 
} 
+0

나는 내 $ 명령 = "RSH 펄 <펄 프로그램의 경로 \ 펄 program_name.pl>를 RSH를 사용하여 원격 프로세스를 실행하고 배치 파일 을 실행하려면이 배치 파일은 성공적으로 실행되고 있지만 배치 파일이 끝날 때까지 로컬 시스템에있는이 시스템 ($ 명령) 이후의 명령은 실행되지 않습니다. –

1

예 포크를 사용할 수 있지만 더 나은 해결책은 배치 작업을 허용하고 해당 ID를 반환하는 원격 시스템에 스크립트를 설치하는 것입니다.
또한 제출 된 작업의 현재 상태는 동일한 스크립트를 사용하여 검색 할 수 있습니다. 이렇게하면 클라이언트 (즉, 컴퓨터)가 관리 작업과 독립적입니다. 원격 시스템에 내가 만든 펄 프로그램, 시스템 ($ 명령)

관련 문제