Cron作业未执行Perl脚本
这是我的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中,但它仍然没有帮助。
我不知道是怎么回事,
谢谢您的时间
尝试
* * * * * root cd "/home/testing/public_html/cgi-bin"; ./test.pl
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
我终于解决了!
我更改的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。
谢谢你的时间每个人。
从处理文件时检查错误开始:将第二行更改为“open((MYFILE,'>>','data.txt')|| die”Can not get data.txt:$!“ ;'并且再次运行脚本 – Konerak 2012-02-10 08:20:51