我有一个 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
请指教。
答案1
首先要做的是从脚本中捕获 stderr
23 59 .../tc-rotate.pl 2>/tmp/script.log >/home/...
然后检查日志中的错误消息
编辑:回复评论:
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
答案2
如果变量是在 perl 脚本的范围内设置的,你应该尝试 su -m
-m, --preserve-environment 不重置环境变量
您的命令可以是:
system("su -m togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");