pm2管理维护开发环境 jar 包
使用 PM2 管理运维 Java JAR 包教程
PM2 是一个强大的进程管理工具,通常用于 Node.js 应用的管理,但它也可以用来管理其他类型的应用,例如 Java 的 JAR 包。本教程将指导你如何使用 PM2 来管理运维 Java JAR 包。
脚本
APP_NAME="$2"
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart]"
exit 1
}
#检查程序是否在运行
is_exist() {
pid=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}')
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
if [ ! -d "./pm2" ]; then
echo "目录不存在,正在创建..."
mkdir -p "./pm2"
fi
jar_name="${APP_NAME//.jar/}"
if [ ! -f "./pm2/$jar_name" ]; then
echo '{' >./pm2/$jar_name.json
echo ' "apps": {' >>./pm2/$jar_name.json
echo ' "name": "'$jar_name'", // 应用名称' >>./pm2/$jar_name.json
echo ' "script": "java", // 命令名称' >>./pm2/$jar_name.json
echo ' "exec_mode": "fork",' >>./pm2/$jar_name.json
echo ' "exec_interpreter": "",' >>./pm2/$jar_name.json
echo ' "merge_logs": false,//追加日志false' >>./pm2/$jar_name.json
echo ' "min_uptime": "60s", //最小运行时间(范围内应用终止会触发异常退出而重启)' >>./pm2/$jar_name.json
echo ' "max_restarts": 30, //异常退出重启的次数' >>./pm2/$jar_name.json
echo ' "autorestart": true, //发生异常情况自动重启' >>./pm2/$jar_name.json
echo ' "restart_delay": "60", //异常重启的延时重启时间' >>./pm2/$jar_name.json
echo ' "error_file": "./target/pm2/'$jar_name'/err.log", // 错误日志' >>./pm2/$jar_name.json
echo ' "out_file": "./target/pm2/'$jar_name'/out.log", // 输出日志' >>./pm2/$jar_name.json
echo ' "log_date_format": "YYYY/MM/DD HH:mm:ss", // 日志日期格式' >>./pm2/$jar_name.json
echo ' "args": [' >>./pm2/$jar_name.json
echo ' "-server","-jar","-Dfile.encoding=utf-8", "-Dspring.profiles.active=dev", "'$jar_name'.jar"' >>./pm2/$jar_name.json
echo ' ]' >>./pm2/$jar_name.json
echo ' }' >>./pm2/$jar_name.json
echo '}' >>./pm2/$jar_name.json
pm2 start ./pm2/$jar_name.json
fi
fi
}
#停止方法
stop() {
is_exist
if [ $? -eq "0" ]; then
jar_name="${APP_NAME//.jar/}"
pm2 stop ./pm2/$jar_name.json
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status() {
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart() {
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
前提条件
在开始之前,请确保你已经安装了以下工具:
-
Node.js 和 npm:PM2 是基于 Node.js 的工具,因此需要先安装 Node.js 和 npm。
- 检查是否已安装:
node -v npm -v - 如果未安装,请参考 Node.js 官方文档 进行安装。
- 检查是否已安装:
-
Java 环境:确保你的系统已经安装了 Java 运行时环境(JRE)或 Java 开发工具包(JDK)。
- 检查是否已安装:
java -version - 如果未安装,请参考 Java 官方文档 进行安装。
- 检查是否已安装:
-
PM2:如果尚未安装 PM2,请先安装:
npm install pm2 -g
使用 PM2 管理 JAR 包
1. 启动 JAR 包
使用 PM2 启动一个 Java JAR 包非常简单。假设你的 JAR 包名为 app.jar,可以使用以下命令启动:
pm2 start java -- -jar app.jar
java:指定使用 Java 运行环境。-jar app.jar:传递给 Java 的命令行参数,表示运行指定的 JAR 包。
2. 指定应用名称
为了方便管理,可以为你的应用指定一个名称。例如,将应用命名为 my-java-app:
pm2 start java --name my-java-app -- -jar app.jar
3. 传递 JVM 参数
如果需要为 Java 虚拟机(JVM)传递参数,例如设置内存大小,可以在命令中添加参数。例如:
pm2 start java --name my-java-app -- -Xmx512m -Xms256m -jar app.jar
-Xmx512m:设置最大堆内存为 512MB。-Xms256m:设置初始堆内存为 256MB。
4. 查看运行中的应用
使用以下命令查看当前由 PM2 管理的所有应用:
pm2 list
你会看到类似以下的输出:
┌─────┬──────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼──────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ my-java-app │ default │ N/A │ fork │ 12345 │ 2m │ 0 │ online │ 0% │ 45.2mb │ user │ disabled │
└─────┴──────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
5. 查看应用日志
PM2 会自动捕获应用的日志。你可以使用以下命令查看日志:
-
查看实时日志:
pm2 logs my-java-app -
查看最近的日志:
pm2 logs my-java-app --lines 100
6. 停止应用
如果需要停止应用,可以使用以下命令:
pm2 stop my-java-app
7. 重启应用
重启应用的命令如下:
pm2 restart my-java-app
8. 删除应用
如果不再需要管理某个应用,可以将其从 PM2 中删除:
pm2 delete my-java-app
高级配置
1. 使用配置文件
PM2 支持通过配置文件来管理应用。创建一个 ecosystem.config.js 文件,内容如下:
module.exports = {
apps: [
{
name: 'my-java-app',
script: 'java',
args: '-jar app.jar',
exec_mode: 'fork',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
},
},
],
};
然后使用以下命令启动应用:
pm2 start ecosystem.config.js
2. 设置开机自启动
为了让应用在服务器重启后自动启动,可以使用以下命令:
pm2 startup
pm2 save
pm2 startup:生成启动脚本。pm2 save:保存当前 PM2 管理的应用列表。
结语
通过 PM2,你可以轻松管理 Java JAR 包,享受进程管理、日志捕获、自动重启等功能。PM2 的强大功能不仅限于 Node.js 应用,还可以扩展到其他类型的应用,如 Java 应用。
更多关于 PM2 的详细用法,请参考 PM2 官方文档。

浙公网安备 33010602011771号