一个Java工程师的入门级Linux命令集
生活随笔
收集整理的這篇文章主要介紹了
一个Java工程师的入门级Linux命令集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0、前言 ?? 網上介紹linux的命令的文章一大堆,但是大部分都是流于命令介紹,把命令的所有參數都介紹一遍,但是其實在真正的工作中,很多參數都不會用到。本文總結了我自己常用的一些命令,這些命令都比較簡單,運維大神應該看不上,但是,作為一個開發工程師,這些命令往往是日常用的最頻繁的,而且命令與命令之間往往是組合著使用的,根據不同場景組合都不同。 1、基礎命令 1.1、ssh 我們要去線上機器,ssh命令一定繞不過,雖然現在有很多ssh命令客戶端,但是知道一下原理也是有好處的,萬一哪天就要你敲命令行呢?ssh用來連接到遠程服務器,一般都是 ssh xxx@192.168.0.1 這種方式去連接,其中xxx是你登錄機器的身份,一般是自己的用戶名,或者時root,192.168.0.1則是需要登錄的機器IP。除了一般的ssh用法,有些開發可能會使用私鑰文件去連接,這時候就可以用ssh -i kesin.pem xxx@192.168.0.1,其中 kesin.pem是你的私鑰。 1.2、cd/pwd cd用來切換目錄,最基礎的命令,沒啥好說的,注意使用的時候“.” 表示當前目錄, “..” 表示上一個目錄,“~”表示系統登錄時的默認目錄。pwd是用來顯示當前目錄的。 1.3、ls ls是用來顯示當前目錄的文件的命令。我一般用ls -lk列出目錄下所有文件,并且打印詳細信息,其中文件大小用KB表示,也就是-k這個參數的作用。如果嫌麻煩,可以直接用ll,ll是ls -l的別名或者自己定義別名。有時候我需要找一個目錄下的某些文件,這時候就會用 ls -l -R /xxx | grep "xxx" 去遞歸搜索。 1.4、mkdir/rm mkdir用來創建一個文件夾。rm用來刪文件,一般是rm xxx,如果要遞歸刪除文件夾下的所有文件,則用 rm -r /xxx,切記不要在root權限下用rm -r /,會把整個Linux文件全部刪掉的。 1.5、cp cp用來在本機復制文件 一般用法是 cp a.txt /temp/b.txt 將a.txt拷貝到temp目錄下并且命名為b.txt 1.6、scp scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令是cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的。一般用法是 scp a.txt root@11.189.78.21:/usr/local 作用是把a.txt拷貝到11.189.78.21機器上的/usr/local文件夾下。 2、文本處理命令 2.1、grep 一般在排查業務問題的時候,grep "xxx" biz.log 最常用,它的作用是在biz.log中查找所有含有XXX關鍵詞的行。如果想知道關鍵詞出現了多少次,那么就用grep -c "xxx" biz.log或者用grep "xxx" biz.log | wl -c 其中 wl -c就是用來統計次數的。有時候為了對日志異常做全局監控,我會用到grep -e "[a-Z]*Exception" *.log | sort | uniq -c ,它的作用是查詢所有日志中帶有Exception關鍵詞的日志,并且去重后進行排序。grep其實是個非常強大的命令,可以通過管道和很多命令結合,開發出強大的腳本,大家可以結合實際場景慢慢摸索。 2.2、head/tail 有時候grep出來的日志比較多,你只想看前5行,那么你可以用 grep "xxx" biz.log | head -5,當你應用發布完成以后,你想看下新功能打印的日志有沒有出現,以此來判斷新功能是否正常,但又不想一直手工grep,你可以用到tail -f biz.log | grep "xxx",這個命令比較強大,只要日志一直在打印,它就一直讀取日志文件最后一行同時去搜索關鍵詞。 2.3、cat/more/less cat比較簡單,主要三個用法,cat filename 直接讀取并顯示整個文件,cat 1.txt 2.txt > 3.txt 將幾個文件的內容合并到一個文件,cat > filename從鍵盤創建文件。 more filename會加載文件,但是和cat不一樣的地方是,more是一行一行顯示,你可以按空格鍵進行翻頁,可以ctrl+B往前翻頁,ctrl+F往后翻頁,可以用/xxx進行全局匹配,找到第一次出現xxx的那一行. less和more的用法差不多,區別在于less不會在一開始就加載整個文件,在一些大文件日志分析的時候,盡量用less。 2.4、awk awk本身是一個很強大的工具,我們可以為awk工具傳遞一個字符串,該字符串的內容類似一種編程語言的語法,我們可以稱其為Awk語言,而awk工具本身則可以看作是Awk語言的解析器。就好比python解析器與Python語言的關系。我們一般使用awk對文件中文本分列進行處理,所以如果一個文件中的每行都被特定的分隔符(常見的是空格)隔開,我們可以將這個文件看成是由很多列的文本組成,這樣的文件最適合用awk進行處理。 一個完整的awk命令形式如下: awk [options] 'BEGIN{ commands } pattern{ commands } END{ commands }' file 我一般常到的就兩種: 1、awk '{print$1}' a.txt 意思是對a.txt文本進行處理,按照空格(默認就是空格)分割,然后打印出第一個字符串,比如a.txt的內容是aaa bbb ccc 經過上面的命令處理后輸出的就是aaa 2、awk -F "," '{print$2}' a.txt 意思是對a.txt進行文本處理,按照","分割,然后打印出第二個字符串,比如a.txt的內容是 aaa,bbb,ccc 經過上面的命令處理后輸出的就是bbb 其實awk在工作中很多時候被用來進行log分析的, 我們在打印業務日志的時候需要規范日志格式,比如:OrderService.create#param1,param2,param3#errorCode=xxx,errorMsg=yyy這樣的日志,這時候如果要對errorCode進行監控,就只能靠awk了,腳本類似于: cat biz.log | awk -F "#" '{print$3}' | awk -F "," '{print$1}' | awk -F "=" 'print{$2}'| sort | uniq -c| > errorCode.txt 腳本先加載 biz.log,然后按照"#"分割,取出第三個字符串 “errorCode=xxx,errorMsg=yyy”,然后通過管道再調用一次awk,按照“,”分割,取出第一個字符串“errorCode=xxx”,然后再用一次awk按照=分割,取出xxx,最后進行去重排序后寫入errorCode.txt 上面只是一個例子而已,具體需要根據日志分析的需求去定制化腳本,如果想詳細了解awk,推薦一本書《sed與awk》 2.5、sed sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作。我在工作中用到sed比較少,主要是用它做全局替換,比如上面用awk處理得到的errorCode.txt,假設它的原文如下: 1 P001 2 P009 13 P102 其中數字是該errorCode出現的次數,P001/P009這些就是具體的errorCode,如果這時候我需要將P替換成字符串ERROR,以便后續的處理,那么我就可以用sed "s/P/ERROR" errorCode.txt進行全局替換。 如果要深入學習sed,同樣推薦看《sed與awk》這本書。 3、小結 Linux命令最好的學習方式不是看書,也不是死記硬背每個命令的參數,而是不斷地使用,然后總結出一套屬于自己的腳本,每個開發都應該維護好自己的一套腳本,不斷地用腳本把一些可以自動化的工作用腳本代替,從而提高自己的工作效率!
========================================================
如果覺得還不錯,請隨意打賞
轉載于:https://www.cnblogs.com/biakia/p/6195835.html
總結
以上是生活随笔為你收集整理的一个Java工程师的入门级Linux命令集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git的两本推荐书
- 下一篇: 安全测试-抓包工具BurpSuite