Synology NAS DS118运行.jar文件及自动执行设置求助
在Synology DS118上运行.jar文件并设置休眠后自动执行的完整指南
我来一步步帮你解决在Synology DS118上运行.jar文件,以及设置休眠唤醒后自动执行的问题——我自己在NAS上跑Java程序也踩过类似的坑,所以这些步骤都是实测有效的:
第一步:确保NAS上安装了Java环境
Synology默认不会预装Java,所以首先得搞定这个:
- 打开DSM的Package Center,在搜索栏输入“Java”,找到OpenJDK(推荐这个,开源免费)或者Oracle Java,点击安装。
- 安装完成后,打开SSH客户端(比如Putty、终端)连接到你的NAS,输入
java -version,如果能看到Java版本信息,说明环境没问题;如果提示“command not found”,检查Package Center里的Java是否真的装好了,或者重启一下NAS试试。
第二步:通过SSH成功运行.jar文件
其实.jar文件不需要设置为“可执行”权限(那是给脚本文件用的),直接用Java命令启动就行,具体操作:
- 把你的.jar文件放到NAS的某个共享文件夹里,比如
/volume1/Apps/MyApp.jar(注意如果路径里有空格,要加引号)。 - 在SSH里输入启动命令:
如果想让程序在后台运行(关掉SSH窗口也不会停),加个java -jar /volume1/Apps/MyApp.jar&在后面:java -jar /volume1/Apps/MyApp.jar & - 如果遇到权限错误(比如无法读取.jar文件或者写入日志):
- 要么在DSM的文件管理器里找到.jar文件所在的文件夹,右键属性 -> 权限,给你用来SSH登录的用户(比如admin)赋予读写权限;
- 要么在SSH里用
chmod命令修改权限:chmod 755 /volume1/Apps
第三步:设置休眠唤醒后自动执行程序
要实现NAS从休眠中唤醒后自动启动.jar,用Synology自带的任务计划就可以,不用额外装软件:
- 打开DSM的控制面板 -> 任务计划。
- 点击左上角的创建 -> 触发的任务 -> 用户定义的脚本。
- 在常规标签页:
- 给任务起个好记的名字,比如“唤醒后启动Java程序”;
- 选择执行任务的用户(建议用admin或者有足够权限的用户);
- 勾选“启用”。
- 在触发条件标签页:
- 选择事件,然后在下拉菜单里选系统从休眠中唤醒,点击确定。
- 在任务设置标签页:
- 在“用户定义的脚本”框里输入以下内容(记得替换成你自己的.jar路径和日志路径):
#!/bin/bash # 先检查程序是否已经在运行,避免重复启动 if ! pgrep -f "MyApp.jar" > /dev/null; then # 替换成你的Java绝对路径(如果java命令找不到的话,用which java查路径) java -jar /volume1/Apps/MyApp.jar > /volume1/Apps/app_run.log 2>&1 & fi
pgrep -f "MyApp.jar"是检查是否已经有这个程序在运行,防止重复启动;> /volume1/Apps/app_run.log 2>&1是把程序的输出和错误信息都写到日志文件里,方便后续排查问题;- 最后的
&让程序在后台运行,不会阻塞任务计划的执行。
- 在“用户定义的脚本”框里输入以下内容(记得替换成你自己的.jar路径和日志路径):
- 点击确定保存任务,之后NAS每次从休眠唤醒都会自动执行这个脚本。
一些额外的注意事项
- 如果你的.jar程序需要开机自启,也可以用同样的方法创建一个“开机”触发的任务,脚本内容和上面一样;
- 如果
java命令找不到,用which java命令可以查到Java的绝对路径,比如/usr/local/openjdk/bin/java,把脚本里的java换成这个绝对路径就行; - 测试任务:在任务计划里选中你创建的任务,点击运行,然后去看日志文件,或者用
ps aux | grep MyApp.jar检查进程是否存在,确认程序能正常启动。
内容的提问来源于stack exchange,提问作者Yacine Walid
相关产品推荐
相关产品推荐

