perl 脚本中的 su 无法通过 crontab 运行

perl 脚本中的 su 无法通过 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

请指教。

答案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\"");

相关内容