perl脚本为什么加到crontab中不能运行,没想明白,请教各位

perl脚本为什么加到crontab中不能运行,没想明白,请教各位

#!/usr/bin/perl -w

use strict;

my $list=`mysql -uroot -p123456 test -e"select count(*) from  test;"`;
chomp (my $date=`date +%Y%m%d`);
open (FILE,">> /export/home/gaochong/online.log") or die "$!";
if ($list =~ /(\d+)/) {
        print FILE "$date $1\n";
}
close FILE;

这个perl脚本可以在命令行下边运行。

但加到crontab下就运行不了,请教各位为什么。操作系统:solaris 5.10

-bash-3.00# crontab -l gaochong
07 14 * * * /export/home/gaochong/online.pl
文件是否设置为可运行?
先手动跑下程序

是不是没加可执行,要么就指定perl xx.pl
如果crontab进程没问题的话,check一下脚本是否可执行
(1)第一行制定的解释器地址即为当前系统perl所在位置,chmod u+x script.pl
(2)perl script.pl,切记在crontab中解释器perl必须为绝对路径,因为crontab相当于一个新的shell,不继承$PATH
查查crontab的日志情况!
mysql 用绝对路径。
谢谢各位。

文件是有执行权限的,命令行下执行这个脚本没有问题。

改成 46 16 * * * /usr/bin/perl /export/home/boss/ua/bin/online.pl 这个格式,有mail提醒,内容如下:
Your "cron" job on boss-aaa1
/usr/bin/perl /export/home/boss/ua/bin/online.pl

produced the following output:

sh: mysql: not found

后来修改了mysql的路径,就好了。

谢谢各位了!

这位老兄说对了!谢谢!
他是 shell高手


QUOTE:
原帖由 ly5066113 于 2008-11-25 11:21 发表
mysql 用绝对路径。

其实应该在 crontab 中设置正确的 $PATH,这样就省得改脚本了。