Linux調(diào)試命令速查之Java/微服務(wù)必備分享
Linux 上常用的調(diào)試命令清單Java 應(yīng)用、Spring Boot、Nacos、微服務(wù)等場(chǎng)景的排查與監(jiān)控作用說明實(shí)用示例
Linux 常用調(diào)試命令速查表
| 命令 | 作用 | 示例 |
|---|---|---|
| tail -f | 實(shí)時(shí)查看文件末尾(常用于日志監(jiān)控) | tail -f /var/log/app.log |
| grep | 搜索文本內(nèi)容 | grep "ERROR" app.log |
| ps | 查看進(jìn)程狀態(tài) | ps aux | grep java |
| top / htop | 實(shí)時(shí)查看系統(tǒng)資源使用(CPU、內(nèi)存) | top |
| netstat / ss | 查看網(wǎng)絡(luò)連接和端口監(jiān)聽 | ss -tulnp | grep :8080 |
| lsof | 查看文件或端口被哪個(gè)進(jìn)程占用 | lsof -i :8848 |
| curl | 發(fā)送 HTTP 請(qǐng)求(測(cè)試接口) | curl http://localhost:8080/health |
| telnet / nc | 測(cè)試端口連通性 | telnet 10.135.10.33 8848 |
| find | 查找文件 | find / -name "*.log" 2>/dev/null |
| du / df | 查看磁盤使用情況 | df -h, du -sh /home |
| journalctl | 查看 systemd 服務(wù)日志 | journalctl -u myapp.service -f |
| ping | 測(cè)試網(wǎng)絡(luò)連通性 | ping baidu.com |
| vmstat / iostat | 查看系統(tǒng)性能(CPU、IO) | vmstat 1 |
| strace | 跟蹤系統(tǒng)調(diào)用(高級(jí)調(diào)試) | strace -p 1234 |
| tcpdump | 抓包分析網(wǎng)絡(luò)流量(高級(jí)) | tcpdump -i any port 8848 |
詳細(xì)說明與實(shí)戰(zhàn)示例
1.tail -f filename
作用:實(shí)時(shí)查看文件新增內(nèi)容,常用于日志監(jiān)控。
# 實(shí)時(shí)查看最后 10 行日志 tail -f app.log # 查看最后 50 行并實(shí)時(shí)跟蹤 tail -n 50 -f app.log # 跟蹤多個(gè)日志文件 tail -f *.log
適用場(chǎng)景:觀察 Spring Boot、Nacos 啟動(dòng)日志。
2.grep "關(guān)鍵字" 文件
作用:搜索日志中的特定內(nèi)容(如 ERROR、Timeout)。
# 查找所有 ERROR 日志 grep "ERROR" app.log # 忽略大小寫 + 顯示行號(hào) grep -in "error" app.log # 結(jié)合 tail 實(shí)時(shí)過濾 tail -f app.log | grep "DataSource"
適用場(chǎng)景:快速定位啟動(dòng)失敗原因。
3.ps aux | grep 進(jìn)程名
作用:查看正在運(yùn)行的進(jìn)程。
# 查看所有 Java 進(jìn)程 ps aux | grep java # 查看 Nacos 進(jìn)程 ps aux | grep nacos # 只顯示 PID 和命令 ps -ef | grep java | grep -v grep
適用場(chǎng)景:確認(rèn)服務(wù)是否在運(yùn)行。
4.top/htop
作用:實(shí)時(shí)查看 CPU、內(nèi)存占用。
top
- 按
P:按 CPU 排序 - 按
M:按內(nèi)存排序 - 按
q:退出
安裝 htop(更友好):
sudo apt install htop # Ubuntu/Debian sudo yum install htop # CentOS htop
5.ss -tulnp | grep :端口
作用:查看端口監(jiān)聽和占用情況(替代 netstat)。
# 查看 8848 端口是否被監(jiān)聽 ss -tulnp | grep :8848 # 查看所有監(jiān)聽端口 ss -tuln # 參數(shù)說明: # -t: TCP # -u: UDP # -l: 監(jiān)聽中 # -n: 數(shù)字顯示(不解析服務(wù)名) # -p: 顯示進(jìn)程
6.lsof -i :端口
作用:查看哪個(gè)進(jìn)程占用了某個(gè)端口。
# 查看 8080 端口被誰占用 lsof -i :8080 # 輸出示例: # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME # java 1234 root 99u IPv6 123456 0t0 TCP *:8080 (LISTEN)
7.curl URL
作用:發(fā)送 HTTP 請(qǐng)求,測(cè)試接口是否正常。
# 測(cè)試 Nacos 是否健康
curl http://10.135.10.33:8848/nacos/v1/console/health
# 帶 header 請(qǐng)求
curl -H "Content-Type: application/json" -X POST -d '{"name":"test"}' http://localhost:8080/api/test
# 靜默輸出(-s)+ 返回狀態(tài)碼(-w)
curl -s -w "%{http_code}\n" -o /dev/null http://localhost:8080/health
8.telnet IP 端口/nc -zv IP 端口
作用:測(cè)試網(wǎng)絡(luò)和端口是否可達(dá)。
# 測(cè)試 Nacos HTTP 端口 telnet 10.135.10.33 8848 # 測(cè)試 gRPC 端口 nc -zv 10.135.10.33 9848 # 輸出: # Connection to 10.135.10.33 8848 port [tcp/*] succeeded!
如果提示 command not found,安裝:
sudo apt install telnet netcat # Ubuntu sudo yum install telnet nc # CentOS
9.find / 路徑 -name "文件名"
作用:查找文件位置。
# 查找所有 .log 文件 find / -name "*.log" 2>/dev/null # 查找 nacos 的 startup.sh find / -name "startup.sh" -path "*/nacos/bin/startup.sh" 2>/dev/null # 查找 application.yml find / -name "application.yml" 2>/dev/null
2>/dev/null 表示忽略權(quán)限錯(cuò)誤。
10.df -h/du -sh 目錄
作用:查看磁盤使用情況。
# 查看磁盤整體使用 df -h # 查看某個(gè)目錄大小 du -sh /home du -sh /var/log
11.journalctl -u 服務(wù)名 -f
作用:查看 systemd 服務(wù)日志(如果服務(wù)是用 systemctl 管理的)。
# 查看 myapp 服務(wù)日志 journalctl -u myapp.service -f # 查看最近 100 行 journalctl -u myapp.service -n 100 # 查看今天日志 journalctl -u myapp.service --since today
12.ping 目標(biāo)
作用:測(cè)試網(wǎng)絡(luò)連通性。
ping baidu.com ping 10.135.10.33
13.vmstat 1/iostat
作用:查看系統(tǒng)性能(CPU、內(nèi)存、IO)。
# 每秒刷新一次 vmstat 1 # 安裝 sysstat 后使用 iostat iostat -x 1
14.strace -p PID
作用:跟蹤進(jìn)程的系統(tǒng)調(diào)用(高級(jí)調(diào)試,定位卡頓、死鎖)。
# 跟蹤 Java 進(jìn)程系統(tǒng)調(diào)用 strace -p 1234 # 記錄到文件 strace -o trace.log -p 1234
15.tcpdump -i any port 端口
作用:抓包分析網(wǎng)絡(luò)通信(高級(jí))。
# 抓取 8848 端口的流量 tcpdump -i any port 8848 -n # 保存到文件 tcpdump -i any port 8848 -w nacos.pcap
用 Wireshark 打開 .pcap 文件分析。
推薦組合拳(實(shí)戰(zhàn)排查流程)
當(dāng)你遇到“服務(wù)啟動(dòng)失敗”時(shí),可以按順序執(zhí)行:
# 1. 看日志 tail -f logs/app.log | grep -i error # 2. 查進(jìn)程 ps aux | grep java # 3. 查端口 ss -tulnp | grep :8080 # 4. 測(cè)試連通性 telnet 10.135.10.33 8848 # 5. 查配置文件 find / -name "application.yml" 2>/dev/null # 6. 查磁盤空間 df -h
總結(jié)
這些命令是 運(yùn)維、開發(fā)、調(diào)試的必備技能。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux掛載硬盤并設(shè)置開機(jī)自動(dòng)掛載的實(shí)現(xiàn)步驟
本文介紹了在Linux系統(tǒng)下掛載硬盤的概念和步驟,并講解了開機(jī)自動(dòng)掛載的方法,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定幫助,需要的朋友可以參考下2024-08-08
Apache實(shí)現(xiàn)本地建立泛域名虛擬主機(jī)的方法
這篇文章主要介紹了Apache實(shí)現(xiàn)本地建立泛域名虛擬主機(jī)的方法,簡(jiǎn)單介紹了Apache泛域名虛擬主機(jī)的具體創(chuàng)建步驟與相關(guān)技巧,需要的朋友可以參考下2016-05-05
關(guān)于linux權(quán)限s權(quán)限和t權(quán)限詳解
本文介紹了linux系統(tǒng)內(nèi)的2個(gè)特殊權(quán)限s權(quán)限和t權(quán)限,簡(jiǎn)單易懂,大家可以詳細(xì)看看2018-03-03
如何實(shí)現(xiàn)在Linux上執(zhí)行exe文件
這篇文章主要介紹了在Linux上執(zhí)行exe文件實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
利用lynis如何進(jìn)行l(wèi)inux漏洞掃描詳解
這篇文章主要給大家介紹了關(guān)于利用lynis如何進(jìn)行l(wèi)inux漏洞掃描的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06

