運維工程師有很多叫法:系統運維、Linux 工程師、系統管理員...
網管
可以說是運維工程師最早的雛形。在個人電腦未普及時,大家去網咖玩遊戲。
玩家:「閘道器,我的電腦上不了網了」
網管負責維修電腦、維修系統、維護網路裝置...
現在大家在家裡上網、用手機上網、在公司上網、網咖上網
在網上玩遊戲、看新聞、炒股、上課、購物等等
背後是無數的伺服器
(據說80%是linux)支撐著網際網路應用,運維工程師則拿著高薪維護著這些伺服器
伺服器和個人電腦都是計算機。個人電腦主要服務1人,而伺服器通常服務多人,所以需要更快的速度,需要全年不間斷的執行,而且穩定
有時比速度更重要。
Tip:緊急時刻甚至可以把個人電腦也加入伺服器叢集中,臨時充當伺服器。
伺服器就是計算機,需要作業系統才能執行。如果伺服器的硬體很穩定,但作業系統容易出問題,其上的應用也會被拖累,無數的客戶就會投訴。
linux 穩定、開源、可客製化。
有了 linux 的伺服器,其上的應用再也不會輕易被拖累了。
計算機包含主機板、cpu、記憶體、磁碟、鍵盤等硬體,真正幹活的就是他們。
人不能直接和這些硬體溝通並指揮它們幹活,所以才誕生了作業系統。
作業系統就是人和計算機硬體
的橋樑。
比如要檢視某個記事本:
企業要賺錢,產品就是核心,比如網站就是產品,就網站數量在全球有上億。
現在開發產品比以前容易,以前產品可能得從0開始,現在可能找一個類似的,稍微改點東西,就是自己的一個產品。
而產品必須跑在一個平臺上,這個平臺就是生產環境
。
生產環境中除了有產品核心程式碼,還包含許多伺服器,伺服器中的Linux系統,還有防火牆...
產品由程式設計師開發,而生產環境就由運維工程師建設和維護。
一般伺服器分為:機架式伺服器(出場頻率最高)、塔式伺服器(和家用臺式電腦外觀類似,通常放在辦公室給內部員工使用)、刀鋒伺服器(向刀片一樣整齊排列,很昂貴,十幾萬到幾十萬,上場機會少)。
機架式伺服器
就是可以放在機架上的伺服器,這個機櫃上有刻度,刻度可以表示伺服器的高度。這個刻度,有一個標準單位叫 U,1U=4.445釐米,比如1U伺服器、2U伺服器(高度是1U伺服器的兩倍)、4U伺服器。
機架伺服器:
伺服器通常會託管在一個叫 網際網路資料中心(簡稱 idc) 的地方。
idc 會給企業提供機房、機架、電源、頻寬等服務。
idc 維護人員只負責硬體,比如伺服器的硬碟壞了,可以遠端讓其更換,而伺服器中更高階的問題,比如linux系統和上面執行的應用,就是運維的工作
比如手上有一臺windows的電腦,現在我要學習 linux,不想把windows系統換成 linux,也沒錢在買一臺電腦,這時,我可以安裝一個虛擬機器器
軟體,在該軟體上在安裝 linux。
知道了虛擬機器器,現在說一下虛擬化。
虛擬化是虛擬機器器的底層實現。
一臺電腦,其上的物理資源(cpu 4 核、8G 記憶體、2T 硬碟、頻寬10M)就這麼多,可以用建立多個虛擬機器器,比如01虛擬機器器
分配20%資源、02虛擬機器器
分配30%資源...
Tip:如果工作中有條件,儘量優先使用linux伺服器進行學習。如果沒有,可以使用 VirtualBox。
linux 發行版有很多,比如 centos Linux、Redhat Linux、Ubuntu Linux、Debian、
linux 除了表示發行版,還可以表示 Linux 核心
。所有 linux 發行版,都是基於 linux 核心構建的。
通常來說,大多數 Linux 發行版都會使用最新穩定版本的 Linux 核心,並根據自身需求進行設定。這意味著雖然核心版本相同,但不同的發行版可能會有不同的核心選項、模組和修補程式。
核心
是一個比較抽象的東西,可以理解成 linux 最核心部分,可理解成底層的驅動,最靠近硬體的部分,由成百上千萬行程式碼組成。前文我們也說到,計算機真正幹活的就是硬體,人得通過作業系統才能指揮硬體幹活。
Red Hat 是非常知名且被廣泛使用的 Linux 發行版之一。Redhat 是個系列,其中Redhat的企業版經克隆後,變成社群免費版本Centos
。
Tip:核心的主要功能包括:
硬體管理
:Linux 核心負責管理計算機硬體資源,包括處理器、記憶體、硬碟、網路介面等。它與這些硬體裝置進行通訊,併為應用程式提供存取硬體的介面。程序管理
:核心控制和管理執行在系統上的各個程序。它分配和回收程序的資源,排程程序的執行順序,以及提供程序間通訊的機制。檔案系統管理
:核心提供檔案系統的支援,包括檔案的建立、讀取、寫入和刪除操作。它負責將資料儲存到磁碟上,並提供檔案的存取和保護機制。裝置驅動程式
:核心包含了各種裝置驅動程式,使得作業系統能夠與硬體裝置進行通訊。這些驅動程式充當了作業系統與硬體之間的橋樑,使其能夠正確地使用和控制硬體裝置。網路支援
:Linux 核心具有強大的網路功能,包括網路協定棧、IP 路由、網路裝置驅動程式等。它能夠實現網路通訊、資料傳輸和網路安全等功能。現在有了 linux 伺服器,接下來我們就得登入。
通常伺服器不在身邊,而且大多數企業中的 linux 伺服器都強制去除圖形桌面,只有命令列。
這裡筆者使用 mobaxterm 遠端登入伺服器。
Tip:在 windows 上使用 Git Bash 也可以登入。就像這樣:
Administrator@K-10 MINGW64 ~/Desktop
$ ssh [email protected]
[email protected]'s password:
Welcome to Kylin V10 (GNU/Linux ... x86_64)
* Management: http://www.kylinos.cn/ * Support: http://www.kylinos.cn/service.aspx
Last login: Thu Jul 13 11:22:26 2023 from 192.168.1.35
demo@demo-pc:~$ whoami
demo
demo@demo-pc:~$
登入伺服器後,進入命令列。所謂命令列,也就是命令。
第一步我們得通過命令知道有什麼內容。
第一個命令是 ls
(list),列表的意思,用於顯示當前目錄下檔案和資料夾。請看範例:
// 檢視當前目錄的檔案和資料夾
pj@pj-pc:~/command$ ls
a2.txt a3.txt a4.txt a5.txt a6.txt dir2 test
如何判斷哪個是檔案,哪些是目錄。
一種方法是通過顏色,在筆者這裡,比如檔案 a2.txt 是白色
,目錄 dir2 是藍色
。
也可以通過 ls 目錄/檔案
,如果是目錄則顯示其中的內容,如果是檔案,則顯示該檔案。就像這樣:
// ls 目錄
pj@pj-pc:~/command$ ls dir2
a.txt
// ls 檔案
pj@pj-pc:~/command$ ls a2.txt
a2.txt
上面我們通過顏色
來粗略判斷是檔案還是資料夾,我們需要檢視檔案更詳細資訊的方法。
檢視一個檔案有哪些屬性,可以使用 ls -l
:
pj@pj-pc:~/command$ ls -l
總用量 8
-rw-rw-r-- 1 pj pj 0 7月 11 18:36 a2.txt
-rw-rw-r-- 1 pj pj 0 7月 11 18:36 a3.txt
-rw-rw-r-- 1 pj pj 0 7月 11 18:36 a4.txt
-rw-rw-r-- 1 pj pj 0 7月 11 18:36 a5.txt
-rw-rw-r-- 1 pj pj 0 7月 11 18:36 a6.txt
drwxrwxr-x 2 pj pj 4096 7月 11 16:50 dir2
-rw-rw-r-- 1 pj pj 45 7月 11 19:38 test
絕大多數linux 命令都支援引數,比如 ls -l
,不但列出所有檔案,還列出所有檔案的屬性。一個檔案佔一行。
請看第一列的最左側:-
表示普通檔案、d
代表目錄。
-rw-rw-r--
-rw-rw-r--
-rw-rw-r--
-rw-rw-r--
-rw-rw-r--
drwxrwxr-x
-rw-rw-r--
其他屬性,例如rw-rw-r--
是什麼意思?後續學到相應的知識點在解釋。
分清楚哪個是檔案,哪個是資料夾後,現在我們需要檢視檔案內容。
請看操作:
// cat - 一次性將內容輸出
pj@pj-pc:~/command$ cat a2.txt
111
222
333
444
555
666
777
888
999
10
11
12
// head - 預設顯示檔案頭部10行
pj@pj-pc:~/command$ head a2.txt
111
222
333
444
555
666
777
888
999
10
// tail - 預設顯示檔案尾部10行
pj@pj-pc:~/command$ tail a2.txt
333
444
555
666
777
888
999
10
11
12
cat 命令 - 一次性將內容輸出
head 命令 - 預設顯示檔案頭部10行
tail 命令 - 預設顯示檔案尾部10行
head 和 tail 預設是10條資料,我們可以通過引數修改,比如顯示2條:
pj@pj-pc:~/command$ head -n 2 a2.txt
111
222
pj@pj-pc:~/command$ tail -n 2 a2.txt
11
12
如果檔案內容很長,使用cat一次性輸出,還得捲動查詢,不是很方便,如果檔案內容過長,由於終端快取有限,可能檔案前頭的內容會被覆蓋。這時可以使用 less
命令,用法如下:
// less 長檔案
$ less /var/log/syslog
進入 less 顯示介面後,需要一些按鍵控制:
空格
下一頁b
上一頁q
退出在windows中,如果要查詢某個檔案,直接使用滑鼠,先進入我的電腦,然後選擇D槽或E槽,然後依次點選。
而在 linux 伺服器中,滑鼠
和圖形介面
都與我們無緣,一切得靠命令來操作。
首先通過 pwd 命令確定我們此刻的路徑:
test11@test11-pc:~$ pwd
/home/test11
Tip:在linux 中,不管是root使用者還是普通使用者,登入後預設都會處在自己的家目錄
中(筆者使用 test11 使用者登入)。所謂家目錄,也就是回家了,進入到自己的檔案中。這種登入後進入家目錄的方式是可以改變的,後面學習 linux 賬號管理時,會了解。
通過 ls 檢視當前目錄中的內容,並通過 cd 進入某目錄:
test11@test11-pc:~$ ls
模板 桌面 a.txt dir1
test11@test11-pc:~$ cd dir1
test11@test11-pc:~/dir1$ ls
test11@test11-pc:~/dir1$
通過 cd ..
可以回到上一層目錄:
test11@pj-pc:~$ cd dir1
test11@pj-pc:~/dir1$ cd ..
test11@pj-pc:~$ pwd
/home/test11
只輸入 cd + 回車
會進入家目錄:
test11@pj-pc:~$ cd /var/log
// 進入家目錄
test11@pj-pc:/var/log$ cd
test11@pj-pc:~$ pwd
/home/test11
cd ~
也能回到家目錄:
test11@test11-pc:~/dir1$ cd ~
test11@test11-pc:~$ pwd
/home/test11
繼續學習之前介紹幾個常用的快捷鍵。
Tab
鍵用於命令和路徑的提示或補全比如我要輸入 history 命令,但我只記得第一個字母,可以輸入 h 後,按2次Tab,終端會將 h 開頭的所有命令羅列:
test11@pj-pc:~$ h
h2ph hciattach head helpztags history hostname htseupdate
h2xs hciconfig hedron-client hex2hcd host hostnamectl httpserv
...
輸入 his 後,由於可以確定是 hisotry,按一次 Tab 就能自動補全。
輸入路徑時也能提示或補全:
test11@pj-pc:~$ cd /var/lo
local/ lock/ log/
ctrl + l
清空終端(或clear 命令)
ctrl + c
用於取消命令
比如我輸入top命令,不想要了,可以通過 ctrl + c 取消:
test11@pj-pc:~$ top^C
test11@pj-pc:~$
即使一個命令正在執行,例如 top,也可以通過 ctrl + c 將其取消。
ctrl + R
逆向查詢歷史命令剛才輸入一個很長的命令,通過上下箭頭一個一個的查詢太累,可以通過 ctrl + R 逆向查詢。
// 為了測試顯示歷史命令
test11@jingjia-pc:~$ history
1 ls
2 cd
3 ls
4 mkdir dir1
5 touch a.txt
6 cd
7 pwd
8 ls
9 cd dir1
10 ls
11 cd ~
12 pwd
13 cd dir1
14 cd ..
15 pwd
16 cd /var/log
17 cd
18 pwd
19 ll
20 cd
21
22 hipercdecode
23 cd /var/lo
24 clear
25*
26 history
通過快捷鍵調出逆向查詢介面:
test11@jingjia-pc:~$
(reverse-i-search)`':
輸入 h 顯示最近匹配的命令
test11@jingjia-pc:~$
(reverse-i-search)`h': history
再次輸入 ctrl + r 則逆向查詢:
test11@jingjia-pc:~$
(reverse-i-search)`h': hipercdecode
確定命令後通過回車
執行。
可通過 ctrl + c 退出。