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

這個perl腳本打印兩個零。它從命令行工作。但是在cron作業中執行此腳本時,它會返回一個零和一個-1。在cron作業中執行perl腳本,「system」命令返回-1

-1表示xxxx從未執行過。我喜歡在cron作業中直接執行xxxx。 xxxx執行正常。 perl腳本系統日期在cron工作。爲什麼在cron作業中的perl腳本系統xxxx從未執行過?

+3

在cron作業中啓動Perl時,可能會有與您期望的不同的當前目錄。嘗試使用'xxxx'的絕對路徑。 – 2013-04-12 08:03:18

+0

@ dan1111和不同的PATH環境變量 – PSIAlt

+0

@PSIAlt,是的,但我懷疑是這種情況,因爲只是把'xxxx'放在cron作業中。 – 2013-04-12 09:56:26

回答

1

這裏的情況是因爲行結束。它是b.sh中的a.sh和set Path & perl script.pl中的set Path & xxxx。 cron工作中的a.sh正在工作,b.sh不是。不同之處在於Unix格式的a.sh,Win格式的b.sh。我改變b.sh的格式,它也在工作。 -_- ||

0

嘗試編輯您的cronjob以強制正確的目錄。例如:

cd cronjobs && perl cronjob.pl