轉載請註明出處❤️
作者:測試蔡坨坨
原文連結: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 Torvalds),著名的電腦程式設計師、駭客、Linux核心的發明人及該計劃的合作者。
「有些人生來就是具有統率百萬人的領袖風範;另一些人則是寫出顛覆世界的軟體而生。唯一一個能同時做到這兩者的人,就是託瓦茲。」
美國《時代》週刊對「Linux之父」林納斯·託瓦茲(Linux Torvalds)給出了極高的評價。甚至,在《時代》週刊根據讀者投票評選出的二十世紀100位最重要人物中,林納斯·託瓦茲(Linux Torvalds)居然排到了第15位,而從20世紀的最後幾年就開始霸佔全球首富稱號的比爾蓋茲(微軟,Windows)不過才是第17位。
Linux的發行版本其實就是Linux核心(通過uname -a命令可以檢視),再加上國外的實用程式組成的一個大軟體包而已。
Linux常用的發行版本:
企業部署軟體的伺服器為什麼大多數會選擇Linux系統,在我看來主要有以下幾個優點:
對於想練習Linux命令的同學,首先需要有一臺Linux作業系統的虛擬機器器,提供幾種方法:
自行購買一臺雲伺服器
線上練習Linux命令網站:https://copy.sh/v86/?profile=archlinux
在本機上搭建虛擬機器器(例如通過VMware工具搭建)
需要VMware安裝包
以及搭建好的虛擬機器器檔案
可關注公眾號測試蔡坨坨
回覆關鍵詞虛擬機器器
獲取。
操作步驟:
下載並安裝VMware工具
下載搭建好的虛擬機器器檔案(centOS7,已安裝Java環境及MySQL資料庫)
開啟虛擬機器器檔案
開機並開啟網路連線,可檢視IP地址並通過Xsheel和Xftp工具連線
Linux伺服器一般都是在遠端,因此我們需要通過工具去連線遠端伺服器,工具也是多種多樣,這裡推薦Xshell和Xftp。
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個字元,並且由大小寫字母或數位組成,登入名中不能含有冒號(
|