使用 supers 管理 Java 应用
本示例实现了一个基于 Golang 的进程管理工具 supers,具有以下主要功能:
- 进程管理:支持启动、停止、重启多个应用,并能查看各应用的状态。
- 状态展示:输出状态时采用自定义的表格格式,展示 ID、NAME、PID、STATUS、UP TIME 以及 COMMAND 信息。
- 配置管理:通过 INI 格式的配置文件加载各个应用的运行参数。
- 自动重启:支持异常退出后自动重启进程(除非是手动停止)。
- Linux 下用户切换:在 Linux 平台上,当配置中指定了 user 字段时,通过调用系统 API(setuid)以指定用户身份运行子进程。
- 日志管理:通过配置项将标准输出和标准错误重定向到指定日志文件。
安装 supers
请参考 supers 的官方文档或 GitHub 仓库获取最新安装方式。一般情况下,你可以在已配置好 Golang 开发环境的情况下,通过如下命令安装 supers:
go get -u github.com/litongjava/supers
安装完成后,将生成的 supers 二进制文件加入 PATH 中,以便全局调用。
配置 supers 管理 Java 程序
编辑 supers 的配置文件(例如 ~/supers.conf
),在文件中添加如下配置段落,用以管理你的 Java 程序:
[program:javaapp]
command=/Users/ec2-user/java/jdk1.8.0_381.jdk/Contents/Home/bin/java -jar /Users/ec2-user/java-linux/java-linux-1.0.0.jar
directory=/Users/ec2-user/java-linux
autostart=true
autorestart=true
startsecs=5
stdout_logfile=/Users/ec2-user/logs/javaapp.out
stderr_logfile=/Users/ec2-user/logs/javaapp.err
user=ec2-user
参数说明
- command:指定启动 Java 程序的完整命令。
- directory:设置工作目录,确保程序能正确加载所需依赖。
- autostart:supers 启动时自动启动该程序。
- autorestart:程序异常退出后,supers 将自动重启。
- startsecs:程序启动后需要等待的秒数,超过此时间后判定为启动成功。
- stdout_logfile / stderr_logfile:分别指定标准输出和标准错误的日志文件路径,请确保相应目录存在且具有写权限。
- user:指定以哪位用户身份运行程序,确保该用户具备执行该命令的权限。
启动 supers
配置完成后,即可使用指定的配置文件启动 supers 守护进程。执行以下命令:
supers -c ~/supers.conf
启动成功后,supers 会自动读取配置文件,并在后台启动所有设置为 autostart 的程序。
管理与监控
supers 提供了命令行工具 supers
,方便你查看状态和管理各个进程。常用操作如下:
查看程序状态
supers -c ~/supers.conf status
重启 Java 程序
supers -c ~/supers.conf restart javaapp
通过这些命令,你可以方便地监控进程运行状态,并在需要时进行相应管理。
自启动设置
如果希望 supers 随系统启动自动运行,可将其加入 macOS 的启动项或使用 launchd 进行管理。具体操作方法请参考相关系统文档,以确保 supers 在系统重启后能自动加载配置并启动应用程序。
总结
通过上述步骤,你已成功配置 supers 来管理 Java 应用程序。supers 不仅能在后台自动启动程序,还能在程序异常退出时进行自动重启,同时提供便捷的管理与监控工具。希望本教程能帮助你构建一个稳定可靠的应用运行环境。