2013-04-12 3 views
1
my $systemDateState = system "date"; 
my $systemXXXXState = system "xxxx";#xxxx is a program 
print "$systemDateState\n"; 
print "$systemXXXXState\n"; 

Этот скрипт perl печатает два нуля. Он работает из командной строки. Но при выполнении этого скрипта в задании cron он возвращает один ноль и один -1.Выполнение скрипта perl в задании cron, команда «system» return -1

-1 означает, что xxxx никогда не выполнялся. Я пытаюсь выполнить xxxx непосредственно в задании cron. xxxx выполняется нормально. И дата системы perl-скрипта в работе cron. Почему perl-скрипт-система xxxx в работе cron никогда не выполнялась?

+3

Perl при запуске в задании cron может иметь другой текущий каталог, чем вы ожидаете. Попробуйте использовать абсолютный путь к 'xxxx'. – 2013-04-12 08:03:18

+0

@ dan1111 и другая переменная окружения PATH – PSIAlt

+0

@PSIAlt, да, но я сомневаюсь, что это так, потому что просто «xxxx» в работе cron работает. – 2013-04-12 09:56:26

ответ

1

Дело в том, что линии заканчиваются. Это set Path & xxxx в a.sh и set Path & perl script.pl в b.sh. a.sh в работе cron работает, b.sh - нет. Разница заключается в a.sh в Unix-формате, b.sh в Win-формате. Я меняю формат b.sh, он тоже работает. -_- ||

0

попытайтесь отредактировать свой cronjob, чтобы заставить правильный каталог. Пример:

cd cronjobs && perl cronjob.pl 
Смежные вопросы