어떻게 만드는 Perl 스크립트 작업에서만 하나 복사

작업

그것은 때로는 쓸 필요는 Perl 스크립트 실행 는 경우 이같은 스크립트가 작동하지 않습니다. I.e., 하는 것을 보장 한 지점에서의 시간이 단지 하나의 인스턴스 이 스크립트입니다.

예를 들어,이 문제가 발생할 수 있습니다면 이 스크립트를 실행에 대한 크라운 분마다 그리고 때로는 실행할 수 있는 더 이상의 분입니다.

여기서 우리는 우리가 얘기하는 경우 스크립트 작동 한 서버에서 당신은지 확인하고 싶 실행하지 않은 하나 이상의 인스턴스에서 스크립트를 동일한 컴퓨터에 있습니다.

결정

가장 쉬운 방법이 이 문제를 해결하기 위해 사용하는 것이 Perl 라이브러리 Sys::RunAlone.

라이브러리와 함께 제공 Perl,그것이 설치되어야 합니다.

하는 스크립트를 만들에서 작동 중 하나는 예를 들어,당신을 추가해야 에서 기존 스크립트 use Sys::RunAlone;__END__.

여기에 예를 들어의 스크립트는 작동 중 하나에서 인스턴스:

#!/usr/bin/perl

use Sys::RunAlone;

print "working\n";

sleep 10;

__END__

이 스크립트를 실행하는 경우,그것은 텍스트가 표시됩 working 고 10 초 hang 고 기다릴,다음을 종료됩니다.

는 경우 다른 콘솔하고있는 동안 스크립트를 실행하는 실행하려고 하나 더 많은 시간을 이 실행이 실패할 것이고,코드 스크립트에서 실행되지 않:

$ perl script.pl
A copy of 'script.pl' is already running

단위 __END__ 에서 스크립트는 필수입니다. 라이브러리 Sys::RunAlone 이 단위 소지하기 위해서 로크. 이 블록하지 않고 라이브러리 Sys::RunAlone연결 스크립트 작동하지 않습니다 화면에 표시됩류 Add __END__ to end of script 'script.pl' to be able use the features of Sys::RunALone.

다른 기사