跟運維學 Linux - 01

来源:https://www.cnblogs.com/pengjiali/archive/2023/07/17/17559383.html
-Advertisement-
Play Games

## 跟運維學 Linux - 01 ### 運維的誕生 運維工程師有很多叫法:系統運維、Linux 工程師、系統管理員... `網管`可以說是運維工程師最早的雛形。在個人電腦未普及時,大家去網吧玩游戲。 玩家:“網關,我的電腦上不了網了” 網管負責維修電腦、維修系統、維護網路設備... ### 互 ...


跟運維學 Linux - 01

運維的誕生

運維工程師有很多叫法:系統運維、Linux 工程師、系統管理員...

網管可以說是運維工程師最早的雛形。在個人電腦未普及時,大家去網吧玩游戲。

玩家:“網關,我的電腦上不了網了”

網管負責維修電腦、維修系統、維護網路設備...

互聯網的發展

現在大家在家裡上網、用手機上網、在公司上網、網吧上網

在網上玩游戲、看新聞、炒股、上課、購物等等

背後是無數的伺服器(據說80%是linux)支撐著互聯網應用,運維工程師則拿著高薪維護著這些伺服器

伺服器 vs 個人電腦

伺服器和個人電腦都是電腦。個人電腦主要服務1人,而伺服器通常服務多人,所以需要更快的速度,需要全年不間斷的運行,而且穩定有時比速度更重要。

Tip:緊急時刻甚至可以把個人電腦也加入伺服器集群中,臨時充當伺服器。

伺服器的好搭檔 Linux

伺服器就是電腦,需要操作系統才能運行。如果伺服器的硬體很穩定,但操作系統容易出問題,其上的應用也會被拖累,無數的客戶就會投訴。

linux 穩定、開源、可定製。

有了 linux 的伺服器,其上的應用再也不會輕易被拖累了。

操作系統是怎麼回事

電腦包含主板、cpu、記憶體、磁碟、鍵盤等硬體,真正幹活的就是他們。

人不能直接和這些硬體溝通並指揮它們幹活,所以才誕生了操作系統。

操作系統就是人和電腦硬體的橋梁。

比如要查看某個記事本:

  1. 用戶通過滑鼠點擊文件,通過 i/o 傳給操作系統
  2. 操作系統指揮cpu在硬碟搜索文件地址
  3. 訪問文件內容並存入記憶體
  4. CPU告訴操作系統,最終顯示到顯示器

產品和生產環境

企業要賺錢,產品就是核心,比如網站就是產品,就網站數量在全球有上億。

現在開發產品比以前容易,以前產品可能得從0開始,現在可能找一個類似的,稍微改點東西,就是自己的一個產品。

而產品必須跑在一個平臺上,這個平臺就是生產環境

生產環境中除了有產品核心代碼,還包含許多伺服器,伺服器中的Linux系統,還有防火牆...

產品由程式員開發,而生產環境就由運維工程師建設和維護。

伺服器類型

一般伺服器分為:機架式伺服器(出場頻率最高)、塔式伺服器(和家用台式電腦外觀類似,通常放在辦公室給內部員工使用)、刀片伺服器(向刀片一樣整齊排列,很昂貴,十幾萬到幾十萬,上場機會少)。

機架式伺服器就是可以放在機架上的伺服器,這個機柜上有刻度,刻度可以表示伺服器的高度。這個刻度,有一個標準單位叫 U,1U=4.445釐米,比如1U伺服器、2U伺服器(高度是1U伺服器的兩倍)、4U伺服器。

機架伺服器:

IDC和運維

伺服器通常會托管在一個叫 互聯網數據中心(簡稱 idc) 的地方。

idc 會給企業提供機房、機架、電源、帶寬等服務。

idc 維護人員只負責硬體,比如伺服器的硬碟壞了,可以遠程讓其更換,而伺服器中更高級的問題,比如linux系統和上面運行的應用,就是運維的工作

虛擬化和虛擬機

比如手上有一臺windows的電腦,現在我要學習 linux,不想把windows系統換成 linux,也沒錢在買一臺電腦,這時,我可以安裝一個虛擬機軟體,在該軟體上在安裝 linux。

知道了虛擬機,現在說一下虛擬化。

虛擬化是虛擬機的底層實現。

一臺電腦,其上的物理資源(cpu 4 核、8G 記憶體、2T 硬碟、帶寬10M)就這麼多,可以用創建多個虛擬機,比如01虛擬機分配20%資源、02虛擬機分配30%資源...

Tip:如果工作中有條件,儘量優先使用linux伺服器進行學習。如果沒有,可以使用 VirtualBox。

Linux 版本和 linux 內核

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

登錄伺服器後,進入命令行。所謂命令行,也就是命令。

第一步我們得通過命令知道有什麼內容。

第一個命令是 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

上面我們通過顏色來粗略判斷是文件還是文件夾,我們需要查看文件更詳細信息的方法。

查看一個文件有哪些屬性,可以使用 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 退出。

作者:彭加李
出處:https://www.cnblogs.com/pengjiali/p/17559383.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

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

-Advertisement-
Play Games
更多相關文章
  • PyCharm是一種專業的Python集成開發環境(IDE),由JetBrains公司開發和維護。它提供了豐富的功能和工具,幫助開發人員更高效地編寫、調試和測試Python代碼。如果是一些大型Python項目強烈推薦用這個來開發。今天我們來介紹一下PyCharm的下載與安裝。 # PyCharm的下 ...
  • 本篇談一談單鏈表的改,具體操作就是找到他,然後修改元素即可,上一篇有相關代碼,可以參考。 改函數代碼如下: void Correct(LinkList header, int site_, char letter_) { LinkList q = Search_Site(header,site_); ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 本文是《Java擴展Nginx》系列的第 ...
  • # 網路基礎 ## **網路通信** 1. 概念:兩台設備之間通過網路實現數據傳輸; 2. 網路通信:將數據通過網路從一臺設備傳輸到另一臺設備; 3. java.net包下提供了一系列的類或介面,供程式員使用,完成網路通信; ![](https://img2023.cnblogs.com/blog/ ...
  • ### AQS的定義 ​ 隊列同步器 AbstractQueuedSynchronizer(以下簡稱同步器),是用來構建鎖或者其他同步組件的基礎框架,它使用了一個 int 成員變數表示同步狀態,通過內置的 FIFO 隊列來完成資源獲取線程的排隊工作,併發包的作者(Doug Lea)期望它能夠成為實現 ...
  • 本章將和大家分享 ASP.NET Core SignalR 中的中心篩選器。 本文大部分內容摘自微軟官網:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hub-filters?view=aspnetcore-7.0 廢話不多說,下麵我們直 ...
  • 1.ReferenceEquals(object o1, object o2): 靜態方法:比較兩個對象的引用,引用相同返回true,否則返回false,同為null是返回true;ReferenceEquals進行值類型比較時總是返回false,因為兩個值類型需要分別裝箱到對象中,是不同的引用 ; ...
  • # shell腳本-Nginx訪問日誌分析 ## 1.原理 > 可以通過/usr/local/nginx/logs/access.log 文件-查看nginx的日誌 > > ``` > [root@localhost scripts]# tail -f /usr/local/nginx/logs/a ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...