Java 程序员的 Linux 修炼手册:命令行下的江湖生存指南 🐧☕️

Java 程序员的 Linux 修炼手册:命令行下的江湖生存指南 🐧☕️

一位在 Linux 上摸爬滚打 8 年的 Java 程序员的碎碎念。

大家好,我是一个在 Linux 上写了 8 年 Java 的老程序员。说是"老",其实是指曾经被 grepps 搞到怀疑人生、被 topjstack 救过命的那种老。

今天我就来盘点一下------在 Linux 系统上,一个 Java 程序员常用命令大合集,顺便也分享点血泪教训和经验,希望能帮你少踩点坑,多写点代码,少背锅。


一、基础命令:别笑,这些命令写错一次照样出 bug

1. cd / ls / pwd ------ 走哪都得先看看自己在哪

bash 复制代码
cd /opt/my-java-app/        # 进入你的项目目录
ls -lh                      # 列出文件,带人类能看懂的大小
pwd                         # 打印当前路径

老程序员的建议 :别问我为啥 ls 要加 -lh,因为你迟早得关心日志文件是不是突然变成了 5GB。


2. cat / less / tail

bash 复制代码
cat application.properties      # 一次性看完小文件
less catalina.out               # 分页查看大日志
tail -f logs/app.log            # 实时滚动查看日志

高级用法

bash 复制代码
tail -n 1000 -f logs/app.log | grep "ERROR"

实时追踪错误日志,配合 grep 使用,堪称 Java 程序员的千里眼。


二、进程管理:如何优雅地杀死自己写的程序

1. ps + grep = 找"自家孩子"

perl 复制代码
ps aux | grep java

或者更专业一点:

perl 复制代码
ps -ef | grep my-java-app.jar

2. kill / kill -9

bash 复制代码
kill 12345      # 优雅地请它离开
kill -9 12345   # 用武力解决问题(慎用)

友情提示kill -9 是终极大招,类似于"拔电源",别动不动就用。


三、Java 专属命令:真正的 Java 工程师不会只写代码

1. java / javac / jar

perl 复制代码
java -version
javac HelloWorld.java
jar -cvf my-app.jar *

2. jps ------ Java Process Status tool

复制代码
jps -l

显示所有 Java 进程,带上 -l 会显示完整类名或 JAR 路径。

3. jstack ------ 线程堆栈分析神器

c 复制代码
jstack 12345 > jstack.log

分析线程死锁、卡顿首选工具。配合 grep "BLOCKED", grep "deadlock" 使用效果更佳。

4. jmap / jstat / jinfo

bash 复制代码
jmap -heap 12345        # 查看堆内存使用情况
jstat -gcutil 12345     # GC 使用情况
jinfo -flags 12345      # 查看 JVM 启动参数

这三个命令是你排查线上问题的好帮手,尤其是内存泄漏、频繁 FullGC 之类的"灵异事件"。


四、网络命令:不是你代码慢,是你网卡断了

1. netstat / ss

perl 复制代码
netstat -tlnp | grep 8080
ss -tuln

查看端口监听情况,确认服务有没有正常启动。

2. curl / wget

bash 复制代码
curl http://localhost:8080/actuator/health
wget http://localhost:8080/

快速检测接口可用性,比打开浏览器快多了。


五、文件操作:日志、配置、还有那该死的临时文件

1. find / grep / xargs 三件套

arduino 复制代码
find . -name "*.log" -mtime +7 -delete

删除 7 天前的日志,省空间神器。

perl 复制代码
grep -rn "NullPointerException" .

递归查找代码/日志中的 NPE,开发和排查都得用。

arduino 复制代码
find . -name "*.java" | xargs grep "TODO"

查找所有你三个月前写的 TODO。


六、服务管理:别让你的项目只跑在终端里

1. nohup + &

bash 复制代码
nohup java -jar my-app.jar > app.log 2>&1 &

后台启动 Java 程序,关闭终端也不怕它挂掉。

2. systemctl / service(如果你写了自己的服务脚本)

perl 复制代码
systemctl start my-java-app
systemctl status my-java-app

建议线上服务都注册为 systemd 服务,这样你就能更优雅地重启它。


七、Bonus:日常调试的骚操作

1. 查看文件大小

bash 复制代码
du -sh logs/

你的磁盘满了,一般就是日志干的。

2. CPU、内存监控

bash 复制代码
top
htop         # 更好看一点(需要安装)

注意观察 Java 进程的 CPU 和内存占用,别让它吃掉整台机器。

3. crontab 定时任务

perl 复制代码
crontab -e

# 每天 3 点重启服务
0 3 * * * /usr/bin/systemctl restart my-java-app

别问我为啥 3 点,答:你睡着的时候,它崩了你也不知道。


总结:Linux 是 Java 程序员的第二 IDE

写 Java 不只是 Ctrl + SAlt + Enter,在 Linux 上,命令行才是你真正的超级武器。

这些命令就像你的"键盘忍术",用得熟练,你就是现场 Bug 终结者,团队里的 Linux 小王子。

最后送上一句我最爱的话:

"熟悉命令行的 Java 程序员,都是被生产环境逼出来的哲学家。"

如果你也有常用命令、奇技淫巧,欢迎留言交流。毕竟,写代码的路上,不怕踩坑,就怕一个人踩坑。

相关推荐
wifi歪f13 分钟前
📦 qiankun微前端接入实战
前端·javascript·面试
豆沙沙包?28 分钟前
2025年- H118-Lc86. 分隔链表(链表)--Java版
java·数据结构·链表
摆烂工程师35 分钟前
教你如何认证 Gemini 教育优惠的二次验证,薅个 1年的 Gemini Pro 会员
后端·程序员·gemini
绝无仅有1 小时前
未来教育行业的 Go 服务开发解决方案与实践
后端·面试·github
A尘埃1 小时前
智能工单路由系统(Java)
java·开发语言·智能工单
程序员爱钓鱼1 小时前
Go语言实战案例- 命令行参数解析器
后端·google·go
心在飞扬2 小时前
Redis 介绍与 Node.js 使用教程
后端
milanyangbo2 小时前
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
分布式·后端·云原生·架构
失散132 小时前
分布式专题——1.1 Redis单机、主从、哨兵、集群部署
java·数据库·redis·分布式·架构
刘一说2 小时前
Linux调试命令速查:Java/微服务必备
java·linux·微服务