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 程序员,都是被生产环境逼出来的哲学家。"

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

相关推荐
浮尘笔记4 小时前
Go-Zero API Handler 自动化生成与参数验证集成
开发语言·后端·golang
Monkey-旭4 小时前
Android 注解完全指南:从基础概念到自定义实战
android·java·kotlin·注解·annotation
百度Geek说4 小时前
百度Feed实时数仓架构升级
后端
Roye_ack4 小时前
【项目实战 Day5】springboot + vue 苍穹外卖系统(Redis + 店铺经营状态模块 完结)
java·spring boot·redis·学习·mybatis
JIngJaneIL5 小时前
记账本|基于SSM的家庭记账本小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家庭记账本小程序
Ting-yu5 小时前
Nginx快速入门
java·服务器·前端·nginx
Ralap_Chen5 小时前
docker desktop部署mysql8.0以上版本,并用dbServer连接
后端
课程5 小时前
linux内核驱动开发视频课程
后端
泉城老铁5 小时前
除了群机器人,如何通过钉钉工作通知API给指定用户发消息?
spring boot·后端