2012-02-10 162 views
1

這是我的Perl腳本,它只是一個測試。Cron作業未執行Perl腳本

#!/usr/local/bin/perl 
open (MYFILE, '>>data.txt'); 
print MYFILE "Worked!\n"; 
close (MYFILE); 

我在cgi-bin目錄保存爲test.pl/

當我運行一個shell命令,

根@ SRV ./test.pl 它工作正常,並增加了「成功了!」在data.txt文件中成功。

但當我添加此在的cronjob運行每分鐘它不工作 代碼:

*/1 * * * * root cd /home/testing/public_html/cgi-bin;./test.pl 

我也試過

*/1 * * * * cd /home/testing/public_html/cgi-bin;./test.pl 

我想這是我的環境cron的設置不正確,但我不知道如何解決它。

我在crontab中使用此執行ENV

*/1 * * * * env > /home/tmp2/env.cron 

這裏是結果:

SHELL=/bin/sh 
USER=root 
PATH=/usr/local/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin 
PWD=/root 
SHLVL=1 
HOME=/root 
LOGNAME=root 
_=/bin/env 

然後我出口我使用另一個殼的ENV文件env.shell 結果:

HOSTNAME=srv.testing.com 
SELINUX_ROLE_REQUESTED= 
TERM=xterm 
SHELL=/bin/bash 
HISTSIZE=1000 
SSH_CLIENT=xxx.xx.xxx.xx 58048 22 
SELINUX_USE_CURRENT_RANGE= 
QTDIR=/usr/lib64/qt-3.3 
QTINC=/usr/lib64/qt-3.3/include 
SSH_TTY=/dev/pts/0 
USER=root 
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=0$ 
MAIL=/var/spool/mail/root 
PATH=/usr/local/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin 
PWD=/home/tmp2 
JAVA_HOME=/usr/local/jdk 
EDITOR=pico 
LANG=en_US.UTF-8 
SELINUX_LEVEL_REQUESTED= 
HISTCONTROL=ignoredups 
SHLVL=1 
HOME=/root 
LS_OPTIONS=--color=tty -F -a -b -T 0 
LOGNAME=root 
VISUAL=pico 
QTLIB=/usr/lib64/qt-3.3/lib 
CVS_RSH=ssh 
CLASSPATH=.:/usr/local/jdk/lib/classes.zip 
SSH_CONNECTION=xxx.xx.xxx.xx 58048 xx.xx.xx.xx 22 
LESSOPEN=|/usr/bin/lesspipe.sh %s 
G_BROKEN_FILENAMES=1 
_=/bin/env 
OLDPWD=/home/testing/public_html/cgi-bin 

我複製了shell路徑

PATH=/usr/local/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin 

並將其添加到/ etc/crontab中,然後重新啓動cron,但仍無法正常工作。所以,我將其改回正常,然後使用crontab -e將它添加到crontab中,但它仍然沒有幫助。

我不知道是怎麼回事,

謝謝您的時間

+0

從處理文件時檢查錯誤開始:將第二行更改爲「open((MYFILE,'>>','data.txt')|| die」Can not get data.txt:$!「 ;'並且再次運行腳本 – Konerak 2012-02-10 08:20:51

回答

0

嘗試

* * * * * root cd "/home/testing/public_html/cgi-bin"; ./test.pl 
+0

nano/var/log/cron顯示: Feb 10 13:04:01 srv CROND [31813] :(根)CMD(cd「/ home/testing/public_html/cgi-bin 「; ./test.pl) 它總是運行,但它不執行文件data.txt文件仍然是空的,如果我使用shell命令./test.pl運行它,那麼腳本將執行並我在data.txt中看到「Worked!」 對不起,這並沒有幫助,而且我用不同的腳本嘗試過它,它永遠不會工作。 – Zubair 2012-02-10 11:05:08

1

我終於解決了!

我更改的crontab -e

PATH=/usr/local/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin 

這是在我的外殼相同的路徑,你可以得到它,如果你這樣做 根#ENV的路徑> env.shell 根#納米env.shell 然後從那裏複製路徑,並使用crontab將其粘貼到crontab -e

然後,最後一步是將其添加到crontab -e中,但在添加了路徑之後,我在/ etc/cron中創建了cronjob。 d/sysstat,這就是爲什麼它不起作用。

現在,它的工作原理和主要問題是PATH。

謝謝你的時間每個人。