su perl脚本不能从crontab中运行

我有一个perl脚本在UNIX机器上运行正常,并从root用户手动运行,但不是从linux机器上的crontab运行:

有问题的命令是:su – $ user

system("su - togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\""); 

命令在crontab上:

 23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log 

请指教。

首先要做的是从脚本中捕获stderr

 23 59 .../tc-rotate.pl 2>/tmp/script.log >/home/... 

然后检查日志中是否有错误消息

编辑:回应评论:

crontab中的条目有一个相当有限的环境,所以你列出的环境variables是不可用的,你可以将它们设置在你的crontab文件中,例如

 APACHE_HOME=/some/path CATALINA_HOME=/some/other/path RUN_ENV=someValue 23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log 

如果variables设置在你的perl脚本的范围内,你应该尝试su -m

-m,–preserve-environment不重置环境variables

你的命令可以是:

 system("su -m togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");