Java 程序员的 Linux 修炼手册:命令行下的江湖生存指南 🐧☕️
一位在 Linux 上摸爬滚打 8 年的 Java 程序员的碎碎念。
大家好,我是一个在 Linux 上写了 8 年 Java 的老程序员。说是"老",其实是指曾经被 grep
和 ps
搞到怀疑人生、被 top
和 jstack
救过命的那种老。
今天我就来盘点一下------在 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 + S
和 Alt + Enter
,在 Linux 上,命令行才是你真正的超级武器。
这些命令就像你的"键盘忍术",用得熟练,你就是现场 Bug 终结者,团队里的 Linux 小王子。
最后送上一句我最爱的话:
"熟悉命令行的 Java 程序员,都是被生产环境逼出来的哲学家。"
如果你也有常用命令、奇技淫巧,欢迎留言交流。毕竟,写代码的路上,不怕踩坑,就怕一个人踩坑。