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