本次博文是Linux運維實戰的開山篇,主要內容如下:
-
計算機的組成及其功能;
-
Linux的不同發行版之間的聯系與區別;
-
Linux的哲學思想;
-
Linux系統上命令的適用格式及一些常用命令的使用;
-
Linux系統上如何獲得幫助信息;
-
Linux發行版的基礎目錄名稱命名法則及功用規定;
一、計算機的組成及其功能:
問題引入:互聯網時代,計算機是我們每天都要使用的工具,那么,一臺計算機是由哪幾部分組成的呢?其各部分的功能又是怎樣的呢?下面我們就來詳細討論一下哈。
計算機的組成:
-
什么是計算機:
大到超級計算機,小到智能手機,這些統統都可以稱為計算機,那計算機的定義究竟是什么呢?我覺得需要從程序員和普通用戶兩個角度去理解。從程序員角度看的定義為:程序員要寫出能在機器上正確運行的程序必須了解的概念性結構和功能特性。從用戶角度看的定義為:硬件+軟件。通常是一臺安裝好了操作系統的虛擬計算機,用戶可以在其上完成一些日常工作、玩游戲等等。
-
一臺計算機由哪幾部分組成:
我們現在常用的計算機,包括手機及智能設備,通常由五大部件組成(馮若依曼提出),如下圖所示:
由上圖可以看出,一臺計算機的組成:
CPU:包括運算器和控制器
存儲器:包括ROM和RAM,通常我們所說的內存主要為RAM
I/O設備:即輸入輸出設備,通常為磁盤、鍵盤、鼠標、顯示器、打印機等
-
計算機各組成部分的功能:
問題引入:計算機能夠提供哪些功能呢?我想最主要的功能就是按照程序員實現編制好的程序運行,處理數據以滿足我們日常的生活和工作需要。
那么我們就需要思考一個問題:什么是程序?程序是如何被運行的呢?
程序的執行過程:
-
用戶打開程序:
程序=指令+數據。此時,數據先存在硬盤里,CPU要處理該數據就要先發指令將數據從硬盤讀取到到內存里; -
CPU把程序代碼段和數據段送入計算機的內存
-
控制器從存儲器中取指令
-
控制器分析,執行指令,為取下一條指令做準備
-
取下一條指令,分析執行,如此重復操作,直至執行完程序中全部指令,便可獲得全部指令
現代計算機所遵循的是馮·若依曼機制:
-
程序存儲
-
采用2進制
二、Linux的不同發行版之間的聯系與區別:
-
開源組織、開源協定與Linux的關系:
說明:
-
GNU:“GNU's Not Unix”的遞歸縮寫。是由Richard Stallman發起的開源運動(有點類似操作系統屆的共產主義哈)
-
GPL:GPL是由自由軟件基金會發行的用于計算機軟件的協議證書,使用該證書的軟件被稱為自由軟件(Free software),后來改名為開放源代碼軟件(Open Source Software)。大多數的GNU程序和超過半數的自由軟件使用它 。
-
GPL保證了任何人都有權復制、修改和重新發布自由軟件的源代碼,并且規定在不增加費用的條件下得到源代碼(基本發行費用除外),但你不能聲明你做了原始的工作,或聲明是由他人做的。
-
Linux kernel + GNU utilities = open source,UNIX-like operating system
-
發行商的由來:
問題引入:我們現在拿到了Linux內核(源程序),如何安裝到X86主機上?眾多以源碼提供的應用程序如何安裝到Linux系統中呢?
發行商應運而生:僅有內核而沒有應用軟件的操作系統是無法使用的,所以許多公司或社團將內核、源代碼及相關的應用程序組織構成一個完整的操作系統,并且提供一個安裝程序(RedHat提供的安裝程序叫anaconda),一般的用戶可以簡便地安裝和使用Linux,這就是所謂的發行版本(distribution)。
-
Linux的發行版本:
Linux的發行版有很多,先簡單羅列一下:
這些主流的發行版的關系如下圖所示:
注意:Linux的內核版本和發行商的發行版本是兩碼事
例如:RHEL-6.4 用的是Linux-2.6.32版本的內核
Linux比較有名的內核版本:2.2,2.4,2.6 ,3.10等
三、Linux的哲學思想:
-
一切皆文件:對于Linux而言一切都是以文件的形式存在,包括硬件設備,甚至通信接口等;
例如在Linux系統中,硬件文件都是保存在/dev/目錄下,我們以光驅CDROM為例: -
由眾多功能單一的程序組成:一個程序只做一件事情,并且做好;
-
組合小程序完成復雜任務:一個復雜的任務不必使用一個大型的程序來獨立完成,它可以由多個獨立的小程序相互配合以完成復雜任務;
-
盡量避免與用戶交互:目標–易于以編程的方式實現自動化任務;
-
使用文本文件保存配置信息:計算機的所有硬件和軟件配置信息保存在文本文件中;
-
提供機制,而非策略:機制是一種框架;策略就是填充框架的一個個實體(陳莉君教授提出的理論);機制是接口,策略是數據流。管道是機制,應用管道處理各種數據是策略。
四、Linux系統上命令的使用格式及一些常用命令的使用:
-
Linux中命令的使用格式:
Linux中的命令分為內部命令和外部命令兩種:
內部命令:是shell程序自身附帶的命令 ,隨每次啟動的SHELL裝入并常駐內存;(類似DOS系統的內部命令,是隨每次啟動的COMMAND.COM裝入并常駐內存)
外部命令:在某目錄有一個與命令同名的可執行文件
如何查看一個命令是內部命令還是外部命令呢?使用type命令:
上面的例子中,mkdir是一個外部命令,位于/bin/mkdir/目錄中;cd是一個內部命令
小結:
Linux 的命令格式: [username@host 工作目錄] PROMPT COMMAND OPTIONS ARGUMRNTS
PROMPT:命令提示符,一般而言,管理員的提示符為#,這個我們在Cisco的路由設備上也見到過哈,#代表特權;普通用戶的命令提示符為$
例如:用whoami命令可以查看當前用戶是誰
下面我們切換到一個普通用戶:
可以看到普通用戶的命令提示符為$。從管理員切換到普通用戶是不需要密碼的,反之從普通用戶切換回管理員需要密碼。
COMMAND:輸入的命令,如ls、mkdir、mv等等,Linux中最常用的命令大約有60多個
OPTIONS:定制命令的運行特性
選項有兩種表現形式:
短選項: -c
長選項:–word 例如 –help –human-readable
例如:ls命令帶選項和不帶選項的顯示效果如下圖:
![]()
ARGUMENTS :命令的作用對象,命令對什么生效
例如上面的例子中,ls命令作用的對象是/tmp目錄,意思是要列出/tmp目錄下的內容。ARGUMENTS有時候是可以省略的,例如:
ls命令后省略ARGUMENTS,表示顯示當前目錄下的內容。
-
常用命令的使用:ifconfig、
ifconfig:是一個用來查看、配置、啟用或禁用網絡接口的工具
常用的選項:
-a 顯示當前使用所有接口 ifconfig -a
-s 顯示網卡信息列表 ifconfig -s
范例:
當前我的主機上,網卡的地址為192.168.1.58/24
echo : 將參數寫入標準輸出,標準輸出一般為顯示器
常用的選項: -n 不換行 -e 處理轉義字符
例如:
tty :查看終端設備
常用的選項: --version 查看tty版本信息例如:
startx:在某一個虛擬終端啟動gui
例如:
我的主機上沒有安裝GUI程序,所以報錯。
export :設置或顯示環境變量
例如:將當前shell的語言設置為英文
pwd:顯示當前的工作目錄
例如:
history :查看此前的命令
常用選項:
-c :清空歷史 -d offset: 指定位置刪除歷史條目 -r: 從文件讀取命令歷史至歷史列表中 -w:把歷史列表中的命令追加到文件中 #:顯示最近的N條命令 history
例如:
shutdown :關機或重啟命令
常用選項 -h:關機后關閉電源 -c: 取消目前正在執行的關機程序 -r :重啟計算機 shutdown -r例如:
![]()
poweroff:關機命令
常用選項: -f:強制關機 reboot:重啟命令 hwlock : 查看或設定硬件時間 -s --hctosys:以硬件時間為準,把系統調整與硬件時間相同 -w –systohc:以系統時間為準,把硬件時間調整為與系統時間相同 例如:以系統時間為準,把硬件時間調整為與系統時間相同
![]()
data:查看或修改系統時鐘
設定日期時間: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]例如:
五、Linux系統上如何獲得幫助信息:
查看命令類型: type COMMAND
例如:
獲取命令的使用幫助: 內部命令 :help COMMAND 外部命令 :COMMAND -h 或 COMMAND --help
例如:
cd是內部命令,它的幫助獲取方式如下圖所示:
hwclock是外部命令,它的幫助獲取方式如下圖所示:
Linux中的幫助文檔:
有個形象的話是這樣說的:生活中有困難找政府,Linux中有困難找男人(man)。Linux中的man非彼man,是manual的縮寫,用法如下:
使用說明:
-
按章節劃分:
1:用戶命令
2:系統調用
3:c庫調用
4:設備文件及特殊文件
5:配置文件格式
6:游戲使用幫助
7:雜項
8:管理工具及守護進程
-
選項說明:
SECTION:指定章節 NAME: 功能性說明 SYNOPSIS 語法格式 DESCRIPTION 描述 OPTIONS 選項 EXAMPLES 使用實例 AUTHOR 作者 BUGS 報告程序bug方式
例如:
查看init的幫助手冊,init是一個守護進程,所以默認打開了第8章節:
查看ls命令的幫助手冊,ls是一個內部命令,所以默認會打開第1章節:
-
系統到哪里去找某個程序的幫助手冊呢?
在其配置文件中定義:/etc/man.config
六、Linux發行版的基礎目錄名稱命名法則及功用規定:
-
Linux系統中的文件類型:
Linux系統中,文件被分為3類:
(1)目錄文件:全部由目錄組成的文件
(2)普通文件:由系統文件、用戶文件、實用程序文件、庫文件組成
(3)特別文件:所有的輸入/輸出設備被看作特別文件,系統指定專用的文件名,如:/dev/lp表示打印機設備。
Linux系統樹型目錄組織結構:
Linux系統把目錄組織成樹狀結構–Linux Filesystem Hierarchy。這樣做有什么好處呢?
層次化結構能夠大大減小查找的復雜度–>如果系統內文件很多,則目錄文件會變得很長,要查找某個文件將耗費太多的時間(例如:我們要查找一個文件,但不知道它存儲在什么地方,此時我們就需要從“/”下開始查找,那肯定是非常耗時間哈。若此時我們知道這個文件保存在"/var/log/” 下,那查找起來肯定快的多哈?。涫且环N層次化的數據結構,它由根結點,子結點以及子子結點組成。Linux借用樹狀結構來組織它的文件目錄,形成樹型目錄組織。樹型目錄組織是多級目錄組織的一種形式。Linux文件系統的目錄組織結構如下圖所示:
說明:特殊目錄
include: c程序頭文件
share:命令手冊頁 命令自帶文檔 通常放于此目錄下,
local:另一個層級目錄
x11r6:x-window 程序的安裝位置
src: 程序源碼文件的存儲位置
lib.so.*: 動態鏈接C庫
ld*: 運行時連接器/加載器
modules: 用于存儲內核模塊目錄
設備兩種類型:字符設備(線性設備) 塊設備(隨機設備)
本次博文就這么多哈,歡迎各位童鞋拍磚。有任何問題請和我聯系:QQ:229293602
原創文章,作者:N4_jjx,如若轉載,請注明出處:http://www.www58058.com/56436
內容格式把握得很好,不錯,希望你能熟知基礎命令知識,加油!