學會Linux,看完這篇就行了!

2022-09-20 06:02:51

轉載請註明出處❤️

作者:測試蔡坨坨

原文連結:caituotuo.top/797ab07d.html


你好,我是測試蔡坨坨。

對於測試同學來說,Linux基本屬於必學必會內容,招聘要求中基本都會出現Linux相關字眼,面試也經常被問到,原因很簡單,因為現在公司的伺服器絕大多數都是Linux,如果你一無所知,很多時候聽不懂別人在說什麼,自然而然也很難開展工作。

那麼對於測試人員來說,Linux在日常工作中有哪些應用場景呢?

  • 搭建測試環境

    對於測試環境的搭建,稍微具備一定規模的公司,一般是由專門的運維人員進行環境搭建和維護,包括生產環境和測試環境;如果只有幾個人的初創公司,都不存在運維這個崗位,那麼自然而然就需要測試人員或開發人員來搭建了;有時候需要本地部署測試,因此也可能需要測試人員自己搭建一套環境。

  • 檢視紀錄檔,分析定位Bug

    檢視紀錄檔用的比較多的就是tail和grep這兩個命令,前者是動態查詢,後者是精確查詢。

    先說一下tail動態查詢,一般格式為tail -f -n,-f 表示持續偵測,實時請求一下頁面或者介面就會重新整理的紀錄檔出來,比如tail -f logs/catalina.out,要等到按下ctrl+c才能退出tail的偵測,-n 這裡的n需要替換成具體的數位,表示顯示幾行的意思,如tail -5 caituotuo.log就表示檢視末尾5行。

    再說一下grep精確查詢,一般是根據開發程式碼中列印的關鍵字資訊去精確查詢紀錄檔,比如關鍵字是caituotuo,就可以使用grep caituotuo test.log進行查詢,對於關鍵字是什麼,紀錄檔檔名是什麼,以及去哪個伺服器裡面查詢等問題如果不清楚可以問下開發同學。現在一般都是微服務架構,不同的服務處理不同的業務,可能就會有多類紀錄檔檔案,比如前臺紀錄檔、後臺紀錄檔、快取紀錄檔等,每類紀錄檔可能還會根據時間進行分別儲存,比如按日生成一份紀錄檔檔案2022-9-17.log、2022-9-18.log,不同公司可能不太一樣,但是方式都是大同小異。

  • 效能監控,監控作業系統伺服器硬體資源

    監控CPU會用到top命令;監控記憶體會用到free命令如free /proc/meminfo;監控磁碟會用到df、du命令;監控網路會用到netstat命令,如netstat -ntpl。

    同時監控以上四個資源可以用到vmstat或dstat,也可以用視覺化工具nmon對作業系統硬體資源進行監控。

  • 修改組態檔

    比如:修改Tomcat埠號 vi server.xml

以上說了這麼多,可見測試人員具備Linux技能是十分重要的,下面就來介紹一下Linux以及一些常用命令。

Linux簡介

作者

林納斯·託瓦茲(Linux Torvalds),著名的電腦程式設計師、駭客、Linux核心的發明人及該計劃的合作者。

「有些人生來就是具有統率百萬人的領袖風範;另一些人則是寫出顛覆世界的軟體而生。唯一一個能同時做到這兩者的人,就是託瓦茲。」

美國《時代》週刊對「Linux之父」林納斯·託瓦茲(Linux Torvalds)給出了極高的評價。甚至,在《時代》週刊根據讀者投票評選出的二十世紀100位最重要人物中,林納斯·託瓦茲(Linux Torvalds)居然排到了第15位,而從20世紀的最後幾年就開始霸佔全球首富稱號的比爾蓋茲(微軟,Windows)不過才是第17位。

Linux版本

Linux的發行版本其實就是Linux核心(通過uname -a命令可以檢視),再加上國外的實用程式組成的一個大軟體包而已。

Linux常用的發行版本:

  • Ubuntu:Ubuntu是一個以桌面應用為主的Linux作業系統,其名稱來自非洲南部祖魯語或豪薩語的「Ubuntu」一詞(譯為烏幫託或烏班圖)。
  • Red Hat:Red Hat Linux是全世界應用最廣泛的Linux之一,Red Hat因其易於安裝而聞名,在很大程度上減輕了使用者安裝程式的負擔。
  • CentOS:CentOS是Community ENTerprise Operating System的簡稱,CentOS正是這個Red Hat的克隆版本,CentOS可以像Red Hat一樣的構築Linux系統環境,但不需要向Red Hat付任何的產品和服務費用,同時也得不到任何有償技術支援和升級服務。

Linux優勢

企業部署軟體的伺服器為什麼大多數會選擇Linux系統,在我看來主要有以下幾個優點:

  • Linux系統所執行各種程式的速度是比windows要快很多的。
  • 在windows中我們會安裝不同防毒軟體來保證計算機不被各種病毒攻擊,但在Linux中你可以完全放心,只要有病毒在Linux中執行,不出幾個小時Linux的各個版本都會進行更新,因為全世界的程式設計師都在維護它,因此Linux要比windows安全。
  • 在Windows中安裝各種軟體的時候,很多軟體都會需要計算機進行重啟才可以進行使用,重啟導致客戶體驗差,但在Linux中根本不需要重啟計算機,每安裝一種軟體都會有相應的服務,只需要使用命令重啟軟體服務即可。
  • Windows太浪費系統資源,但是Linux不會,在Linux系統啟動後,記憶體與CPU消耗的資源非常少,但Windows只要一啟動就會佔用很大的記憶體。
  • 在Windows中進行程式設計的時候,我們要安裝不同的開發軟體之類的,但是在Linux,我們只需要學會一種,vi命令(純文字的方式)就可以了。

Linux虛擬機器器

對於想練習Linux命令的同學,首先需要有一臺Linux作業系統的虛擬機器器,提供幾種方法:

  • 自行購買一臺雲伺服器

  • 線上練習Linux命令網站:https://copy.sh/v86/?profile=archlinux

  • 在本機上搭建虛擬機器器(例如通過VMware工具搭建)

    需要VMware安裝包以及搭建好的虛擬機器器檔案可關注公眾號測試蔡坨坨回覆關鍵詞虛擬機器器獲取。

    操作步驟:

    1. 下載並安裝VMware工具

    2. 下載搭建好的虛擬機器器檔案(centOS7,已安裝Java環境及MySQL資料庫)

    3. 開啟虛擬機器器檔案

    4. 開機並開啟網路連線,可檢視IP地址並通過Xsheel和Xftp工具連線

遠端工具

Linux伺服器一般都是在遠端,因此我們需要通過工具去連線遠端伺服器,工具也是多種多樣,這裡推薦Xshell和Xftp。

Linux常用命令

檔案和目錄的相關命令

  • ls命令(list directory)

    功能描述:列出指定目錄下的檔案和資料夾名稱。

    格式:ls [引數] [目錄或檔案]

    引數 含義
    -a 列舉目錄中的全部檔案,包括隱藏檔案(開頭為 . 的檔案為隱藏檔案)。
    -l 長資料串列出,列舉目錄中的細節,包含許可權(r/w/x/-)、所有者、群組、大小、建立日期、檔案是否是連結等(不包含隱藏檔案)。可以使用ll代替ls -l ,表示列出當前路徑下的所有檔案及資料夾的詳細資訊。
    -R 遞迴查詢,不僅檢視當前目錄下所包含的內容,還會把子目錄的內容一併查詢出來。
    -al 列舉目錄中的細節,包含許可權、所有者、群組、大小、建立日期、檔案是否是連結等(含隱藏檔案)。
    -r 逆向查詢,從後面向前地列舉目錄中的內容。
    -s 檔案大小,以資料塊(Linux中自己的一種資料大小的表示形式)的形式做表示。
    ls -l caituotuo.txt 列舉檔案caituotuo.txt的所有資訊,也可以指定目錄,例如:ls -l /etc。
  • mkdir命令(make directory)

    功能描述:建立新目錄/資料夾。

    格式:mkdir [目錄名1] [目錄名2] ...(想要一次性建立多個目錄可以使用空格隔開)

    例如:mkdir caituotuo

    引數 含義
    -p 直接將所有的目錄,包含上一級目錄,遞迴建立起來。例如:mkdir -p ctt1/ctt2/ctt3,再使用ls -R ctt1檢視遞迴目錄。

  • rmdir命令(remove directory)

    功能描述:刪除空目錄。

    格式:rmdir [引數] [目錄名1] [目錄名2] ...

    例如:rmdir caituotuo

    引數 含義
    -p 刪除指定目錄,如果這個指定目錄被刪除後,它所在的父目錄為空,也會一併刪除。 例如:rmdir -p ctt1/ctt2/ctt3

    PS:無法刪除成功的原因可能是目錄非空或要刪除的目錄是當前目錄。

  • cd命令(change directory)

    功能描述:切換目錄,改變使用者所在的目錄。

    格式:cd [目錄名]

    例如:cd /etc

    絕對路徑 由根目錄/開始寫起。例如:cd /root/chs1/chs2/chs3
    相對路徑 不是由根目錄/寫起。例如:已經在/root目錄下,直接寫cd chs1/chs2/chs3

    命令 含義
    cd 返回當前使用者的主目錄。
    cd ~ 返回當前使用者的主目錄。
    cd .. 返回到當前目錄的上一級目錄。
    cd ../.. 返回到當前目錄的上兩級目錄。
    cd / 進入到根目錄。

  • pwd命令(print work directory)

    功能描述:列印使用者當前所處的絕對路徑。

    格式:pwd

  • vi命令

    功能描述:文字編輯器,生成新檔案(檔案不存在的時候)或者編輯、檢視檔案(檔案存在),注意:是檔案不是資料夾。

    格式:vi [file_name]

    例如:vi caituotuo

    模式:

    • Insert

      編輯模式(點選鍵盤insert按鈕,或者i,a,o)

      標誌:左下角出現-- INSERT --

    • Esc

      命令模式(點選鍵盤左上角Esc按鈕)

      標誌:左下角-- INSERT -- 消失

    命令模式下可執行操作 含義
    :w 儲存檔案。
    :wq 儲存並退出。
    :wq! 儲存並強制退出。
    :q 退出。
    x 刪除一個字元。
    $ 遊標移到文字的行尾。
    G 遊標移到文字的末尾。(如果是root使用者在操作,跳轉到最後一行的第一個字母;其他使用者則跳轉到最後一個字元)
    gg 跳轉檔案第一行。
    / 查詢某個字串,例如:/caituotuo(表示查到當前位置第一次出現caituotuo的地方)
  • cat命令

    功能描述:顯示文字內容。

    格式:cat [文字檔案名字]

    例如:cat bcbx_csh2

  • cp命令(copy)

    功能描述:複製檔案或目錄。

    格式:cp [原始檔] [目標資料夾路徑(推薦使用絕對路徑)]

    例如:cp bcbx_chs2 chs1

    引數 含義
    -r 遞迴持續複製,用來複制資料夾。
    -f 強制複製
    -v 詳細:顯示檔案的複製進度。(相當於複製完成的提示工作)
    -i 互動:如果檔案將覆蓋目標中的檔案,他會提示確認。

  • rm命令(remove)

    功能描述:用來刪除檔案或目錄。

    格式:rm [檔名](會提示「是否刪除***檔案」,這個命令不能直接刪除檔案)

    例如:rm bcbx_chs2

    引數 含義
    -r/R 刪除資料夾。
    -f 強制刪除,沒有提示。
    -rf 強制刪除檔案或資料夾。

  • mv命令

    功能描述:移動或重新命名檔案與資料夾。

    格式:

    mv [原始檔夾/檔案] [目標資料夾/檔案](重新命名)

    mv [原始檔/資料夾] [目標資料夾](把某個檔案或資料夾移動到某個資料夾裡面)

    例如:mv bcbx_chs chs1

    引數 含義
    -i 互動:如果選擇的檔案會覆蓋目標中的檔案,他會提示確認。
    -f 強制:不提示地移動檔案。
    -v 詳細:顯示檔案的移動進度。(相當於移動完成的提示工作)
  • find命令

    功能描述:在指定資料夾下查詢檔案或資料夾,並列印絕對路徑。(忘記某個檔案或者資料夾的位置或名稱時使用)

    格式:find [路徑] -name 「資料夾或者檔案名字(部分名字加 * , * 為萬用字元)」

    情景 命令
    知道名字全稱 find / -name "bcbx_chs"
    只知道名字開頭 find / -name "bcbx*"
    只知道名字結尾 find / -name "*_chs"
    知道開頭和結尾,忘記中間部分 find / -name "bc*hs"

  • tar命令

    功能描述:壓縮和解壓檔案。

    格式:

    壓縮:tar -cvf [壓縮後的包名](建議以.tar結尾,方便識別) [想要壓縮的檔案]

    解壓:tar -xvf [壓縮包的名字]

    例如:

    tar -cvf chs.tar bcbx_chs2 bcbx_chs3.txt

    tar -xvf chs.tar

    命令 功能
    tar -zcvf chs.tar.gz chs/ 將chs目錄把包成chs.tar.gz
    tar -jcvf chs.tar.bz2 chs/ 將chs目錄把包成chs.tar.bz2
    tar -zxvf chs.tar.gz -C opt/ctt 將壓縮包chs.tar.gz中的檔案解壓到opt/ctt中
    tar -jxvf chs.tar.bz2 解壓縮chs.tar.bz2
    引數 作用
    -c create,打包
    -x extract,解包
    -v verbose,顯示打包/解包的詳細過程
    -f file,表示打包輸出/解包輸入檔案
    -z 字尾名為gz
    -j 字尾名為bz2
    -C change to directory DIR,將壓縮包中的檔案解壓到指定位置
  • tail命令

    功能描述:檢視檔案結尾的10行。

    格式:tail [檔案]

    例如:tail bcbx_chs2

    引數 含義
    -n 後面接數位,表示顯示幾行的意思。
    -f 表示持續偵測後面所接的檔案,要等到按下ctrl + c退出tail的偵測。

  • echo命令

    功能描述:在顯示屏上回顯字串或者用來檢視環境變數的值(相當於列印輸出print)。

    格式:echo [需要顯示的內容]

    引數 含義
    >> 表示將輸出的內容追加到檔案的最後一行。
    > 覆蓋寫。

    例如:echo 'chstext' >> bcbx_chs2

  • touch命令

    功能描述:建立文字(但是不能插入內容)。

    格式:touch [文字檔案名字]

    例如:touch bcbx_chs3.txt

    可以建立多個文字:touch [名字1] [名字2] [名字3]

系統管理命令

  • hostname命令

    功能描述:顯示主機名稱。

    引數 含義
    -i 顯示主機的ip地址。

  • clear命令

    功能描述:清屏(這個命令將會重新整理螢幕,本質上只是讓終端顯示頁向前翻一頁,如果向上捲動螢幕,還可以看到之前的操作資訊。)

  • top命令

    功能描述:實時檢視當前的程序,動態的,可以看到CPU最近的負載等資訊。(相當於Windows的工作管理員)

  • ps命令

    功能描述:用來顯示當前的程序狀態。(檢視計算機系統中有哪些程式正在執行及執行的情況,用它來查詢所有的程序ID)

    引數 含義
    -e 顯示所有程序。
    -f 顯示程式間的關係。

    格式:ps -ef | grep [程序名]

    例如:ps -ef | grep nginx(檢視nginx程序的狀態)

    ps -ef 未指定哪個程序則顯示所有程序:

    選項 含義
    UID 使用者ID
    PID 程序ID
    PPID 父程序
    C CPU佔用率
    STIME 系統啟動時間
    TTY 登入者的終端機位置
    TIME 耗時
    CMD COMMAND命令,行為
  • kill命令

    功能描述:殺掉程序(用來終止一個正在執行中的程序)

    格式:kill [程序號]

    例如:kill -9 25280

    引數 含義
    -9 強制殺掉程序

  • shutdown命令

    功能描述:關機。

  • logout命令

    功能描述:登出。

  • reboot命令

    功能描述:重啟。

  • ping命令

    功能描述:確定網路和格外部主機的狀態。

    格式:ping [地址]

    例如:ping www.caituotuo.top

  • date命令

    功能描述:顯示或設定系統當前的時間和日期。

    格式:

    date [引數] [日期/時間]

    修改日期:date -s 日期

    修改時間:date -s 時間

    例如:

    修改日期:date -s 2020-11-23

    修改時間:date -s 18:19:11

    同時修改日期和時間:date -s "2020-11-23 18:19:11"

  • ifconfig命令

    功能描述:顯示網路裝置的狀態。

使用者和使用者組管理命令

使用者組管理
  • cat /etc/group

    功能描述:檢視使用者組。

    選項 含義
    組名 組名是使用者組的名稱,右字母或數位構成。與/etc/passwd中的登入名一樣,組名不應該重複。
    口令 口令欄位存放的是使用者組加密後的口令字。一般Linux系統的使用者組都沒有口令,即這個欄位一般為空或x。
    組標識號 組標示號與使用者標識類似,也是一個整數,被系統內部用來表示組,別稱GID。

  • groupadd命令

    功能描述:增加使用者組。

    格式:groupadd [組名]

    例如:groupadd chs1zu

  • groupmod命令

    功能描述:修改使用者組。

    例如:groupmod -n chs2zu chs1zu(將使用者組chs1zu修改為新的使用者組chs2zu)

    引數 含義
    -n 將使用者組的名字修改為新名字。

  • groupdel命令

    功能描述:刪除使用者組

    格式:groupdel [使用者組名]

    例如:groupdel chs2zu

使用者管理
  • cat /etc/passwd

    功能描述:檢視使用者。

    選項 含義
    使用者名稱 代表使用者賬號的字串,通常長度不超過8個字元,並且由大小寫字母或數位組成,登入名中不能含有冒號(