Linux基礎命令和項目部署

来源:https://www.cnblogs.com/V-Notes/archive/2023/02/16/17126861.html
-Advertisement-
Play Games

常用命令 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腳本分配執行許可權

  1. 為所有用戶授予讀、寫、執行許可權

    chmod 777 bootStart.sh
    
  2. 為文件擁有者授予讀、寫、執行許可權,同組用戶和其他用戶授予讀、執行許可權

    chmod 755 bootStart.sh
    
  3. 為文件擁有者授予寫許可權,同組用戶授予執行許可權,其他用戶沒有任何許可權

    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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我是3y,一年CRUD經驗用十年的markdown程式員👨🏻‍💻常年被譽為職業八股文選手 今天繼續更新Austin,給Austin新增一個發送渠道(PUSH通知欄推送) Push通知欄消息是非常常見的,幾乎每個APP都會做這個功能(沒有消息推送的APP不是一個好的APP) 一般我們認為Push ...
  • 工欲善其事必先利其器,在使用Python開發程式之前,在電腦上搭建Python開發環境是必不可少的環節,目前Python最新穩定版本是3.11.1,且支持到2027年,如下圖所示 本文手把手帶你從0 到1搭建Python最新版3.11.1開發環境,堪稱保姆級教程,快快收藏啦~ 一、Python解釋 ...
  • 最近幾年,Java 的技術棧發展的非常快,Java作為一門十分流行的面向對象編程語言,其開發工具也是非常多的,當然因為接觸時間長短以及個人喜好,每個人都有自己的選擇。對此,我對目前市面上常見的Java開發工具做了一些簡單的整理,希望能幫助到一些小伙伴。 一、常見的Java開發工具有哪些? Eclip ...
  • 一、字元串str 大白話的意思其實就是文本類型的數據>>>:引號引起來的部分都是字元串 應用場景:姓名 地址 愛好 name = 'kevin' addr = '浦東新區' hobby = '學習' 定義字元串的四種方式 # 方式1: name = 'kevin' # 方式2: name = "ke ...
  • MQ,中文是消息隊列(MessageQueue),字面來看就是存放消息的隊列。也就是事件驅動架構中的Broker。 快速入門 1.publisher實現 public class PublisherTest { @Test public void testSendMessage() throws I ...
  • 一、安裝PHP 下載:https://windows.php.net/download 我下載的是此時的最新版8.2.3 下載後 解壓目錄 放到C:/tool下麵目錄重命名為PHP 目錄自己定 我這個tool目錄是個人習慣 你可以放到主流的C:\Program Files下也可以放到D盤E盤任何地方 ...
  • 一、部署gitlab 這裡使用的是Centos8,安裝Docker環境 ,這裡不說了,參考:https://www.cnblogs.com/wei325/p/15139701.html gitlab有ce版和ee版,ce版為免費版本;ee版為企業版本,需要收費;企業使用ce版足夠了,這裡用ce版。 ...
  • 概述 工廠方法模式(FactoryMethod),定義一個創建產品對象的工廠介面,讓工廠子類決定實例化那一個產品類。我們把被創建的對象稱為“產品”,把創建產品的對象稱為“工廠”。如果要創建的產品不多,只要一個工廠類就可以完成,這種模式叫“簡單工廠模式”,它不屬於 23 種經典設計模式,它的缺點是增加 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...