標籤:

全棧工程師必備Linux 基礎

Linux 幾乎無處不在,不論是伺服器構建,還是客戶端開發,操作系統的基礎技能對全棧來說都是必備的。

系統的選擇

Linux發行版本可以大體分為兩類,一類是商業公司維護的發行版本,一類是社區組織維護的發行版本,前者以著名的Redhat(RHEL)為代表,後者以Debian為代表。

Redhat,應該稱為Redhat系列,包括RHEL、Fedora、CentOS(RHEL的社區克隆版本,免費)。Ubuntu嚴格來說不能算一個獨立的發行版本,Ubuntu是基於Debian加強而來,一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的Linux桌面系統。Ubuntu社區認為實用性和創新性高於一切。

如果你需要一個比較穩定的伺服器系統而已,那麼最好的選擇就是CentOS了,安裝完成後,經過簡單的配置就能提供非常穩定的服務了。但是對雲環境而言,unbuntu也許不錯,hadoop最早就是在ubuntu上開發的。

體系結構

了解體系結構,可以有一個較好的方向感。Linux 有kernel和user兩種模式,內核、shell和文件系統一起形成了基本的操作系統結構,Linux 內核由如下幾部分組成:內存管理、進程管理、設備驅動程序、文件系統和網路管理等。

Linux內核

了解linux內核,可以充分利用資源,在系統調優時有目標感。

Linux 將內存劃分為容易處理的「內存頁」,提供了對 4KB 緩衝區的抽象,例如 slab 分配器。進程實際是某特定應用程序的一個運行實體,進程調度控制進程對CPU的訪問。Linux 中常見的進程間通訊機制有信號、管道、共享內存、信號量和套接字等。 內核通過 SCI 提供了一個API來創建一個新進程(fork、exec 或 POSⅨ),停止進程(kill、exit),並在它們之間進行通信和同步(signal 或者 POSⅨ 機制)。

Linux 操作系統將獨立的文件系統組合成了一個層次化的樹形結構,並且由一個單獨的實體代表這一文件系統。由於 Linux 支持許多不同的文件系統,並且將它們組織成了一個統一的虛擬文件系統.設備驅動程序提供一組操作系統可理解的抽象介面完成和操作系統之間的交互,而與硬體相關的具體操作細節由設備驅動程序完成。Linux內核的網路部分由BSD套接字、網路協議層和網路設備驅動程序組成。 網路設備驅動程序負責與硬體設備通訊,每一種可能的硬體設備都有相應的設備驅動程序。

linux 文件系統

Linux系統能支持多種目前流行的文件系統,推薦用EXT4。

Linux下面的文件類型主要有:

1) 普通文件,分為純文本和二進位。

2) 目錄文件,存儲文件的地方。

3) 鏈接文件,指向同一個文件或目錄的的文件。

4) 設備文件,分為塊設備和字元設備。

5)管道文件,提供進程間通信

6)套接字文件,與網路通信有關

Linux使用標準的目錄結構,安裝程序就已經為用戶創建了文件系統和完整而固定的目錄組成形式,並指定了每個目錄的作用和其中的文件類型。

目錄名簡要說明/bin二進位可執行命令/dev設備特殊文件/etc系統管理和配置文件/etc/rc.d啟動的配置文件和腳本/home用戶主目錄的基點,比如用戶abc的主目錄就是/home/user,可以用~abc表示/lib標準程序設計庫/sbin系統管理命令,這裡存放的是系統管理員使用的管理程序/tmp公用的臨時文件存儲點/root系統管理員的主目錄/mnt系統提供這個目錄是讓用戶臨時掛載其他的文件系統。/lost+found這個目錄平時是空的,系統非正常關機而留下「無家可歸」的文件/proc虛擬的目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息。/var某些大文件的溢出區,比方說各種服務的日誌文件/usr最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。其中包含:

/usr/X11R6 存放X window的目錄

/usr/bin 眾多的應用程序

/usr/sbin 超級用戶的一些管理程序

/usr/doc linux文檔

/usr/include linux下開發和編譯應用程序所需要的頭文件

/usr/lib 常用的動態鏈接庫和軟體包的配置文件

/usr/man 幫助文檔

/usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux里

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的庫

shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行,是一個命令解釋器。shell 有很多類型,這裡推薦BASH。BASH是GNU的Bourne Again Shell,是GNU操作系統上默認的shell,大部分linux的發行套件使用的都是這種shell。Linux Shell 及命令

Linux 的命令很多,下面給出了一個簡單的分類。

在shell 中組織linux 的命令來完成一系列的任務,就是shell 編程了。Shell,Perl和Python 是Linux 上最常用的腳本語言,我還是推薦使用Python。

Linux 應用

標準的Linux系統一般都有一套都有稱為應用程序的程序集,它包括文本編輯器、編程語言、X Window、Internet工具和資料庫等。

對於文本編輯而言,Emacs 和vim 各有千秋,通過插件配合甚至可以作為IDE使用。 個人感覺,VIM 還應該是必備技能。vim的命令也很多,整理如下:

就應用的管理而言,ubuntu 需熟知apt命令,centos 則是yum命令。當然了,源代碼編譯安裝是必須的,makefile的寫法,configure/autoconfig/make 的用法要手到擒來才好。

來源:伯樂在線 - abel_cao

blog.jobbole.com/106827


你想更深入了解學習Linux知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Linux雲計算從入門到精通》系列實戰筆記全放送

推薦閱讀:

想學習 Linux 下的伺服器系統管理,有哪些值得推薦書籍或資料?
想學習 Linux,裝個虛擬機,裝哪個發行版好?

TAG:Linux | Linux入门 |