Linux常用運維命令整理記錄
前言
作為後端開發者,掌握一些常用的運維命令也是很有必要的,本文記錄常用Linux運維命令
基本命令
目錄切換
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 文件 即可
查看Linux參數
查看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、在線分析,啟用服務,訪問//ip:7000查看分析結果
jhat -J-Xmx512m heap-dump.bin
2、下載到本地,使用JVisualvm,是 JDK 內置的可視化性能診斷工具(雙擊運行,文件,裝入堆dump文件)
圖形工具
JVisualvm(看上面)
JProfiler (性能診斷利器 JProfiler 快速入門和最佳實踐)
後記
Linux常用運維命令整理暫時記錄到這,後續再進行補充;
參考如下:
//github.com/Snailclimb/JavaGuide/blob/master/docs/operating-system/linux.md
//github.com/Snailclimb/JavaGuide/blob/master/docs/java/手把手教你定位常見Java性能問題.md