常用命令 ip addr 查看ip地址 pwd 顯示當前所有路徑 top 查看進程的cpu、記憶體占用情況 ps -ef | grep -i 進程名字 查看進程運行信息 kill -9 進程pid 強制殺死進程 history 查看歷史命令 !歷史命令編號 執行該歷史命令 shutdown 關機 re ...
常用命令
- ip addr
查看ip地址- pwd
顯示當前所有路徑- top
查看進程的cpu、記憶體占用情況- ps -ef | grep -i 進程名字
查看進程運行信息- kill -9 進程pid
強制殺死進程- history
查看歷史命令- !歷史命令編號
執行該歷史命令- shutdown
關機- reboot
重啟
Linux命令格式
command [-options] [parameter]
# ls -l /root
說明:
command: 命令名
[-options]: 選項,可用來對命令進行控制,也可以省略
[parameter]: 傳給命令的參數,可以是零個、一個或者多個
註意:
[] 代表可選
命令名、選項、參數之間有空格進行分隔
註意:
在執行Linux命令時,提示信息如果顯示為亂碼,如上圖所示。這是由於編碼問題導致,只需要修改Linux的編碼即可,命令如下:
echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
文件目錄操作命令
ls - 顯示指定目錄下的內容
作用: 顯示指定目錄下的內容
語法: ls [-al] [dir]
說明:
-a 顯示所有文件及目錄 (. 開頭的隱藏文件也會列出)
-l 除文件名稱外,同時將文件型態(d表示目錄,-表示文件)、許可權、擁有者、文件大小等信息詳細列出
註意:
由於我們使用ls命令時經常需要加入-l選項,所以Linux為ls -l命令提供了一種簡寫方式,即ll
常見用法:
ls -al 查看當前目錄的所有文件及目錄詳細信息
ls -al /etc 查看/etc目錄下所有文件及目錄詳細信息
ll 查看當前目錄文件及目錄的詳細信息
cd - 用於切換當前工作目錄,即進入指定目錄
作用: 用於切換當前工作目錄,即進入指定目錄
語法: cd [dirName]
特殊說明:
~ 表示用戶的home目錄
. 表示目前所在的目錄
.. 表示目前目錄位置的上級目錄
舉例:
cd .. 切換到當前目錄的上級目錄
cd ~ 切換到用戶的home目錄
cd /usr/local 切換到/usr/local目錄
cat:適合查看小文件
作用: 用於顯示文件內容 小文件
語法: cat [-n] fileName
說明:
-n: 由1開始對所有輸出的行數編號
舉例:
cat /etc/profile 查看/etc目錄下的profile文件內容
more:適合查看大文件
作用: 以分頁的形式顯示文件內容
語法: more fileName
操作說明:
回車鍵 向下滾動一行
空格鍵 向下滾動一屏
b 返回上一屏
q或者Ctrl+C 退出more
舉例:
more /etc/profile 以分頁方式顯示/etc目錄下的profile文件內容
tail:動態監控文件
作用: 查看文件末尾的內容
語法: tail [-f] fileName
說明:
-f : 動態讀取文件末尾內容並顯示,通常用於日誌文件的內容輸出
舉例:
tail /etc/profile 顯示/etc目錄下的profile文件末尾10行的內容
tail -20 /etc/profile 顯示/etc目錄下的profile文件末尾20行的內容
tail -f /itcast/my.log 動態讀取/itcast目錄下的my.log文件末尾內容並顯示
mkdir - 創建目錄
作用: 創建目錄
語法: mkdir [-p] dirName
說明:
-p: 如果父目錄不存在,則一併創建父目錄和子目錄
舉例:
mkdir itcast 在當前目錄下,建立一個名為itcast的子目錄
mkdir -p itcast/test 在工作目錄下的itcast目錄中建立一個名為test的子目錄,若itcast目錄不存在,則建立一個
rm - 刪除文件或者目錄
作用: 刪除文件或者目錄
語法: rm [-rf] name
說明:
-r: 將目錄及目錄中所有文件(目錄)逐一刪除,即遞歸刪除
-f: 無需確認,直接刪除
舉例:
rm -r itcast/ 刪除名為itcast的目錄和目錄中所有文件,刪除前需確認
rm -rf itcast/ 無需確認,直接刪除名為itcast的目錄和目錄中所有文件
rm -f hello.txt 無需確認,直接刪除hello.txt文件
拷貝移動命令
cp - 複製文件或者目錄
作用: 用於複製文件或目錄
語法: cp [-r] source dest
說明:
-r: 如果複製的是目錄需要使用此選項,此時將複製該目錄下所有的子目錄和文件
舉例:
cp hello.txt itcast/ 將hello.txt複製到itcast目錄中
cp hello.txt ./hi.txt 將hello.txt複製到當前目錄,並改名為hi.txt
cp -r itcast/ ./itheima/ 將itcast目錄和目錄下所有文件複製到itheima目錄下
cp -r itcast/* ./itheima/ 將itcast目錄下所有文件複製到itheima目錄下
mv - 改名或移動
作用: 為文件或目錄改名、或將文件或目錄移動到其它位置
語法: mv source dest
# desd 不存在,就是改名。 desd 存在,就是移動
舉例:
mv hello.txt hi.txt 將hello.txt改名為hi.txt
mv hi.txt itheima/ 將文件hi.txt移動到itheima目錄中
mv hi.txt itheima/hello.txt 將hi.txt移動到itheima目錄中,並改名為hello.txt
mv itcast/ itheima/ 如果itheima目錄不存在,將itcast目錄改名為itheima
mv itcast/ itheima/ 如果itheima目錄存在,將itcast目錄移動到itheima目錄中
打包壓縮命令
作用: 對文件進行打包、解包、壓縮、解壓
語法: tar [-zcxvf] fileName [files]
包文件尾碼為.tar表示只是完成了打包,並沒有壓縮
包文件尾碼為.tar.gz表示打包的同時還進行了壓縮
說明:
-z: z代表的是gzip,通過gzip命令處理文件,gzip可以對文件壓縮或者解壓
-c: c 打包或壓縮
-x: x 解包或解壓
-v: v 顯示進度條
-f: f 為文件取一個名字
#一般操作
#壓縮 tar -zcvf 壓縮後的文件名 被壓縮的文件列表
#解壓縮 tar -zxvf 要解壓縮的文件名 [-C 指定目錄]
舉例:
打包
tar -cvf hello.tar ./* 將當前目錄下所有文件打包,打包後的文件名為hello.tar
常用 tar -zcvf hello.tar.gz ./* 將當前目錄下所有文件打包並壓縮,打包後的文件名為hello.tar.gz
解包
tar -xvf hello.tar 將hello.tar文件進行解包,並將解包後的文件放在當前目錄
常用 tar -zxvf hello.tar.gz 將hello.tar.gz文件進行解壓,並將解壓後的文件放在當前目錄
tar -zxvf hello.tar.gz -C /usr/local 將hello.tar.gz文件進行解壓,並將解壓後的文件放在/usr/local目錄
文本編輯命令
文本編輯的命令,主要包含兩個: vi (linux 自帶得)和 vim (安裝插件),兩個命令的用法類似,這裡主要介紹vim的使用。
vim安裝:
yum install vim
對文件內容進行編輯,vim其實就是一個文本編輯器
語法: vim fileName
說明:
1). 在使用vim命令編輯文件時,如果指定的文件存在則直接打開此文件。如果指定的文件不存在則新建文件。
2). vim在進行文本編輯時共分為三種模式,分別是 命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。這三種模式之間可以相互切換。我們在使用vim時一定要註意我們當前所處的是哪種模式。
三種模式:
- 命令模式
A. 命令模式下可以查看文件內容、移動游標(上下左右箭頭、gg、G)
B. 通過vim命令打開文件後,預設進入命令模式
C. 另外兩種模式需要首先進入命令模式,才能進入彼此
命令模式指令 | 含義 |
---|---|
gg | 定位到文本內容的第一行 |
G | 定位到文本內容的最後一行 |
dd | 刪除游標所在行的數據 |
ndd | 刪除當前游標所在行及之後的n行數據 |
u | 撤銷操作 |
shift+zz | 保存並退出 |
i 或 a 或 o | 進入插入模式 |
-
插入模式
A. 插入模式下可以對文件內容進行編輯
B. 在命令模式下按下[i,a,o]任意一個,可以進入插入模式。進入插入模式後,下方會出現【insert】字樣
C. 在插入模式下按下ESC鍵,回到命令模式 -
底行模式
A. 底行模式下可以通過命令對文件內容進行查找、顯示行號、退出等操作
B. 在命令模式下按下[:,/]任意一個,可以進入底行模式
C. 通過/方式進入底行模式後,可以對文件內容進行查找
D. 通過:方式進入底行模式後,可以輸入wq(保存並退出)、q!(不保存退出)、set nu(顯示行號)底行模式命令 含義 :wq 保存並退出 :q! 不保存退出 :set nu 顯示行號 :set nonu 取消行號顯示 :n 定位到第n行, 如 :10 就是定位到第10行
查找命令
find - 在指定目錄下查找文件
作用: 在指定目錄下查找文件
語法: find dirName -option fileName
舉例:
find . –name "*.java" 在當前目錄及其子目錄下查找.java結尾文件
find /itcast -name "*.java" 在/itcast目錄及其子目錄下查找.java結尾的文件
grep - 從指定文件中查找指定的文本內容
作用: 從指定文件中查找指定的文本內容
語法: grep word fileName
舉例:
grep Hello HelloWorld.java 查找HelloWorld.java文件中出現的Hello字元串的位置
grep hello *.java 查找當前目錄中所有.java結尾的文件中包含hello字元串的位置
grep -n '王者' 大說.txt 查找文件中存在的數據,並且顯示行號。
項目部署
之前我們講解Linux操作系統時,就提到,我們服務端開發工程師學習Linux系統的目的就是將來我們開發的項目絕大部分情況下都需要部署在Linux系統中。那麼在本章節,我們將通過兩種方式,來演示項目部署,分別是:手動部署項目 和 基於shell腳本自動部署。
1.手動部署項目
-
將在IDEA中開發的SpringBoot項目,執行package指令,打成一個jar包。
-
將jar包上傳到Linux伺服器
-
在/usr/local下創建目錄app
mkdir /usr/local/app
-
切換到app目錄
cd /usr/local/app
-
-
將打好的jar包上傳至Linux伺服器的 /usr/local/app 目錄下
-
啟動SpringBoot程式
-
直接啟動
java -jar jar包名.jar
-
後臺啟動
nohup java -jar jar包名.jar &> 日誌名.log &
-
nohup命令:英文全稱 no hang up(不掛起),用於不掛斷地運行指定命令,退出終端不會影響程式的運行
語法格式: nohup Command [ Arg … ] [&]
參數說明:
Command:要執行的命令
Arg:一些參數,可以指定輸出文件
&:讓命令在後臺運行
舉例:
nohup java -jar boot工程.jar &> hello.log &
上述指令的含義為: 後臺運行 java -jar 命令,並將日誌輸出到hello.log文件
2. 基於Shell腳本自動部署
Git操作
1). Git軟體安裝
yum list git 列出git安裝包
yum install git 線上安裝git
2). Git克隆代碼
cd /usr/local
git clone https://gitee.com/cqwiu/helloworld.git
Shell腳本準備
Shell腳本(shell script),是一種Linux系統中的腳本程式。使用Shell腳本編程跟 JavaScript、Java編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
對於Shell腳本編寫不作為本課程重點內容,直接使用課程資料中提供的腳本文件bootStart.sh即可。
在/usr/local/目錄下創建一個目錄 sh(mkdir sh),並將shell腳本上傳到該目錄下。
mkdir -p /usr/local/sh
cd /usr/local/sh
vim bootStart.sh
- 把如下的內容複製到 bootStart.sh 文件中
#!/bin/sh
echo =================================
echo 自動化部署腳本啟動
echo =================================
echo 停止原來運行中的工程
# APP_NAME 項目的名稱
APP_NAME=項目名
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 準備從Git倉庫拉取最新代碼
# /usr/local/linux2 地址碼雲拉項目的文件夾
cd /usr/local/項目名
echo 開始從Git倉庫拉取最新代碼
git pull
echo 代碼拉取完成
echo 開始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 啟動項目
# jar包的名稱
nohup java -jar jar包名.jar &> 日誌名.log &
echo 項目啟動完成
在這裡,要用 vim 編輯器把內容複製進去,使用外部工具編輯腳本文件可能會有編碼的問題
為Shell腳本分配執行許可權
-
為所有用戶授予讀、寫、執行許可權
chmod 777 bootStart.sh
-
為文件擁有者授予讀、寫、執行許可權,同組用戶和其他用戶授予讀、執行許可權
chmod 755 bootStart.sh
-
為文件擁有者授予寫許可權,同組用戶授予執行許可權,其他用戶沒有任何許可權
chmod 210 bootStart.sh
啟動sh腳本文件
./bootStart.sh
3. 設置靜態IP
我們目前安裝的Linux操作系統,安裝完畢之後並沒有配置IP地址,預設IP地址是動態獲取的,那如果我們使用該Linux伺服器部署項目,IP動態獲取的話,也就意味著,IP地址可能會發生變動,那我們訪問項目的話就會非常繁瑣,所以作為伺服器,我們一般還需要把IP地址設置為靜態的。
1). 設置靜態IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static # 這裡改成static
IPADDR="192.168.138.150" # 設置的靜態IP地址,根據自己的網段設置
NETMASK="255.255.255.0" # 子網掩碼
GATEWAY="192.168.138.2" # 網關地址,根據自己的網段設置
DNS1="8.8.8.8" # DNS伺服器,根據自己的網段設置
上述我們所設置的網段為138,並不是隨意指定的,需要和我們虛擬機中的虛擬網路編輯器中的NAT模式配置的網關保持一致。
2). 重啟網路服務
systemctl restart network
- 再次使用Xterm進行連接時,就需要使用新IP