我有一个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\"");