1. 程式人生 > 實用技巧 >83、Linux知識-系統介紹、檔案系統、遠端操作——2020年07月27日12:47:14

83、Linux知識-系統介紹、檔案系統、遠端操作——2020年07月27日12:47:14

83、Linux知識

2020年07月25日15:51:35

1. Unix/Linux作業系統介紹

作業系統的地位

作業系統在計算機系統中承上啟下的地位:向下封裝硬體,向上提供操作介面。

Linux的兩類使用者

Linux的遠親

Linux和Unix的聯絡

l UNIX系統是工作站上最常用的作業系統,它是一個多使用者、多工的實時作業系統,允許多人同時訪問計算機, 並同時執行多個任務。UNIX系統具有穩定、高效、安全、方便、功能強大等諸多優點,自20世紀70年代開始便執行在許多大型和小型計算機上。

l UNIX雖然是一個安全、穩定且功能強大的作業系統,但它也一直是一種大型的而且對執行平臺要求很高的作業系統,只能在工作站或小型機上才能發揮全部功能,並且價格昂貴,對普通使用者來說是可望而不可及的,這為後來Linux的崛起提供了機會,Linux是一個類UNIX作業系統。

l Linux是免費的、不受版權制約、與UNIX相容的作業系統。

l Linux在x86架構上實現了UNIX系統的全部特性,具有多使用者多工的能力,同時保持了高效性和穩定性,Linux具有如下的優秀的特點:

  1. 開放性;

  2. 完全免費;

  3. 多使用者,多工;

  4. 裝置獨立性;

  5. 豐富的網路功能;

  6. 可靠的系統安全性;

Linux核心及發行版介紹

1) Linux核心版本

核心(kernel)是系統的心臟,是執行程式和管理像磁碟和印表機等硬體裝置的核心程式,它提供了一個在裸裝置與應用程式間的抽象層。

Linux核心版本又分為穩定版和開發版,兩種版本是相互關聯,相互迴圈:

l 穩定版:具有工業級強度,可以廣泛地應用和部署。新的穩定版相對於較舊的只是修正一些bug或加入一些新的驅動程式。

l 開發版:由於要試驗各種解決方案,所以變化很快。

核心原始碼網址:http://www.kernel.org,所有來自全世界的對Linux原始碼的修改最終都會彙總到這個網站,由Linus領導的開源社群對其進行甄別和修改最終決定是否進入到Linux主線核心原始碼中。

2) Linux發行版本

Linux發行版 (也被叫做 GNU/Linux 發行版) 通常包含了包括桌面環境、辦公套件、媒體播放器、資料庫等應用軟體。

這些作業系統通常由Linux核心、以及來自GNU計劃的大量的函式庫,和基於X Window的圖形介面,在X Window中使用者同樣可以通過使用滑鼠對視窗、選單等進行操作來完成相應的工作。

X Window系統是一個非常出色的圖形視窗系統,是類UNIX系統的圖形使用者介面的工業標準。X Window系統最重要的特徵之一就是它的結構與裝置無關。

X Window系統的主要特點有如下幾點:

l X Window系統是客戶機/伺服器結構的。X Window的實現是與作業系統核心分開的,其主要由X Server和X Client兩部分組成。

l X Window系統不是Unix/Linux作業系統的必須的構成部分,而只是一個可選的應用程式元件。

POSITION 2015 2014
1 Linux Mint Linux Mint
2 Debian Ubuntu
3 Ubuntu Debian
4 openSUSE openSUSE
5 Fedora Fedora
6 Mageia Mageia
7 Manjaro Arch
8 CentOS Elementary
9 Arch CentOS
10 Elementary Zorin

Unix/Linux開發應用領域介紹

l Unix/Linux伺服器

是目前Unix/Linux應用最多的一個領域,可以提供Web、FTP、Gopher、SMTP/POP3、Proxy/Cache、DNS等伺服器,支援伺服器叢集,支援虛擬主機、虛擬服務、VPN等。

l 嵌入式Linux系統

嵌入式Linux是將流行的Linux作業系統進行剪裁修改,能夠在嵌入式計算機系統上執行的一種作業系統。Linux嵌入式系統能夠支援多種CPU和硬體平臺,效能穩定,剪裁性好,開發和使用容易。其中包括Embedix、uCLinux、muLinux等。

l 桌面應用

近年來,Linux系統特別強調在桌面應用方面的改進,並且已達到相當的水平,完全可以作為一種集辦公應用、多媒體應用、網路應用等多方面功能於一體的圖形介面作業系統,在辦公應用方面,Unix/Linux集成了openOffice、SUN公司的StarOffice以及KOffice等工具。

l 電子政務

隨著Linux的快速發展,Linux已逐漸成為Windows系統重要的競爭力量。尤其是Linux在安全性方面的獨特優勢,又使得Linux在政府應用領域得到很大的發展。目前一些國家正將其電子政務系統向Linux平臺遷移。中國政府也對Linux給予極大的支援。

2.檔案系統

2.1 目錄和路徑

2.1.1 目錄

l 目錄是一組相關檔案的集合。

l 一個目錄下面除了可以存放檔案之外還可以存放其他目錄,即可包含子目錄。

l 在確定檔案、目錄位置時,DOS和Unix/Linux都採用“路徑名+檔名”的方式。路徑反映的是目錄與目錄之間的關係。

2.1.2 路徑

Unix/Linux路徑由到達定位檔案的目錄組成。在Unix/Linux系統中組成路徑的目錄分割符為斜槓“/”,而DOS則用反斜槓“\”來分割各個目錄。

路徑分為絕對路徑和相對路徑:

l 絕對路徑

  1. 絕對路徑是從目錄樹的樹根“/”目錄開始往下直至到達檔案所經過的所有節點目錄。

  2. 下級目錄接在上級目錄後面用“/”隔開。

  3. 注意:絕對路徑都是從“/”開始的,所以第一個字元一定是“/”。

l 相對路徑

  1. 相對路徑是指目標目錄相對於當前目錄的位置。

  2. 如果不在當前目錄下,則需要使用兩個特殊目錄“.”和“”了。目錄“.”指向當前目錄,而目錄“..”。

2.2 檔案系統

2.2.1 Windows和Linux檔案系統區別

在 windows 平臺下,開啟“計算機”,我們看到的是一個個的驅動器碟符:

每個驅動器都有自己的根目錄結構,這樣形成了多個樹並列的情形,如圖所示:

在 Linux 下,我們是看不到這些驅動器碟符,我們看到的是資料夾(目錄):

RedHat

Ubuntu

在早期的 UNIX 系統中,各個廠家各自定義了自己的 UNIX 系統檔案目錄,比較混亂。Linux 面世不久後,對檔案目錄進行了標準化,於1994年對根檔案目錄做了統一的規範,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 檔案系統層次結構標準。FHS 標準規定了 Linux 根目錄各資料夾的名稱及作用,統一了Linux界命名混亂的局面。

和Windows作業系統類似,所有Unix/Linux的資料都是由檔案系統按照樹型目錄結構管理的。而且Unix/Linux作業系統同樣要區分檔案的型別,判斷檔案的存取屬性和可執行屬性。

Unix/Linux也採用了樹狀結構的檔案系統,它由目錄和目錄下的檔案一起構成。但Unix/Linux檔案系統不使用驅動器這個概念,而是使用單一的根目錄結構,所有的分割槽都掛載到單一的“/”目錄上,其結構示意圖如圖所示:

無論何種版本的 Linux 發行版,桌面、應用是 Linux 的外衣,檔案組織、目錄結構才是Linux的內心。

2.2.2 Linux目錄結構
  • l /:根目錄,一般根目錄下只存放目錄,在Linux下有且只有一個根目錄。所有的東西都是從這裡開始。當你在終端裡輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。
  • l /bin: /usr/bin: 可執行二進位制檔案的目錄,如常用的命令ls、tar、mv、cat等。
  • l /boot:放置linux系統啟動時用到的一些檔案,如Linux的核心檔案:/boot/vmlinuz,系統引導管理器:/boot/grub。
  • l /dev:存放linux系統下的裝置檔案,訪問該目錄下某個檔案,相當於訪問某個裝置,常用的是掛載光碟機 mount /dev/cdrom /mnt。
  • l /etc:系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案,重要的配置檔案有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
  • l /home:系統預設的使用者家目錄,新增使用者賬號時,使用者的家目錄都存放在此目錄下,表示當前使用者的家目錄,edu 表示使用者 edu 的家目錄。
  • l /lib: /usr/lib: /usr/local/lib:系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫的協助。
  • l /lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下。
  • l /mnt: /media:光碟預設掛載點,通常光碟掛載於 /mnt/cdrom 下,也不一定,可以選擇任意位置進行掛載。
  • l /opt:給主機額外安裝軟體所擺放的目錄。
  • l /proc:此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間,比較重要的目錄有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
  • l /root:系統管理員root的家目錄(宿主目錄)。
  • l /sbin:/usr/sbin: /usr/local/sbin:放置系統管理員使用的可執行命令,如fdisk、shutdown、mount 等。與 /bin 不同的是,這幾個目錄是給系統管理員 root使用的命令,一般使用者只能"檢視"而不能設定和使用。
  • l /tmp:一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以訪問,重要資料不可放置在此目錄下。
  • l /srv:服務啟動之後需要訪問的資料目錄,如 www 服務需要訪問的網頁資料存放在 /srv/www 內。
  • l /usr:應用程式存放目錄,/usr/bin 存放應用程式,/usr/share 存放共享資料,/usr/lib 存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案。/usr/local: 存放軟體升級包。/usr/share/doc: 系統說明檔案存放目錄。/usr/share/man: 程式說明檔案存放目錄。/usr/include:存放標頭檔案。
  • l /var:放置系統執行過程中經常變化的檔案,如隨時更改的日誌檔案 /var/log,/var/log/message:所有的登入檔案存放目錄,/var/spool/mail:郵件存放的目錄,/var/run:程式或服務啟動後,其PID存放在該目錄下。

2.3 一切皆檔案

2.3.1 一切皆檔案

Unix/Linux對資料檔案(.mp3、.bmp),程式檔案(.c、.h、*.o),裝置檔案(LCD、觸控式螢幕、滑鼠),網路檔案( socket ) 等的管理都抽象為檔案,使用統一的方式方法管理。

在Unix/Linux作業系統中也必須區分檔案型別,通過檔案型別可以判斷檔案屬於可執行檔案、文字檔案還是資料檔案。在Unix/Linux系統中檔案可以沒有副檔名。

2.3.2 檔案分類

通常,Unix/Linux系統中常用的檔案型別有7種:

  • 普通檔案 - 、
  • 目錄檔案 d 、
  • 管道檔案 p 、
  • 套接字檔案 s、
  • 軟連結檔案 l、
  • 塊裝置檔案 b、
  • 字元裝置檔案 c。

l 普通檔案

普通檔案是計算機作業系統用於存放資料、程式等資訊的檔案,一般都長期存放於外儲存器(磁碟、磁帶等)中。普通檔案一般包括文字檔案、資料檔案、可執行的二進位制程式檔案等。

在Unix/Linux中可以通過file命令來檢視檔案的型別。如果file檔案後面攜帶檔名,則檢視指定檔案的型別,如果攜帶萬用字元“*”,則可以檢視當前目錄下的所有檔案的型別。

l 目錄檔案

Unix/Linux系統把目錄看成是一種特殊的檔案,利用它構成檔案系統的樹型結構。

目錄檔案只允許系統管理員對其進行修改,使用者程序可以讀取目錄檔案,但不能對它們進行修改。

每個目錄檔案至少包括兩個條目,“..”表示上一級目錄,“.”表示該目錄本身。

l 裝置檔案

Unix/Linux系統把每個裝置都對映成一個檔案,這就是裝置檔案。它是用於向I/O裝置提供連線的一種檔案,分為字元裝置和塊裝置檔案。

字元裝置的存取以一個字元為單位,塊裝置的存取以字元塊為單位。每一種I/O裝置對應一個裝置檔案,存放在/dev目錄中,如行式印表機對應/dev/lp,第一個軟盤驅動器對應/dev/fd0。

l 管道檔案

管道檔案也是Unix/Linux中較特殊的檔案型別,這類檔案多用於程序間的通訊。

l 軟連結檔案

似於 windows 下的快捷方式,連結又可以分為軟連結(符號連結)和硬連結。

2.4 檔案許可權

檔案許可權就是檔案的訪問控制權限,即哪些使用者和組群可以訪問檔案以及可以執行什麼樣的操作。

Unix/Linux系統是一個典型的多使用者系統,不同的使用者處於不同的地位,對檔案和目錄有不同的訪問許可權。為了保護系統的安全性,Unix/Linux系統除了對使用者許可權作了嚴格的界定外,還在使用者身份認證、訪問控制、傳輸安全、檔案讀寫許可權等方面作了周密的控制。

在 Unix/Linux中的每一個檔案或目錄都包含有訪問許可權,這些訪問許可權決定了誰能訪問和如何訪問這些檔案和目錄。

2.4.1 訪問使用者

通過設定許可權可以從以下三種訪問方式限制訪問許可權:

  • l 只允許使用者自己訪問(所有者)

所有者就是建立檔案的使用者,使用者是所有使用者所建立檔案的所有者,使用者可以允許所在的使用者組能訪問使用者的檔案。

  • l 允許一個預先指定的使用者組中的使用者訪問(使用者組)

使用者都組合成使用者組,例如,某一類或某一專案中的所有使用者都能夠被系統管理員歸為一個使用者組,一個使用者能夠授予所在使用者組的其他成員的檔案訪問許可權。

  • l 允許系統中的任何使用者訪問(其他使用者)

使用者也將自己的檔案向系統內的所有使用者開放,在這種情況下,系統內的所有使用者都能夠訪問使用者的目錄或檔案。在這種意義上,系統內的其他所有使用者就是 other 使用者類

這有點類似於 QQ 空間的訪問許可權:

l 這個 QQ 空間是屬於我的,我相當於管理者(也就是“所有者”),我想怎麼訪問就怎麼訪問。

l 同時,我可以設定允許 QQ 好友訪問,而這些 QQ 好友則類似於“使用者組”。

l 當然,我可以允許所有人訪問,這裡的所有人則類似於“其他使用者”。

2.4.2 訪問許可權

使用者能夠控制一個給定的檔案或目錄的訪問程度,一個檔案或目錄可能有讀、寫及執行許可權:

l 讀許可權(r)

對檔案而言,具有讀取檔案內容的許可權;對目錄來說,具有瀏覽目錄的許可權。

l 寫許可權(w)

對檔案而言,具有新增、修改檔案內容的許可權;對目錄來說,具有刪除、移動目錄內檔案的許可權。

l 可執行許可權(x)

對檔案而言,具有執行檔案的許可權;對目錄了來說該使用者具有進入目錄的許可權。

注意:通常,Unix/Linux系統只允許檔案的屬主(所有者)或超級使用者改變檔案的讀寫許可權。

2.4.3 示例說明

  1. 第1個字母代表檔案的型別:“d” 代表資料夾、“-” 代表普通檔案、“c” 代表硬體字元裝置、“b” 代表硬體塊裝置、“s”表示管道檔案、“l” 代表軟連結檔案。

  2. 後 9 個字母分別代表三組許可權:檔案所有者、使用者者、其他使用者擁有的許可權。

每一個使用者都有它自身的讀、寫和執行許可權。

n 第一組許可權控制訪問自己的檔案許可權,即所有者許可權。

n 第二組許可權控制使用者組訪問其中一個使用者的檔案的許可權。

n 第三組許可權控制其他所有使用者訪問一個使用者的檔案的許可權。

這三組許可權賦予使用者不同型別(即所有者、使用者組和其他使用者)的讀、寫及執行許可權就構成了一個有9種類型的許可權組。

4. 編輯器

4.1 gedit編輯器

gedit是一個Linux環境下的文字編輯器,類似windows下的寫字板程式,在不需要特別複雜的程式設計環境下,作為基本的文字編輯器比較合適。

4.2 vi/vim編輯器

4.2.1 vi介紹

vi 編輯器是 Unix系統中最常見的基礎文字編輯器。Linux下升級為vim編輯器,它不僅相容 vi 的所有指令,而且還有一些新的特性,例如 vim 可以撤消無限次、支援關鍵詞自動完成、可以用不同的顏色來高亮你的程式碼。vim 普遍被推崇為類 vi 編輯器中最好的一個。出於歷史的原因使用時大家習慣性的統一簡稱vi。

vim 編輯器在Linux界有編輯器之神的美譽,幾乎所有的 Linux 發行版中都包含 vi 程式。

可以聯網使用命令快捷安裝: sudo apt-get install vim

由於vi 工作時,不需要圖形介面,非常適合遠端及嵌入式工作,是效率很高的文字編輯器,儘管在 Linux 上也有很多圖形介面的編輯器可用,但vi的功能是那些圖形編輯器所無法比擬的。

vi有三種基本工作模式:

+ 命令模式

+ 文字輸入模式

+ 末行模式。

要想使用vi對檔案進行編輯,必須熟練掌握這三種工作模式之間的工作關係。

4.2.2 vi最基本操作

1) 開啟檔案

vi filename:開啟或新建檔案,並將游標置於第一行行首,如果檔案不存在,則會新建檔案。

2) 編輯檔案

如果通過vi開啟一個已經存在的檔案,首先進入命令模式,此時輸入的任何字元都被視為命令,不能輸入內容。

3) 儲存檔案

一定要先退出插入模式(按Esc進入命令模式),然後,shift + zz (按住 “shift” + 按兩下“z”鍵) 即可儲存退出當前檔案。

4.2.3 vi實用命令

1) 轉換為編輯模式

按鍵 功能
a 游標位置右邊插入文字
i 游標位置當前處插入文字
o(字母) 游標位置下方開啟新行
O(字母) 游標位置上方開啟新行
I 游標所在行首插入文字
A 游標所在行尾插入文字
s 以刪除一個字元為條件,切換工作模式
S 以刪除一行為條件,切換工作模式

2) vi的退出

按鍵 功能
ZZ(shift+z+z) 儲存退出
:wq 儲存退出
:x(小寫) 儲存退出
:w filename 儲存到指定檔案
:q 退出,如果檔案修改但沒有儲存,會提示無法退出
:q! 退出,不儲存

3) vi的刪除和修改功能

按鍵 功能
[n]x 刪除游標後 n 個字元
[n]X 刪除游標前 n 個字元
D 刪除游標所在開始到此行尾的字元
[n]dd 刪除從當前行開始的 n 行(準確來講,是剪下,剪下不貼上即為刪除)
[n]yy 複製從當前行開始的 n 行
p 把貼上板上的內容插入到當前行
dG 刪除游標所在行開始到檔案尾的所有字元

4) vi的行定位功能

按鍵 功能
Ctrl + f 向前滾動一個螢幕
Ctrl + b 向後滾動一個螢幕
gg 到檔案第一行行首
G(大寫) 到檔案最後一行行首,G必須為大寫
[n]G或[n]gg 到指定行,n為目標行數

5) vi的文字查詢功能

按鍵 功能
/字串 查詢指定字串
n 尋找下一個
* 匹配一個已有字元。向後找尋
# 匹配一個已有字元。向前找尋

7) vi的set指令

按鍵 功能
:set nu 顯示行號
:set nonu 不顯示行號

5. 遠端操作

5.1 SSH介紹

SSH為Secure Shell的縮寫,由 IETF 的網路工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。

SSH是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。常用於遠端登入,以及使用者之間進行資料拷貝

利用SSH協議可以有效防止遠端管理過程中的資訊洩露問題。SSH最初是 UNIX 系統上的一個程式,後來又迅速擴充套件到其他操作平臺。SSH 在正確使用時可彌補網路中的漏洞。SSH 客戶端適用於多種平臺。幾乎所有 UNIX 平臺—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可執行SSH

使用SSH服務,需要安裝相應的伺服器和客戶端。客戶端和伺服器的關係:如果,A機器想被B機器遠端控制,那麼,A機器需要安裝SSH伺服器,B機器需要安裝SSH客戶端。

5.2 遠端登入

5.2.1 Linux平臺相互遠端

操作命令:ssh -l username hostip

引數 含義
-l 選項, 是字母“l”,不是數字“1”
username 被遠端登入的使用者名稱
hostip 被遠端登入的ip地址

注意:遠端登入的兩臺機器必須要能ping通(平通)。

首先,檢視需要被遠端機器的ip:

遠端登入(這裡是使用者 wencong ( A 機器 ) 遠端登入 edu ( B 機器 ) ), 可以不用sudo :

SSH 告知使用者,這個主機不能識別,這時鍵入"yes",SSH 就會將相關資訊,寫入" ~/.ssh/know_hosts" 中,再次訪問,就不會有這些資訊了。然後輸入完口令,就可以登入到主機了。

接著,提示輸入登陸密碼:

登陸成功:

5.2.2 Windows遠端登入Linux

如果想在 Windows 平臺下遠端登入 Linux,這時候,Windows 需要安裝 安裝相應軟體包。這裡介紹是Xmanager。

Xmanager是一款小巧、便捷的瀏覽遠端X視窗系統的工具。它包含Xshell、Xftp等軟體:

l Xshell:是一個Windows平臺下的SSH、TELNET和RLOGIN終端軟體。它使得使用者能輕鬆和安全地在Windows平臺上訪問Unix/Linux 主機。

l Xftp:是一個應用於 Windows 平臺的 FTP 和 SFTP 檔案傳輸程式。Xftp能安全地在Unix/Linux 和 Windows 平臺之間傳輸檔案。

配置Xshell,遠端登入:

Linux預設採用的編碼格式是UTF-8,Windows預設採用的編碼格式是ANSI(GB2312、GBK),所以需要設定一下相應編碼:

5.3 遠端傳輸檔案

5.3.1 Linux平臺相互傳輸

SSH 提供了一些命令和shell用來登入遠端伺服器。在預設情況下,不允許使用者拷貝檔案,但還是提供了一個“scp”命令。

引數 含義
RemoteUserName 遠端使用者名稱
RemoteHostIp 遠端ip
RemoteFile 遠端檔案,可帶上路徑
FileName 拷貝到本地後的名字,可帶上路徑,不帶路徑拷貝到當前目錄

本地檔案複製到遠端:

scp FileName RemoteUserName@RemoteHostIp:RemoteFile

scp FileName RemoteHostIp:RemoteFolder

scp FileName RemoteHostIp:RemoteFile

本地目錄複製到遠端:

scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder

scp -r FolderName RemoteHostIp:RemoteFolder

遠端檔案複製到本地:

scp RemoteUserName@RemoteHostIp:RemoteFile FileName

scp RemoteHostIp:RemoteFolder FileName

scp RemoteHostIp:RemoteFile FileName

遠端目錄複製到本地:

scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName

scp -r RemoteHostIp:RemoteFolder FolderName

拷貝遠端的檔案****:

拷貝遠端的檔案可以任意修改其名字:

拷貝遠端的檔案可以指定存放路徑:

5.3.2 Windows和Linux相互傳輸檔案

Xmanager自帶的Xftp是一個應用於 Windows 平臺的 FTP 和 SFTP 檔案傳輸程式。Xftp能安全地在Unix/Linux 和 Windows 平臺之間傳輸檔案。

END

2020年07月27日12:44:35