學會Linux,看完這篇就行了!
轉載請註明出處❤️
作者:測試蔡坨坨
原文鏈接: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命令網站://copy.sh/v86/?profile=archlinux
-
在本機上搭建虛擬機(例如通過VMware工具搭建)
需要
VMware安裝包以及搭建好的虛擬機文件可關注公眾號測試蔡坨坨回復關鍵詞虛擬機獲取。
操作步驟:
-
下載並安裝VMware工具
-
下載搭建好的虛擬機文件(centOS7,已安裝Java環境及MySQL資料庫)

-
打開虛擬機文件
-
開機並打開網路連接,可查看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個字元,並且由大小寫字母或數字組成,登錄名中不能含有冒號(😃,因為冒號在這裡是分隔符。為了兼容起見,登錄名中最好不要包含點字元(.),並且不適用連字元(-)和加號(+)打頭。 口令 存放加密後的用戶口令字,存放一個特殊的字元,例如x或*,把真正的加密後的用戶口令字存放到/etc/shadow文件中。 用戶標識號 是一個整數,系統內部用它來標識用戶。一般情況下它與用戶名是一 一對應的。 組標識號 欄位記錄的是用戶所屬的用戶組。它對應著/etc/group文件中的一條記錄。 
-
useradd命令
功能描述:增加用戶。
格式:useradd [用戶名] [參數]
例如:useradd chs -c xuesheng -g chs1zu
參數 含義 -c 指定一段注釋性描述。 -g 指定用戶所屬的用戶組。 
-
usermod命令
功能描述:修改用戶。
例如:
修改用戶名:usermod -l caihs chs
修改描述:usermod -c bcbxxuesheng caihs
修改用戶所屬的用戶組:usermod -g chs2zu caihs
參數 含義 -l 指定一個新的帳號,即將原來的用戶名改為新的用戶名。 -c 修改描述。 -g 修改用戶所屬的用戶組。 

-
userdel命令
功能描述:刪除用戶。
格式:userdel [用戶名]
例如:userdel chs1

-
passwd命令
功能描述:為用戶設置密碼。
格式:passwd [用戶名]
例如:passwd chs

許可權相關的命令
-
su命令
功能描述:切換用戶。(root用戶切換到其他用戶不需要密碼,普通用戶切換到root或其他用戶需要密碼)
格式:su [用戶名]
例如:su chs

-
chown命令
功能描述:更改文件的擁有者。
格式:chown [用戶]:[用戶組] 文件
例如:chown chs:chs1zu hh
參數 含義 -R 更改文件夾的擁有者。 -
chmod命令
功能描述:改變文件或文件夾的許可權。
格式:chmod [三位數字] [文件/文件夾]
例如:chmod 777 hh
許可權代號 數字代號 含義 r 4 讀取許可權 w 2 寫入許可權 x 1 執行或切換許可權 - 0 不具有任何許可權 PS:一共有10個字元,第1個字元表示文件類型,後面9個字元表示文件許可權,分為三組,每組3個字元,分別代表所屬用戶許可權、同一組的許可權、除所屬用戶和同一組外的其他人許可權。
文件類型 含義 - 表示普通文件,普通文件指文本文件和二進位文件,例如:chs、chs.txt d 表示文件夾(directory)。 l 表示符號連接文件,後面會用->列印出它指向的文件。 s 表示socket文件。 p 表示管道文件(pipe)。 
參數 含義 -R 對目前目錄下的所有文件與子目錄進行相同的許可權變更(以遞迴的方式逐個變更) 
查看磁碟和記憶體空間命令
-
df命令
功能描述:顯示指定磁碟文件的可用空間。
PS:重點看使用率,避免使用率超過80%。
類似Windows的C D E F 盤總覽。
參數 含義 -h 自動以KB、MB、GB的單位顯示,可讀性高。 
選項 含義 Filesystem 磁碟 Size 磁碟總大小 Used 已使用磁碟大小 Avail 還可用的磁碟大小 Use% 磁碟使用率 Mounted on 掛載到哪個目錄下 -
du命令
功能描述:顯示每個文件和目錄的磁碟使用空間。
參數 含義 -h 以K(kb)、M(兆)、G為單位顯示,可讀性高。(最常用) du -sh ./*(當前目錄下的所有文件和文件夾的大小)

-
free命令
功能描述:顯示系統使用和空間的記憶體情況。
參數 含義 -k 以KB為單位顯示記憶體使用情況。(默認單位I) -m 以MB為單位顯示記憶體使用情況。 -g 以GB為單位顯示記憶體使用情況。 
選項 含義 total 總計物理記憶體的大小 used 已使用多大 free 可用有多少 shared 多個進程共享的記憶體總額 buff/cache 磁碟快取的大小 available 可回收利用的大小 swap 指的是一個交換分區或文件 -
netstat命令
功能描述: 查看埠。
例如:netstat -ntpl
參數 含義 -n 直接使用IP地址,而不通過域名伺服器。 -t 顯示TCP傳輸協議的連線狀況。 -p 顯示正在使用Socket的程式識別碼和程式名稱。 -l 顯示監控中的伺服器的Socket。 
其他命令
-
./ :表示當前路徑下,比如:./start.sh all
-
history:查看歷史命令操作記錄。
-
ls -l /usr > chs:將/usr目錄中的文件列表輸出到chs文件中。(> 表示重定向輸出)


-
uname -n:顯示主機名稱。
參數 含義 -a/--all 顯示全部資訊 -m/--machine 顯示電腦類型 -n/--nodename 顯示在網路上的主機名稱 -r/--release 顯示作業系統的發行編號 -s/--sysname 顯示作業系統名稱 -v 顯示作業系統的版本 --version 顯示作業系統版本資訊
-
who:查詢當前登錄在系統上的用戶資訊。
參數 含義 who -m 顯示執行該命令的登錄用戶資訊 who am i 等同於who -m whoami 查詢當前有效用戶的用戶名 
-
cat /proc/meminfo:查看記憶體使用情況。(當然也可以使用top、free)

以上就是一些Linux常用命令,Linux命令還有很多,記不住怎麼辦,記住常用的即可,其他現用現查唄://www.linuxcool.com。
























































