【发布时间】:2011-01-14 13:29:10
【问题描述】:
我已尝试导出路径和变量,但 crontab 仍然无法运行我的脚本。我确定我做错了什么。
我有一个运行 jar 文件的 shell 脚本。这无法正常工作。
阅读后,我读到这通常是由于 cron 通过其自己的 shell 实例运行导致路径不正确,因此没有与我的配置文件相同的首选项设置。
这是我的脚本经过几次修改后的样子:
#!/bin/bash --
. /root/.bash_profile
/usr/bin/java -jar Pharmagistics_auto.jar -o
...
这些是脚本中最重要的部分,其余部分直接基于 shell。
谁能告诉我我做错了什么?
【问题讨论】:
-
为什么使用相对路径而不是绝对路径?
-
可能更适合 serverfault 或超级用户
-
对不起,我对我的 'nix 使用有点脱节。如何找出我的 java 可执行文件的绝对路径? 'whereis java' 不算数吗?我想你可能指的是我的 usr/bin/java 的错字。我已经纠正了这一点。如果这不是你的意思,请告诉我,我会解决它。
-
是否可能是Pharmagistics_auto.jar的权限不允许cron守护进程执行?如果您执行 'chmod +x Pharmagistics_auto.jar' 然后尝试它会怎样?您也可以尝试使用“which java”来确定 java 从哪里运行。 “echo”是你在 shell 脚本中的朋友。希望对您有所帮助。
-
我已经对有问题的 .jar 文件执行了“chmod +777 ...”,但仍然没有运气。哪个 java 输出了以下结果 '/usr/bin/java' 所以看起来我正在使用 write java 可执行文件。并且绝对同意,我已经抛出了一堆回声,这让我知道脚本中的所有命令都在工作,除了 java -jar 部分。我使用的命令是简单的“mv”或“find”命令。所以我不确定我在这里缺少什么