1. 使⽤兩種命令創建⼀個⽂件?
touch a.txt
vi a.txt
mkdir abc
cat > a.txt 建⽴⼀⽂件,然後把接下來的鍵盤輸⼊寫⼊⽂件,直到按Ctrl+D爲⽌.
2. 硬鏈接和軟連接的區別?
硬鏈接:
1、⽂件有相同的 inode 及 data block;
2、只能對已存在的⽂件進⾏創建;
3、不能交叉⽂件系統進⾏硬鏈接的創建;
4、不能對⽬錄進⾏創建,只可對⽂件創建;
5、刪除⼀個硬鏈接⽂件並不影響其他有相同 inode 號的⽂件。
軟鏈接:
1、軟鏈接有⾃⼰的⽂件屬性及權限等;
2、可對不存在的⽂件或⽬錄創建軟鏈接;
3、軟鏈接可交叉⽂件系統;
4、軟鏈接可對⽂件或⽬錄創建;
5、創建軟鏈接時,鏈接計數 i_nlink 不會增加;
6、刪除軟鏈接並不影響被指向的⽂件,但若被指向的原⽂件被刪除,則相關軟連接被稱爲死鏈接(即 danglinglink,若被指向路徑⽂件被重新創建,死鏈接可恢復爲正常的軟鏈接)。
3. linux常⽤命令有哪些?
4. 怎麼查看⼀個java線程的資源耗⽤?
linux下,所有的java內部線程,其實都對應了⼀個進程id,也就是說,linux上的jvm將java程序中的線程映射爲操作系統進程。
5. Load過⾼的可能性有哪些?
cpu load的飆升,⼀⽅⾯可能和full gc的次數增⼤有關,⼀⽅⾯可能和死循環有關係
6. /etc/hosts⽂件什麼作⽤?
在當前主機給ip設置別名,通過該別名可以訪問到該ip地址,通過別名、ip訪問的效果是⼀樣的。
7. 如何快速的將⼀個⽂本中的"abc"轉換成"xyz"?
8. 如何在log⽂件中搜索找出error的⽇志?
cat xx.log | grep 'error'
9. 發現硬盤空間不夠,如何快速找出佔⽤空間最⼤的⽂件?
10. Java服務端問題排查(OOM,CPU⾼,Load⾼,類衝突)?
a. https://blog.csdn.net/and1kaney/article/details/51214219
b. 業務⽇志相關:
- i. less或者more
- ii. grep
- iii. tail -f filename
- 注意:切忌vim直接打開⼤⽇志⽂件,因爲會直接加載到內存的
c. 數據庫相關:
- i. 登錄線上庫,show processlist查看數據庫連接情況
d. jvm相關:
- i. jps顯示java進程
- ii. jinfo實時查看和調整jvm參數
- iii. jstat監控jvm各種運⾏狀態信息;
- iv. jstack(Stack Trace for Java)命令⽤於⽣成JVM進程當前時刻的線程的調⽤堆棧,可以⽤來定位線程間死鎖、鎖等待、等待外部資源等
- v. jmap(Memory Map for Java) 命令⽤於⽣成堆轉儲快照dump⽂件,除了這種⽅式還可以通過-XX:HeapDumpOnOutOfMemoryError參數,可以在虛擬機發⽣OOM的時候⾃動⽣成堆的dump⽂件,或者kill -3命令發出進程退出信號"嚇唬"⼀下虛擬機,也能拿到dump⽂件。
e. oom問題:
- i. 配置了-XX:+HeapDumpOnOutOfMemoryError, 在發⽣OOM的時候會在-XX:HeapDumpPath⽣成堆的dump⽂件,結合MAT,可以對dump⽂件進⾏分析,查找出發⽣OOM的原因。
- ii. 另外⼿動dump堆快照,可以使⽤命令jmap -dump:format=b,file=file_name pid 或者kill -3 pid
f. 死鎖:
- i. jps -v
- ii. jstack -l pid
g. 線程block、線程數暴漲:
- i. jstack -l pid |wc -l
- ii. jstack -l pid |grep “BLOCKED”|wc -l
- iii. jstack -l pid |grep “Waiting on condition”|wc -l
線程block問題⼀般是等待io、等待⽹絡、等待監視器鎖等造成,可能會導致請求超時、造成造成線程數暴漲導致系統502等。
h. 服務器問題:
- i. cpu:top
- ii. 內存:
- free -m -c10 -s1: a. -m:以MB爲單位顯示,其他的有-k -g -b b. -s: 間隔多少秒持續觀察內存使⽤狀況 c. -c:觀察多少次
- vmstat 1 10:1表示每隔1s輸出⼀次,10 表示輸出10次 a. r: 運⾏隊列中進程數量,這個值也可以判斷是否需要增加CPU。(⻓期⼤於1) b. b: 等待IO的進程數量。
i. io:
i. iostat -m 1 10:- -m:某些使⽤block爲單位的列強制使⽤MB爲單位
- 1 10:數據顯示每隔1秒刷新⼀次,共顯示10次 j. ⽹絡:
i. netstat -antp:- -a (all)顯示所有選項,默認不顯示LISTEN相關
- -t (tcp)僅顯示tcp相關選項
- -u (udp)僅顯示udp相關選項
- -n 拒絕顯示別名,能顯示數字的全部轉化成數字。
- -l 僅列出有在 Listen (監聽) 的服服務狀態
- -p 顯示建⽴相關鏈接的程序名
Java常⽤問題排查⼯具及⽤法(top,iostat,vmstat,sar,tcpdump,jvisualvm,jmap,jconsole)
https://blog.csdn.net/xad707348125/article/details/51985854
12. Thread dump⽂件如何分析(Runnable,鎖,代碼棧,操作系統線程id關聯)
a. Thread Dump 能診斷的問題
- i. 查找內存泄露,常⻅的是程序⾥load⼤量的數據到緩存;
- ii. 發現死鎖線程;
b. 如何抓取Thread Dump信息:
- i. ⼀般當服務器掛起,崩潰或者性能底下時,就需要抓取服務器的線程堆棧(Thread Dump)⽤於後續的分析. 在實際運⾏中,往往⼀次 dump的信息,還不⾜以確認問題。爲了反映線程狀態的動態變化,需要接連多次做threaddump,每次間隔10-20s,建議⾄少產⽣三次 dump信息,如果每次 dump都指向同⼀個問題,我們才確定問題的典型性。
- ii. linux命令獲取:
- iii. jdk⾃帶⼯具獲取:
- c. 分析:https://blog.csdn.net/rachel_luo/article/details/8920596
13. 如何查看Java應⽤的線程信息?
通過top命令拿到線程的pid後使⽤jstack命令
14. 計數?
wc -l