启动Java服务是后端开发与运维中的常见操作,通过命令行操作既灵活又高效,以下将详细说明操作步骤,涵盖基础命令、参数配置、日志管理及安全建议,适用于Linux/Unix和Windows系统。
准备工作
-
安装Java环境
确保系统已安装JDK(推荐JDK 8+),通过命令验证版本:java -version
若未安装,需先下载JDK并配置环境变量。
-
准备Java应用文件
- JAR包:Spring Boot等框架生成的独立可执行包(如
app.jar
)。 - WAR包:需依赖外部Servlet容器(如Tomcat)。
- 配置文件:如
application.properties
或config.yml
,通常放在同级目录。
- JAR包:Spring Boot等框架生成的独立可执行包(如
基础启动命令
启动JAR包(最常用)
java -jar your-app.jar
- 关键参数:
-D
:设置系统属性(如-Dspring.profiles.active=prod
指定环境)。-Xmx
:最大堆内存(如-Xmx2g
分配2GB内存)。-Xms
:初始堆内存(如-Xms512m
)。
完整示例:java -Xms512m -Xmx2g -Dspring.config.location=file:./config/ -jar app.jar
启动WAR包(需Tomcat)
# 启动Tomcat(Linux) /opt/tomcat/bin/startup.sh # Windows C:\tomcat\bin\startup.bat
进阶配置
后台运行与日志管理
-
Linux/Unix(使用
nohup
):nohup java -jar app.jar > app.log 2>&1 &
> app.log
:标准输出重定向到日志文件。2>&1
:错误输出合并到标准输出。&
:后台运行。
查看日志:tail -f app.log
。
-
Windows(使用批处理):
创建start.bat
文件:@echo off java -jar app.jar > app.log 2>&1
JVM优化参数
-
内存与GC:
java -Xms1g -Xmx4g -XX:+UseG1GC -jar app.jar
-XX:+UseG1GC
:启用G1垃圾回收器(高并发推荐)。-XX:MaxGCPauseMillis=200
:设置GC最大暂停时间。
-
OOM时生成堆转储:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof
外部配置文件
通过 --spring.config.location
指定路径(Spring Boot适用):
java -jar app.jar --spring.config.location=file:/etc/app/config/
编写启动脚本(推荐)
创建 start.sh
(Linux)或 start.bat
(Windows),便于复用:
#!/bin/bash JAVA_OPTS="-Xms1g -Xmx2g -Duser.timezone=GMT+8" nohup java $JAVA_OPTS -jar /opt/app/app.jar > /var/log/app.log 2>&1 &
赋予执行权限:chmod +x start.sh
。
安全与运维建议
- 避免使用root用户:
sudo -u appuser java -jar app.jar # 用普通用户运行
- 服务监控:
- 使用
jps
查看Java进程ID。 - 用
jstat -gc <pid>
监控GC状态。
- 使用
- 进程管理:
- 结束进程:
kill -9 <pid>
(Linux)。 - 端口占用检查:
netstat -tunlp | grep java
。
- 结束进程:
常见问题排查
- 端口冲突:
Address already in use
→ 修改应用端口(如--server.port=8081
)。 - 类找不到:
检查依赖是否完整(尤其非FatJAR包)。 - 内存不足:
调整-Xmx
或增加服务器内存。
命令行启动Java服务的核心是 java -jar
,结合JVM参数、日志重定向和脚本化管理可提升效率,务必根据实际需求调整内存、GC策略及配置文件路径,并通过低权限用户运行保障安全,测试环境验证后再部署生产环境。
引用说明:
- Oracle官方JDK文档:Java参数配置指南
- Spring Boot外部化配置:Spring Config文档
- Linux nohup命令:GNU Coreutils手册
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6009.html