You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rocky Linux下systemd启动Java应用无法识别额外目录问题

问题解决思路

1. 修复systemd的环境变量PATH

systemd默认的环境变量PATH范围比用户shell窄,很可能导致Java应用找不到ffmpeg可执行文件。在systemd服务配置的[Service]段添加完整的PATH环境变量:

[Service]
# 保留原有配置,新增以下行
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

如果ffmpeg安装在非标准路径(比如/opt/ffmpeg/bin),需将该路径也加入:

Environment=PATH=/opt/ffmpeg/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

修改后重新加载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart <你的服务名称>

2. 验证media目录的状态与权限

在run.sh中添加media目录的检查逻辑,确认systemd启动时该目录存在且权限正常:

# 在cd /home/ops/DMR之后插入
echo "检查media目录状态:"
ls -l media || echo "media目录不存在!"

通过journalctl查看服务日志,确认输出结果:

journalctl -u <你的服务名称> -f

如果media目录不存在,需检查上传流程是否正确创建了该目录;如果权限异常,执行以下命令修复:

sudo chown -R ops:ops /home/ops/DMR/media
sudo chmod -R 755 /home/ops/DMR/media

3. 确认Java应用的工作目录

在Java应用中添加日志,输出当前工作目录,验证是否与预期一致:

System.out.println("当前工作目录:" + System.getProperty("user.dir"));

正常情况下日志应显示/home/ops/DMR,如果不符,说明systemd的WorkingDirectory配置未生效,或应用内部有修改工作目录的逻辑。

4. 直接指定ffmpeg的绝对路径

如果应用支持配置ffmpeg路径,直接在Java应用的配置文件中设置ffmpeg的绝对路径(比如/usr/bin/ffmpeg),彻底避免依赖环境变量的问题。


内容的提问来源于stack exchange,提问作者VicVerevita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:04:57