群晖NAS定时任务执行命令失败:提示‘no such file’
群晖NAS定时任务执行Fossil脚本失败:参数被识别为文件的解决办法
问题详情
- 系统版本:DSM 7.1.1-42962 Update 6
- 定时任务自定义脚本:
/bin/bash /volume1/backup/fossil/start_fossil.sh - 脚本
start_fossil.sh内容:
#!/bin/bash cd /volume1/@appstore/fossil-scm/bin fossil server --port 8080 /volume1/backup/fossil/fossil --https
- 执行报错:
no such file: server - 异常情况:手动通过
./start_fossil.sh、bash start_fossil.sh或终端直接执行命令均正常,尝试添加引号无效。
解决建议
1. 使用Fossil绝对路径执行
定时任务的执行环境可能未正确继承cd后的工作目录,直接用绝对路径调用Fossil避免依赖:
#!/bin/bash /volume1/@appstore/fossil-scm/bin/fossil server --port 8080 /volume1/backup/fossil/fossil --https
2. 检查定时任务执行用户权限
群晖定时任务默认执行用户可能与手动执行的账号不同,确保执行用户对以下路径有读写执行权限:
/volume1/@appstore/fossil-scm/bin/fossil/volume1/backup/fossil/fossil
编辑定时任务时,在「任务设置」中选择你手动执行脚本的账号。
3. 补全环境变量
定时任务的PATH环境变量比终端更精简,可能导致依赖缺失,在脚本开头添加环境变量配置:
#!/bin/bash export PATH=/volume1/@appstore/fossil-scm/bin:$PATH fossil server --port 8080 /volume1/backup/fossil/fossil --https
也可以将终端执行echo $PATH的输出复制到export PATH=后,确保环境与手动执行一致。
4. 直接在定时任务中执行命令
如果脚本仍有问题,跳过脚本直接将命令写入定时任务的「自定义脚本」:
/volume1/@appstore/fossil-scm/bin/fossil server --port 8080 /volume1/backup/fossil/fossil --https
5. 修复脚本换行符
若脚本是Windows环境编辑的,CRLF换行符会导致Linux执行异常,用dos2unix转换格式:
dos2unix /volume1/backup/fossil/start_fossil.sh
内容的提问来源于stack exchange,提问作者SoulEviscerator
相关产品推荐
相关产品推荐

