【问题标题】:Unable to execute java program from crontab job of other user无法从其他用户的 crontab 作业执行 java 程序
【发布时间】:2013-10-09 02:09:00
【问题描述】:

我无法在不同的用户下运行 crontab 作业。(例如 sudo -u someuser crontab -e) 它在我的用户配置文件下运行得非常好。 我知道是什么问题,但找不到解决方案。 问题是,当我为其他用户配置此 crontab 作业时,crontab 无法找到 java,因此即使是简单的 java -version 也无法正常工作。

下面是我的脚本。

#!/bin/bash

export JAVA_HOME=/usr/jdk/jdk1.6.0_31
export PATH=/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/home/VishalS/bin

echo "JAVA_HOME is: " $JAVA_HOME >>  log.out
echo "PATH is: " $PATH >>  log.out

which java >> log.out

/usr/bin/java -version >> log.out
/usr/jdk/jdk1.6.0_31/bin/java -version >> log.out

上述脚本的输出:

JAVA_HOME is:  /usr/jdk/jdk1.6.0_31
PATH is:  /usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/home/VishalS/bin
/usr/bin/java

很明显,以下几行不起作用。

/usr/bin/java -version >> log.out
/usr/jdk/jdk1.6.0_31/bin/java -version >> log.out

有人可以帮我吗?我不明白为什么即使设置 jdk 路径 crontab 也不执行 java -version ?

【问题讨论】:

    标签: java linux shell


    【解决方案1】:

    尝试直接在其他用户的 crontab 中设置路径。请参阅“man 5 crontab”。

    【讨论】:

    • 我确实喜欢这个:JAVA_HOME=/usr/jdk/jdk1.6.0_31 54 08 * * * path/to/myscript.sh 。还是不行
    【解决方案2】:

    我唯一想到的是,java 命令可能对您尝试执行它的用户没有可执行权限。

    所以使用chmod 来授予必要的执行权限。

    【讨论】:

    • 感谢您的帮助。我尝试执行“chmod 755 java.sh”但被拒绝。(这是一台生产机器,所以我在这里寻求系统管理员的帮助。)
    【解决方案3】:

    Crontab(5) 在没有 ENV 的情况下运行,因此您需要获取一个环境(您正在构建 JAVA_HOME 和 PATH,但 crontab (几乎)没有给您任何东西。请注意“which java”的输出没有出现在您的日志文件。

    • 构建一个环境脚本,您可以为您的 crontab 脚本“.path/to/env.sh”提供源代码
    • 在 shell 脚本等中执行的所有程序上放置完整路径。您不能依赖 cron 中的环境
    • 运行“which which”,你得到/usr/bin/which了吗?然后将其放入您的脚本中。
    • 为方便起见,我们经常省略脚本中的路径,但在从 crontab 运行的脚本中给出路径

    • 以其他用户身份登录时java是否运行?

    【讨论】:

    • 感谢 Chuck 的宝贵意见。
    【解决方案4】:

    感谢大家对 cme​​ts 的帮助。 然而,在我的案例中有效的实际修复是如下所述的混合步骤:- 1.在root用户配置文件下设置Sun JDK路径。(早期打开jdk已设置) 2.授予正在写入日志的日志文件夹的权限。(之前权限设置不正确) 3. 调整了我的 cronjob(我认为那里有一个额外的空间)

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2020-01-19
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多