linux目錄詳解

qq_43634879發表於2020-12-15

在Linux中,系統預設的使用者是root,其實和 windows 的 administrator 類似,root 使用者可以操作作業系統的任何檔案和裝置,OMG,記住了,是大哥大,幹啥都行,所以在生產環境就不要亂用root了,權利越大,責任越大吶

學習Linux,就要習慣通過命令列的方式學習,這樣也高大上一點嘛,還不熟練趕快把前面兩篇文章拿來敲一遍.。目前的Linux導圖如下

圖片

小藍Linux

 

1 系統與硬體相關

虛擬裝好了,我們就比較好奇這些配置都是什麼。如果你還記得第一篇中的安裝過程,那麼在這裡的操作你就知道了 "原來是這樣"。

檢視系統的 pci 裝置

lspci 命令可以檢視所有的 pci 裝置,比如主機板,音效卡等

圖片

lspci檢視裝置資訊

  • 檢視CPU資訊

more /proc/cpuinfo 

其中 processor 是邏輯處理器的唯識別符號,vendor-id 是處理器型別,如果是英特爾的處理器,那麼字串就是genuinelntel。physical id 是每個封裝的唯一識別符號,也是一個物理的CPU,siblings 表示位於相同物理封裝中的邏輯處理器數量,core id 為每個核心的唯一識別符號

在 siblings 和 CPU cores 有個對應關係,如果 siblings 是 CPU cores 的兩倍,則系統支援超執行緒。

如果要檢視 CPU 的個數,那麼可以通過下面的命令

cat /proc/cpuinfo | grep “physical id”  | sort | uniq | wc -l

如果要檢視系統所有的邏輯CPU個數

cat /proc/cpuinfo |grep "processor" | wc -l

如果要檢視記憶體的資訊

圖片

檢視記憶體相關資訊

more /proc/meminfo

從結果可以看出,目前總記憶體為1.8G,可用1.5G,緩衝區佔用1260KB。

more /proc/meminfo

檢視磁碟分割槽的資訊

fdisk  -l

圖片

檢視磁碟分割槽資訊

從上圖我們可以看見虛擬了 42G 的磁碟以及每個分割槽的大小,是不是關於硬體相關的資訊看的清清楚楚了,就這樣不再神祕

2 檔案系統的瞭解

  • 經典樹形目錄

Linux 牛逼之一在於將所有的內容以檔案的形式展現出來,通過一個樹形的結構統一管理和組織這些檔案。Linux 典型的樹形結構如下圖所示

這個樹有個根,根下面很多「杈」「杈」上可以長出很多葉子

圖片

樹形目錄

整個系統都是按照檔案的形式放在根目錄中,同時會將檔案分類,這樣形成一個樹形目錄結構,這樣的佈局給管理檔案帶來了很大的方便,我們確實需要去了解這些目錄結構,對於後續的系統排錯還是蠻重要的噠。雖然有些囉嗦,不過這些圖確實是實打實的畫出來的,沒事看看就知道了,不用記住。

  • etc目錄

這個目錄主要存放的是管理檔案用的相關配置檔案,比較重要的  /etc/rc,使用者資訊檔案 /etc/passwd,具體的如下圖

圖片

etc目錄

  • /usr目錄

這個目錄主要存放的是應用程式和檔案,如果在安裝軟體的時候,選擇預設安裝的位置,通常就會預設在這個位置,下次就別問我裝的東西去哪裡,what??具體資訊如下圖

圖片

usr目錄

  • /var目錄

通常用來存放系統執行的日誌檔案,如下圖

圖片

var目錄

  • /dev 目錄

包含所有的裝置檔案

  • /proc 目錄

這個目錄是虛擬目錄,主要存放的是記憶體的對映,通過這個目錄和核心的資料結構打交道比如修改核心引數,獲取程式的相關資訊,具體資訊如下

圖片

proc目錄

其他目錄

  • /boot目錄

這麼說吧,你要是把這個目錄給幹掉了,你就是大哥。它存放了啟動 Linux 的核心檔案,包含映象檔案和連結檔案,破壞後系統基本上就不能啟動

  • /bin/sbin

當你裝相關的軟體或者安裝包後,很多時候都會連結在這個目錄下面,另外這裡也存放了平時我們使用的各種 shell 命令。比如cp,ls,dd等

對於sbin,這裡的 s 是 super 的意思,意味著需要超級使用者才能執行的命令。常見磁碟分割槽 fdisk,建立檔案系統的 mkfs就在這裡

  • /home

這個目錄是系統中每個使用者的工作目錄,每個使用者都會有自己主目錄,通常名稱為使用者名稱,如果有個使用者是小藍,那麼主目錄就是xiaolan

  • /lib

在開發的過程中,很多共享庫檔案等很多放在這裡,這個目錄會包含引導程式所需要的靜態庫檔案。後續在分享程式開發的時候會深入掰扯

  • /root

一般使用者沒有進入這個目錄的許可權,它是root的主目錄

  • /lost+found

儲存丟失的檔案。什麼意思,如果我們不恰當的關機操作,可能導致一些檔案丟失,這些丟失的臨時檔案可能就會存放在這裡。當重新啟動的時候,載入程式就會執行 fsck 程式並發現這個檔案

  • /tmp

用於存放臨時檔案,隨時可能被刪除

3 CPU核心部件

這部分內容是先過一邊,後續會對每一個部分進行詳細的闡述

Linux 的核心相當於 CPU 的大腦,經過了十幾年的共同努力,現在已經到xxx核。

作為一個開源作業系統,也給予我們難得的機會去學習這個成熟的作業系統,一個完整的計算機核心包含五個部分,分別是記憶體管理程式管理程式間通訊虛擬檔案系統和網路介面,這一部分在後面的文章會單獨介紹,先了解個大概,如果看過之前的面試連載文章,很多時候都會涉及到這些問題,這麼說吧,在面試中的百分之八十的問題,你都可以聯絡到作業系統層面,或者和作業系統相關知識點,相關設計理念巧合,當然不是巧合,就是學習過往成熟的經驗罷了

  • 記憶體管理

我們知道,在區區的小記憶體環境下,可以執行很多的軟體。Linux 記憶體管理中支援虛擬記憶體,即在系統上可以執行所有程式佔用的記憶體總量大於實際實體記憶體,多餘的這部分記憶體是從磁碟申請所得,在記憶體緊缺的情況下,記憶體管理就會負責在磁碟和記憶體之間進行交換。

  • 程式管理

Linux 可多工執行,那麼在單CPU的情況下怎麼支援多工呢。這個任務就得交給程式排程來完成了。每當系統執行的時候,排程器會分配一個時間片,然後排程器根據不同的時間片選擇程式執行。比如A程式的時間片用完了,那麼排程器會選擇一個新的程式繼續執行,由於這個切換的速度和頻率都很快,以致於讓我感覺是多個程式在同時的執行,實際上CPU 在同一個時間只有一個程式在執行。

  • 程式間通訊

各個程式的友好相處才能共建繁華生態嘛。不同的程式有自己的程式空間,要通訊就得找只隔壁大哥核心中專轉。在一般情況下,一個程式等待硬體操作完成就會被掛起,硬體操作完畢程式恢復執行,這個協調過程就是程式間的通訊機制了

  • 虛擬檔案系統

為了讓眾多的檔案系統有一個統一的介面,採用了通用的檔案模型---虛擬檔案系統。虛擬檔案系統分為邏輯檔案系統裝置驅動程式。其中邏輯檔案系統如 ex2,ex3 等。裝置驅動程式包含了硬體控制器所編寫的裝置驅動程式模組。

  • 網路介面

首先需要知道每一種網路硬體裝置都會對應相應的裝置驅動程式,網路裝置驅動程式主要負責與硬體裝置來進行通訊

4 CPU執行機制

知道了CPU的目錄結構,現在說說其執行機制,主要包括了 init 系統,系統的執行級別,系統的關閉方法

  • Linux 初始化init系統

啟動首先從 Bios 開始,接下來 Linux 載入程式將核心載入記憶體進行核心初始化,隨後啟動 init 程式,這個程式是系統的第一個程式,負責產出其他的程式

僅僅讓核心執行起來還沒啥用處,還需要管理,控制這些程式,從而系統進入一個使用者設定的使用者模式,即 init 系統

起初採用 sysinit,它主要依賴於指令碼,序列啟動程式,最大的缺點就是慢,在伺服器上看還沒有什麼影響,如果是在手機移動端,這得急死人,隨後出現了systemd取代了慢的upstart

在 Wndows 中,系統有安全執行模式和正常執行的模式,在 Linux 中的執行級別更加的靈活

一共有七種執行級別,定義在 /etc/inittab 中,sysinit 會檢查 /etc/inittab 檔案檢視是否含有 initdefault 來啟動一個預設的執行級別

  • 0:表示關機模式

  • 1:單使用者模式

  • 6:重啟模式,關閉所有的執行程式

  • 2:表示多使用者模式

  • 3:表示多使用者模式,支援nfs服務

  • 4:表示基本不用的使用者模式,可以實現特定的等了請求

  • 5:表示完成多使用者模式,預設等了到x-windows系統

這些數字和 init 結合就產生了相應的含義,比如init 1表示系統進入單使用者模式,、init 6表示系統將重新啟動

有了新的systemd管理體系以後,預設的執行級別通過軟連線的方式實現。

檢視系統的預設target,如下所示

圖片

預設target

如果需要修改執行級別和targe的對應關係,可以通過下面命令實現

rm -rf /etcsystemd/system/default.target
ls -sf /lib/systemd/system/multi-user.target /etc/systemd/system/defalut.target

5 系統關機過程

關機方式很多,比如init shutdown halt reboot,下面我們分別看看這些方式以及

  • shutdown

才開始學習 Linux 作業系統,不要動不動的就拔電源,我們知道此時很多的程式正在如火如荼的進行,你的這一操作,很可能就導致場面混亂,很多程式資料丟失,嚴重一點可能程式間開始打架,導致硬體裝置損壞

shutdown 是 shell 編寫的程式,必須要超級使用者才能執行。首先通過廣播的方式告訴系統所有的使用者,系統將在xx時間關閉,同時 login 指令凍結,意味著其他使用者此時不能等了,時間一到,i就會發訊號給shuinit程式吧,init程式就會改變執行級別

shutdown命令之shutdown常見引數

  • -f:重新啟動的時候不執行fsck

  • -k:只是傳送西悉尼給所有使用者但不會真正關機

  • -r:shutdown之後重啟系統

  • 時間:設定多長時間可以九天跑一次

  • halt命令

  • reboot

reboot和halt類似,只是reboot是關機後重啟

halt引數

  • -i:關機之前關閉所有的網路介面

  • -n:halt執行的時候不會呼叫系統指令sync

init主要使用者系統在不同執行級別的切換,切換工作是立即完成的

6 系統服務管理工具

在 Centos7 以後,一個非常大的改變即使用了 systemd 管理工具,它不僅可以完成系統初始化的工作,還可以對系統和服務進行管理。同時它也相容了之前的 sysinit,之前的版本中,這些初始化指令碼服務存在於 /etc/rc.d/init 中,現在被.service檔案擴充套件結尾的代替

配置檔案位於 /etc/systemd 目錄下,配置工具的命令使用 /bin/sbin 目錄下,備用的配置檔案位於 /lib/systemd 目錄,可以通過rpm -ql systemd檢視所有的路徑

另外,為了方便操作,systemd提供了強大的命令列工具systemctl,下面我們看看這些常見的啟動停止服務的命令

啟動 停止 重啟服務

通過systemctl啟動一個服務

systemctl start httpd.service

停掉此服務

systemctl stop httpd.service

重啟服務

systemctl restart httpd.service
systemctl try-restart httpd.service#只會在服務已經執行的狀態下重啟服務
systemctl reload httpd.service#重新載入配置檔案

關閉服務

systemctl disable httpd.service

如果要檢視這個服務狀態

systemctl status httpd.service

7 遠端工具介紹

這裡介紹的即Xshell了,是一個強大的安全終端模擬如那件。支援SSH1,SSH2等協議。方便遠端連線到遠端主機,除此之外,還有豐富的配色方案和樣式選擇。安裝就很簡單了,下面將安裝的過程還是放在這作為記錄供參考

  • 安裝Xshell,去官網download。進入安裝頁面

圖片

啟動xshell安裝介面

  • 選擇免費為家庭/學校

圖片

選擇免費版

  • 接受許可

圖片

接受許可

  • 安裝完成

圖片

安裝完成

  • 外觀設定,字型設定,檔案----屬性中

圖片

外觀設定

  • 設定配色主題

圖片

在這裡插入圖片描述

Xshell使用過程中的技巧有哪些?

  • 複製貼上 Ctrl+Insert進行復制,Shift+Insert進行貼上

  • 右擊將當前頁面的內容複製到記事本中

  • 快速點選三次就可以選中當前行

  • 快速在多個session中切換。Alt+數字標識且數字====切換到指定session

  • 將命令同時傳送給多個session中(對了,大家可以安裝哈rz,sz方便安裝下載檔案)

上面這些操作是在實驗過程中經常使用的,在此就沒有截圖的,如果在學習Linux的你,可以去嘗試嘗試,非常的簡單啦。

 

轉自微信公眾號 我是程式設計師小賤 

相關文章