我有一个bash脚本,唯一的任务就是执行一个jar文件。
sms.sh
java -jar /volume1/homes/jar/smssender.jar
使用Synology NAS设置任务。
添加执行bash脚本的命令。正在添加日志输出。
执行我的新任务。
正在检查日志以查看以下错误:
/ volume1 / homes / jar / sms.sh:第1行:java:未找到命令
正在检查Java版本/安装:
手动检查sh脚本的执行(有效):
有人遇到同样的奇怪情况吗?任何解决方法/想法?
我尝试过
但无济于事。
我对Synology
不熟悉,所以... ...>
Shell脚本在命令行执行时有效,因为特定的登录会话已经加载了一组环境变量(例如,在登录主目录中的.profile/.bashrc
脚本后,会获得源代码,并且各种Java-加载了特定的环境变量-PATH, JAVA_HOME, CLASSPATH
等),这些变量允许java
和脚本正常运行。
失败的Synology
作业错误表示尚未加载特定于Java的环境变量,因此作业/脚本无法找到java
。
假设Synology
没有配置设置/标志来预加载登录信息,那么“简单”的解决方案是编辑脚本(sms.sh
)并在执行之前提供适当的资源文件任何操作(例如,调用java
)。一个简单的例子:
:$cat sms.sh #!/usr/bin/bash . ~root/.bashrc # load the root account profile before continuing ... java ...
NOTES
root
(在示例Synology
图像中,似乎您选择了root
用户,因此我的示例引用了~root
)~root/.bashrc
替换为用户配置文件的路径,以预加载允许脚本查找java
所需的环境变量”>