在Linux环境下进行Java开发或部署时,掌握常用命令能显著提升操作效率,以下从Java应用管理、进程监控、文件操作及环境配置等维度展开说明,并结合实际场景举例。

Java应用管理与执行
Java程序的运行离不开java命令,其基础语法为java [options] class [args],执行HelloWorld类需进入target目录后运行java -cp . HelloWorld,其中-cp(classpath)用于指定类路径,包含当前目录,对于打包后的JAR文件,可通过java -jar app.jar直接启动,若需传递参数,可在JAR名后追加,如java -jar app.jar --env=prod,调试时,-Xdebug和-Xrunjdwp参数可开启远程调试,例如java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar app.jar,允许IDE通过8000端口连接。
进程监控与管理
Java进程的监控是运维重点。ps命令结合grep可快速定位进程,如ps -ef | grep java会列出所有Java进程,其中-ef以完整格式显示信息,若需查看进程详细资源占用,可使用top -p <PID>或htop(需安装),其中PID可通过ps命令获取,对于僵死或异常进程,kill -9 <PID>可强制终止,但建议先用kill -15 <PID>尝试优雅关闭,让JVM执行钩子方法,批量管理时,pgrep命令更高效,例如pgrep -f "app.jar"可直接获取匹配进程的PID。
日志与性能分析
日志查看是排查问题的关键。tail -f app.log可实时监控日志文件,-f参数支持滚动查看;若需过滤关键字,可结合grep,如tail -f app.log | grep "ERROR",性能分析时,jps(JVM Process Status Tool)可列出所有Java进程的ID和主类,如jps -l显示完整类名。jstat用于监控JVM运行时数据,例如jstat -gcutil <PID> 1s每秒打印GC情况,包含堆内存使用率、GC次数等,线程分析可通过jstack <PID> > thread.dump生成线程快照,再使用grep查找死锁或阻塞线程。
文件与压缩操作
Java项目开发中,文件操作频繁。find命令可搜索特定文件,如find . -name "*.java"递归查找所有Java文件,打包时,jar命令是核心工具,例如jar -cvf app.jar -C target/ .将target目录下所有文件打包为app.jar,其中c创建、v显示详情、f指定文件名,解压则用jar -xvf app.jar,若需压缩整个目录,tar -czf app.tar.gz ./src可生成tar.gz包,c创建、zgzip压缩、f指定文件名。

环境配置与依赖管理
Java环境变量配置影响全局运行,通过echo $JAVA_HOME可查看当前JDK安装路径,若需修改,可在~/.bashrc中添加export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64并执行source ~/.bashrc生效,依赖管理方面,Maven和Gradle是主流工具,Maven的mvn clean install用于清理并构建项目,mvn dependency:tree可查看依赖树;Gradle则通过gradle build执行构建,gradle dependencies分析依赖关系。
常用命令速查表
| 场景 | 命令示例 | 说明 | 
|---|---|---|
| 运行JAR文件 | java -jar app.jar | 
启动Java应用 | 
| 查看Java进程 | ps -ef | grep java | 
列出所有Java进程 | 
| 实时查看日志 | tail -f app.log | 
监控日志文件变化 | 
| 生成线程快照 | jstack <PID> > thread.dump | 
导出线程堆栈信息 | 
| 打包JAR文件 | jar -cvf app.jar -C target/ . | 
将目录打包为JAR | 
| 查看JVM内存使用 | jstat -gcutil <PID> 1s | 
每秒打印GC和内存使用情况 | 
相关问答FAQs
Q1: 如何在Linux中查看Java应用的堆内存使用情况?
A1: 可使用jmap工具导出堆内存快照,例如jmap -dump:format=b,file=heap.hprof <PID>生成二进制堆文件,再通过Eclipse MAT或VisualVM分析,实时监控则用jstat -gc <PID> 1s,查看Eden、Old区使用率及GC频率。
Q2: Linux下如何批量杀死所有Java进程?
A2: 可通过pkill命令实现,例如pkill -f java会强制终止所有包含"java"关键字的进程,若需保留特定进程(如监控应用),可结合pgrep和xargs,如pgrep -f "monitor" | xargs kill -15,仅终止监控相关进程。

