2013-10-17 2 views
2

crontab을 사용하지 않고 1 분 간격으로 Perl 스크립트 (test.pl)를 실행하려고합니다. /etc/cron.d/에 cron 작업을 작성할 수있는 권한이 없기 때문에 Perl 모듈 Schedule :: Cron을 사용하기 시작했습니다.스케줄 :: Cron이 메인 스크립트로 돌아 가지 않음

내가 같이 지속적으로 실행되는 스크립트에 test.pl에 대한 코드와 해당하는 코드를 포함했다 :

my $cron = new Schedule::Cron(sub {}); 
$cron->add_entry("* * * * *",\&test_function); 
$cron->run(nofork=>1) 

문제가되면,

$ cron-> 실행을 (nofork => 1)

은 주 스크립트로 되돌아 가지 않고 그 이후에 주어진 코드를 실행하지 않습니다.

(Schedule :: Cron을 사용하여) 백엔드에서 cron을 실행 한 다음 나머지 스크립트를 실행하기 위해 기본 스크립트로 되돌아 오는 해결책이 필요합니다.

도와주세요

답변

6

변경 :

$cron->run(nofork=>1) 

에 :

$cron->run(detach=>1) 

이 메인 스크립트에 즉시 반환합니다. Schedule::Cron에서 (분리) :

을 (만 UNIX)를 스케줄러 프로세스가 현재 프로세스에서 분리 true 값으로 설정된 경우입니다.

0

백그라운드 (데몬) 프로세스를 포크해야합니다. 그래도 nofork => 1으로 차단하고 있습니다.

+1

... 그렇다면 특히 OP가해야 할 일은 무엇입니까? – toolic

+0

포인트가 찍혔습니다. 엉성한 글쓰기에 사과드립니다. –

관련 문제