前言
作為後端開發者,掌握一些常用的運維命令也是很有必要的,本文記錄常用Liunx運維命令
基本命令
目錄切換
cd base-admin/ 切換到當前目錄下的base-admin目錄
cd .. 切換到上一層目錄
cd / 切換到系統根目錄
cd ~ 切換到使用者主目錄
cd - 切換到上一個操作所在目錄
目錄操作
mkdir 目錄名稱 建立目錄 ls或者ll(ll是ls -l的別名,ll命令可以看到該目錄下的所有目錄和檔案的詳細資訊) 檢視目錄資訊 find 目錄 引數 尋找目錄(查) 示例: 列出當前目錄及子目錄下所有檔案和資料夾: find . 在/home目錄下查詢以.txt結尾的檔名:find /home -name "*.txt" 同上,但忽略大小寫: find /home -iname "*.txt" 當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf" mv 目錄名稱 新目錄名稱 修改目錄的名稱(改) 注意:mv的語法不僅可以對目錄進行重新命名而且也可以對各種檔案,壓縮包等進行 重新命名的操作。mv命令用來對檔案或目錄重新命名,或者將檔案從一個目錄移到另一個目錄中。後面會介紹到mv命令的另一個用法。 mv 目錄名稱 目錄的新位置 移動目錄的位置---剪下(改) 注意:mv語法不僅可以對目錄進行剪下操作,對檔案和壓縮包等都可執行剪下操作。另外mv與cp的結果不同,mv好像檔案“搬家”,檔案個數並未增加。而cp對檔案進行復制,檔案個數增加了。 cp -r 目錄名稱 目錄拷貝的目標位置 拷貝目錄(改),-r代表遞迴拷貝 注意:cp命令不僅可以拷貝目錄還可以拷貝檔案,壓縮包等,拷貝檔案和壓縮包時不 用寫-r遞迴 rm [-rf] 目錄 刪除目錄(刪) 注意:rm不僅可以刪除目錄,也可以刪除其他檔案或壓縮包,為了增強大家的記憶, 無論刪除任何目錄或檔案,都直接使用rm -rf 目錄/檔案/壓縮包
檔案操作
touch 檔名稱 檔案的建立(增) cat|more|less|tail 檔名稱 檔案的檢視(查) cat 檢視顯示檔案內容 more 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出檢視 less 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束檢視 tail-10 檢視檔案的後10行,Ctrl+C結束 注:命令 tail -f 檔案 可以對某個檔案進行動態監控,例如tomcat的日誌檔案, 會隨著程式的執行,日誌會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化 vim 檔名稱 修改檔案的內容(改) 注:vim編輯器是Linux中的強大元件,是vi編輯器的加強版,vim編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改檔案的方式基本會使用就可以了。 在實際開發中,使用vim編輯器主要作用就是修改配置檔案,下面是一般步驟: vim 檔案------>進入檔案----->命令模式------>按i進入編輯模式----->編輯檔案 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq代表寫入內容並退出,即儲存;輸入q!代表強制退出不儲存。) rm -rf 檔案 刪除檔案(刪) 注:同目錄刪除:熟記 rm -rf 檔案 即可
檢視Liunx引數
檢視CPU資訊
顯示當前正在執行的程式的CPU使用率,記憶體使用率
top
檢視執行緒的CPU使用率,記憶體使用率
top -Hp pid
檢視記憶體資訊
free -h
檢視磁碟資訊
df -h
埠與防火牆
1、檢視當前所有tcp埠及程式服務 netstat -ntlp 2、防火牆 iptables service iptables status 檢視防火牆狀態 service iptables stop 停止防火牆 service iptables start 啟動防火牆 service iptables restart 重啟防火牆 開放、移除8080埠 vim /etc/sysconfig/iptables 加入、刪除配置檔案,如: -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEP 修改完成後使用 :wq 儲存退出檔案,重啟生效:service iptables restart firewalld systemctl status firewalld 檢視狀態 systemctl enable firewalld 啟用防火牆 永久 systemctl stop firewalld 停止防火牆 重啟後失效 systemctl disable firewalld 禁用防火牆 永久 systemctl start firewalld 啟動 systemctl restart firewalld 重啟 開放、移除8080埠 開放 firewall-cmd --add-port=8080/tcp --permanent 移除 firewall-cmd --permanent --remove-port=8080/tcp 修改完成重啟生效 systemctl restart firewalld
部署JAR包
從關閉到啟動
0、檢視執行的java專案 pgrep java | xargs ps 1、先kill掉舊服務 pkill -f myspringboot-0.0.1 2、後臺啟動新服務 (nohup後臺執行,&後臺執行的區別: 使用nohup執行程式: 結果預設會輸出到nohup.out 使用Ctrl + C傳送SIGINT訊號,程式關閉 關閉session傳送SIGHUP訊號,程式免疫 使用&後臺執行程式: 結果會輸出到終端 使用Ctrl + C傳送SIGINT訊號,程式免疫 關閉session傳送SIGHUP訊號,程式關閉 ) 注:先cd進到jar位置 nohup java -jar myspringboot-0.0.1.jar & 如需額外輸出日誌(如果專案已經配置了日誌,就不需要再重複輸入日誌了) nohup java -jar myspringboot-0.0.1.jar > myspringboot-0.0.1.log & 3、控制檯檢視日誌 tail -f myspringboot-0.0.1.log 4、如需修改jar包(前端程式碼、配置檔案等) 1、先cd進到jar位置,然後使用 vim 命令進入jar包 2、使用 / 命令模糊搜尋定位檔案,例如main.js 3、按回車進入檔案,修改完成後使用 :wq 儲存退出檔案,回到jar包目錄,使用 :q 退出jar包,即可成功修改檔案內容 PS:修改jar,重啟生效
常用啟動引數
例如
nohup java -Xmn200m -Xms800m -Xmx800m -XX:+UseG1GC -jar myspringboot-0.0.1.jar &
JVM效能排查
簡單命令
檢視目標JVM的所有配置項引數
jinfo -flags pid
檢視堆記憶體資訊和垃圾回收資訊 jstat -gc pid S0C:年輕代中 To Survivor 的容量(單位 KB); S1C:年輕代中 From Survivor 的容量(單位 KB); S0U:年輕代中 To Survivor 目前已使用空間(單位 KB); S1U:年輕代中 From Survivor 目前已使用空間(單位 KB); EC:年輕代中 Eden 的容量(單位 KB); EU:年輕代中 Eden 目前已使用空間(單位 KB); OC:老年代的容量(單位 KB); OU:老年代目前已使用空間(單位 KB); MC:元空間的容量(單位 KB); MU:元空間目前已使用空間(單位 KB); YGC:從應用程式啟動到取樣時年輕代中 gc 次數; YGCT:從應用程式啟動到取樣時年輕代中 gc 所用時間 (s); FGC:從應用程式啟動到取樣時 老年代(Full Gc)gc 次數; FGCT:從應用程式啟動到取樣時 老年代代(Full Gc)gc 所用時間 (s); GCT:從應用程式啟動到取樣時 gc 用的總時間 (s)。 檢視堆記憶體的初始化資訊以及堆記憶體的使用情況 jmap -heap pid 同時還可以生成dump檔案來進行詳細分析 jmap -dump:live,format=b,file=heap-dump.bin pid 檢視執行緒的堆疊資訊 jstack pid
dump檔案可以下載下來進行分析,也可以直接使用liunx上的jdk的
1、線上分析,啟用服務,訪問http://ip:7000檢視分析結果
jhat -J-Xmx512m heap-dump.bin
2、下載到本地,使用JVisualvm,是 JDK 內建的視覺化效能診斷工具(雙擊執行,檔案,裝入堆dump檔案)
圖形工具
JVisualvm(看上面)
JProfiler (效能診斷利器 JProfiler 快速入門和最佳實踐)
後記
Liunx常用運維命令整理暫時記錄到這,後續再進行補充;
參考如下:
https://github.com/Snailclimb/JavaGuide/blob/master/docs/operating-system/linux.md
https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/手把手教你定位常見Java效能問題.md