我有一个bash脚本,那就是唯一的任务就是执行一个jar文件。

sms.sh

java -jar /volume1/homes/jar/smssender.jar

使用Synology NAS设置任务。

java - 找不到Synology Scheduler .sh Java命令-LMLPHP

添加命令以执行bash脚本。添加日志输出。

java - 找不到Synology Scheduler .sh Java命令-LMLPHP

执行我的新任务。

java - 找不到Synology Scheduler .sh Java命令-LMLPHP

检查日志以查看以下错误:



检查Java版本/安装:

java - 找不到Synology Scheduler .sh Java命令-LMLPHP

手动检查sh脚本的执行(有效):

java - 找不到Synology Scheduler .sh Java命令-LMLPHP

有人遇到同样的奇怪情况吗?有任何解决方法/想法吗?

我试过了
  • 重新启动我的NAS
  • 卸载/安装Java8软件包

  • 但没有一个有效。

    最佳答案

    当Synology任务计划程序执行脚本sms.sh时,PATH设置将从脚本/etc/crontab中获取。其中不包含Java路径。

    默认的登录Shell环境定义为int /etc/profile。最后是添加Java路径的部分。

    PATH=$PATH:/var/packages/Java8/target/j2sdk-image/bin # Synology Java runtime enviroment
    PATH=$PATH:/var/packages/Java8/target/j2sdk-image/jre/bin # Synology Java runtime enviroment
    JAVA_HOME=/var/packages/Java8/target/j2sdk-image/jre # Synology Java runtime enviroment
    CLASSPATH=.:/var/packages/Java8/target/j2sdk-image/jre/lib # Synology Java runtime enviroment
    LANG=en_US.utf8 # Synology Java runtime enviroment
    export CLASSPATH PATH JAVA_HOME LANG # Synology Java runtime enviroment
    

    正如已经给出的评论中已经提到的那样,不建议采购用于交互式shell的配置文件脚本。您可以在/etc/profile脚本中模仿sms.sh脚本的行为来设置CLASSPATH PATH JAVA_HOME LANG。

    在这种特定情况下,有关对脚本中的路径进行硬编码以及由此导致的可移植性降低的问题可能会引起人们的关注。

    10-07 13:48