一、導學
掌握linux命令是高級JAVA工程師必備的技能之一,但并不是每個人都能完全掌握,絕大部分Java初中級工程師只知道少數的cd/ls/mkdir/rm等非常簡單的命令,但是只會這些命令是完全不夠的,如果想要提升技術壁壘,晉升成為大牛程序員,掌握最實用的Linux命令是不可或缺的。文本作者結合多年企業開發經驗,將最實用的Linux命令進行了清晰的分類,逐條羅列,對照反復練習即可快速掌握。熟練使用文本提到的命令能有效提升運維技能并幫助各位提高工作效率。
提示:
- 操作系統:centos
- 適合對象:使用過Linux的人群
- 本文命令:多以示例命令為主,要學會舉一反三
二、安裝服務命令
在日常開發和部署的工作中,安裝服務是非常常見的操作,一般來說當我們執行某個命令提示不存在命令時,都需要進行服務安裝,一般安裝命令有2種:在線安裝和離線安裝。對比來說,如果網速還不錯的話,推薦使用在線安裝更加方便。
1.在線安裝
yum install -y vim
示例含義:在線安裝vim服務
注意:如果要加速yum在線下載需要修改yum源為國內源
2.離線安裝
rpm -ivh Tomcat.rpm
示例含義:離線安裝tomcat服務
注意:rpm文件安裝包需要上傳到服務器上,再執行安裝命令
三、文件操作命令
文件操作命令是Linux中使用最為頻繁的命令,眾多命令中還包含非常出名的Linux三劍客grep、awk、sed,在文中也有介紹。
1.創建文件
創建方式1:touch命令直接創建
- yacas touch abc.txt
創建方式2:vi命令修改后保存
- yacas vi abc.txt
- 然后保存
創建方式3:echo命令輸出寫入文件
- yacas echo hello > abc.txt
2.編輯文件
- yacas vi abc.txt
- yacas vim abc.txt
3.vi或vim內查找關鍵詞
用法:vi或vim打開文件后(不要進入到編輯模式)輸入英文的?或/,后面跟上要搜索的關鍵詞即可
- yacas ?hello
- 然后按住n健查找下一個,按N健查找上一個
- yacas /hello
- 然后按住n健查找下一個,按N健查找上一個
4.命令光標的移動
這個命令非常實用,有時候當我們輸入一段比較長的命令時,光標已經到最后了,但發現前面的命令寫錯了,一般的做法是按照向左箭頭按鍵一直往左移動光標,改完由按向右監聽按鍵一直向右移動光標,這個效率太慢了,以下快捷鍵能快速解決這個問題,能直接達到命令最前面和最后面。
- 移動到命令最前:按住快捷鍵 ctrl +a
- 移動到命令最后:按住快捷鍵 ctrl+e
5.vi或vim設置或取消行號
vi或vim打開文件后,根據要求分別輸入如下命令(不要進入到編輯模式)
- 設置行號
shell :set nu
- 取消行號
shell :set nonu
6.vi或vim 調到末行及首行
vi編輯文件時,如果內容太長,想要快速將光標跳轉到文件頭部或尾部,使用下面按鍵
- 跳轉末行 ,按住 G健
- 跳轉首行 ,按住 g健
7.vim或vim刪除行
不進入編輯模式,在要刪除的行敲擊 dd
8.vi或vim復制行
不進入編輯模式,在要刪除的行敲擊 4 yy,標識從當前行開始復制4行,再移動光標到指定位置按p鍵粘貼
9.不編輯查看文件全部內容
cat abc.txt
10.不編輯查找文件內容
- 方式1
shell grep "heima" abc.txt
- 方式2
shell cat abc.txt |grep "heima"
這里用到了Linux三劍客之一的篩選命令grep,主要用于篩選文本
10. 統計某個關鍵字在文件中出現的次數
- 方式1
shell grep "heima" abc.txt |wc -l
- 方式2
shell grep "heima" abc.txt |wc -l
11.查看文件首行或尾行
- 查看前3行
shell head -3 abc.txt
- 查看尾3行
shell tail -3 abc.txt
- 查看尾實時輸出的3行日志
shell tail -3f abc.txt
12.替換文件內某個關鍵字
sed作為Linux三劍客之一,是使用的最流行的替換命令,主要用于替換本文中的內容
sed -i s/heima/itcast/g abc.txt
示例含義:替換abc.txt文件內所有heima為itcast
13.重命名文件
- 方式1
shell mv abc.txt bcd.txt
- 方式2
shell rename abc bcd abc.txt
14.輸出格式固定的文件中第幾行第幾列數據
awk作為Linux三劍客之一,主要用于輸出固定格式文件的內容
假設文本文件內每行數據的格式如: 姓名,年齡,城市,注意分隔符是逗號
- 輸出每一行
shell awk '{print;}' aaa.txt
- 輸出第三列所有值
shell awk -F ',' '{print $3}' aaa.txt
-F后緊跟的是每行內容的分割符號
- 輸出倒數第2列的值
shell awk -F ',' '{print $(NF-1)}' aaa.txt
- 輸出前2行的第2列的值
shell awk -F ',' '{print $2}' aaa.txt|head -2
15.根據名稱查找某目錄下的文件
find test/ -name abc*
示例含義:查找test目錄下,所以文件名包含abc的文件
16.查找文件并刪除
find test/ -name "abc*" | xargs rm -rf
示例含義:查找test目錄下,所以文件名包含abc的文件并執行刪除操作
17.查找30天前創建的文件并刪除
find test/ -mtime +30 -type f | xargs rm -rf
示例含義:查找test目錄下,所有創建時間超過30天的文件并執行刪除操作
18.下載文件
- 單線程下載
shell wget https://archive.Apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
- 多線程下載
shell axel -n 10 https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
示例含義:開啟10個線程一起下載一個文件,注意這種下載效率會比單線程快很多
- 將本地文件上傳到服務器或從服務器下載
- 上傳
rz
執行命令后會彈出窗口,選擇本地的文件,確認后會執行上傳 - 下載
sz 文件命名
默認會下載到本地操作系統downloads目錄下說明:以上兩個命令執行的前提是已經安裝了lrzsz,可通過在線命令yum install -y lrzsz安裝
四、壓縮解壓命令
壓縮解壓命令在開發中比較常見,一般開發部署遇到的壓縮包主要以zip和tar包為主,掌握這2種壓縮文件的壓縮和解壓命令就足夠了。
1.zip
- 壓縮
shell zip -r xxxx.zip xxxx
實例含義:將xxx的全部內容壓縮為xxx.zip
- 解壓
shell unzip -d xxxx xxxx.zip
2.tar.gz
- 壓縮
shell tar -zcvf test.tar.gz test/
- 解壓
shell tar -zxvf test.tar.gz test
五、系統命令
系統命令是我們日常排查服務器問題及進行系統設置時使用比較多的命令,這些命令要求熟記于心
1.查看網卡信息
ip addrifconfig
2.修改密碼
修改當前用戶密碼:
passwd
修改其他用戶密碼:
password deploy
3.重啟系統
reboot
4.重啟網卡
service.NETwork restart
5.關閉防火墻
systemctl stop firewalldsystemctl disable firewalld
6.查看內存大小
- 查看還剩多少m
shell free -m
- 查看還剩多少g
free -g
7.查看磁盤空間
- 查看總共剩下多少空間
shell df -h /
- 查看某個目錄占用空間
shell du -sh test/
- 查看某個文件占用空間
shell du -sh abc.txt
8.查看cpu使用情況
top
9.跨服務器傳輸文件
- 將本服務器文件傳輸到其他服務器
shell scp aaa.zip root@192.168.200.130:/usr/local/ - 將本服務器目錄傳輸到其他服務器
shell scp -r aaa root@192.168.200.130:/usr/local/ - 將其他服務器文件傳輸到本服務器
shell scp root@192.168.200.130:/usr/local/bbb.zip aaa.zip - 將其他服務器目錄傳輸到本服務器
shell scp -r root@192.168.200.130:/usr/local/bbb /mnt
?
六、文件權限命令
1.為文件添加權限
比如我們在任意目錄下執行ls -al,將看到文件或目錄最前面顯示效果如下
444 r--r--r--600 rw-------644 rw-r--r--666 rw-rw-rw-700 rwx------744 rwxr--r--755 rwxr-xr-x777 rwxrwxrwx
解讀下這個展示效果的含義,其實都是文件系統權限相關內容:
從左至右,先是3個數字,代表文件權限然后是9個字母(或者連字符),其中 1-3位數字代表文件所有者權限,4-6位數字代表同組用戶的權限,7-9數字代表其他用戶的權限,而具體的權限是由數字來表示的。
- 讀取的權限等于4,用r表示
- 寫入的權限等于2,用w表示
- 執行的權限等于1,用x表示
通過4、2、1的組合,得到以下幾種權限:
- 0(沒有權限)
- 4(讀取權限)
- 5(4+1 | 讀取+執行)
- 6(4+2 | 讀取+寫入)
- 7(4+2+1 | 讀取+寫入+執行)
2.為某個目錄添加執行權限
chmod a+x -R test
3.以root身份執行命令
su chmod a+x -R test
七、進程命令
服務部署時使用比較多的命令就是進程命令,這些命主要是圍繞著查看進程、確認進程存活情況及殺掉進程等操作
1.查看進程
ps -ef|grep java
示例含義:查看所有運行中的進程信息中包含java的進程
2.查看端口是否占用
lsof -i:8080
示例含義:確認8080端口是否被占用,如果命令執行完有響應數據列表,則表示已占用
3.確認端口是否開啟*
telnet 192.168.200.130 8080
? 示例含義:確認192.168.200.130的8080端口是否能連通,能連通就會進入黑窗口有光標,否則會卡主到超時
4.殺掉進程
kill -9 1011
八、結束語
好了,這么多命令你終于都練習完畢了,有很多命令是不是讓你感覺很Nice,令你眼前一亮呢?還記得這些命令分為哪些種類嗎,如果忘記了就回顧多敲幾遍,熟能生巧! 最后別忘了,除了文中總結的命令以外,我們Java開發中還涉及到基礎命令還有jdk命令、maven命令、git命令,這些也都要求必須掌握的。有關于服務部署命令,更高級的命令還有Docker容器相關命令,感興趣可以在本文基礎之上進一步自學docker。