我有一个bash脚本,那就是唯一的任务就是执行一个jar文件。
sms.sh
java -jar /volume1/homes/jar/smssender.jar
使用Synology NAS设置任务。
添加命令以执行bash脚本。添加日志输出。
执行我的新任务。
检查日志以查看以下错误:
检查Java版本/安装:
手动检查sh脚本的执行(有效):
有人遇到同样的奇怪情况吗?有任何解决方法/想法吗?
我试过了
但没有一个有效。
最佳答案
当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。在这种特定情况下,有关对脚本中的路径进行硬编码以及由此导致的可移植性降低的问题可能会引起人们的关注。