☰
针对 RK3588 下的JDK17推荐 JVM 参数,以及systemd类型选择
2026/10/7 8:02:04 网站建设 项目流程

文章目录

  • 引言
  • 一、为什么 `start.sh + nohup &` 在 systemd 下是错的
    • systemd 对 `ExecStart` 的核心假设
    • 你这个脚本发生了什么
      • 后果清单
  • 二、正确写法:`Type=simple` + 直接 exec
    • ✅ 方案 A(最推荐):`Type=simple`,`ExecStart` 直接跑 java
      • 为什么这样是对的
    • ✅ 方案 B:保留 `start.sh`,但**不用 nohup &**,用 `exec`
    • ✅ 方案 C:`Type=forking`(不推荐,但如果你坚持用 `&`)
  • 三、错误例子: `nohup` 脚本逐行点评
      • 问题汇总
  • 四、针对 RK3588 的推荐 JVM 参数
  • 五、日志处理(别再 `/dev/null`)
      • 方案 1:journald(推荐,零配置)
      • 方案 2:文件 + logrotate
      • 方案 3:Spring Boot logback 自己写文件
  • 六、最终推荐方案总结
  • 七、修正后的 `start.sh`

引言

在 systemd 下使用 start.sh + nohup & 会导致 Java 进程脱离管控,引发服务状态异常、无法重启、日志丢失、资源失控等问题。正确做法是采用 Type=simple 直接运行 Java,或通过 exec 替换脚本进程,确保 systemd 精确控制主进程。针对 RK3588 设备,应合理分配内存(建议 512M~1G),禁用无效参数(如 ZGC 下的新生代设置),并启用日志输出与堆转储,保障服务稳定可靠。

一、为什么start.sh + nohup &在 systemd 下是错的

systemd 对ExecStart的核心假设

systemd 认为ExecStart启动的进程就是服务主进程(PID 1 of the cgroup)。
它靠这个 PID 来判断:服务是否活着、该不该重启、stop 时杀谁。

你这个脚本发生了什么

#!/bin/shnohup

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询