Linux及計算機基礎介紹
計算機的組成及其功能
What:計算機的組成是什么?
-
計算機的主要部件:
-
CPU:可分為運算器、控制器、寄存器、緩存等
-
存儲器:比如內存。執行程序時,會將程序及相關數據加載進內存,供CPU讀取
-
輸入設備:比如:鍵盤。用于下達指令及輸入數據。
-
輸出設備:比如顯示器。用戶顯示和輸出指令執行的結果等
-
馮諾依曼體系中提出的五大部件為:運算器、控制器、存儲器、輸入、輸出
How:計算機如何工作的?
1. 硬盤等存儲介質用于存放程序及數據。
-
程序 = 指令 + 數據
2. 用戶通過輸入設備,下達執行某個程序
3. 計算機會先將該程序及相關數據加載到內存中。
-
因為CPU只能直接訪問內存
-
內存在內部是劃分存儲單元,每個單元為8bit
-
內存中每個單元都有編址。
4. CPU先讀取該指令,當需要用到數據時,再從內存中載入響應數據
-
CPU要能執行某指令,首先它得要支持。而CPU所能支持的指令集合稱之為指令集。不同的CPU,指令集也不同。
-
指令集中指令又可分為兩類:普通指令、特權指令
-
CPU有位長之分。目前有32位和64位CPU
-
不同的位長,代表CPU同一時間可以訪問內存單元的數量的多少
5. 如果第一個指令運行完后,結果還需和其他數據再進行運算,那么CPU會先將該結果放入寄存器中,待用時再取出。
6. 最后將結果輸出到輸出設備
Why:為什么有了內存,還需要有CPU緩存?
由于內存的頻率遠低于CPU頻率。因此通過CPU緩存來解決速度不同的問題。減少等待時間,提高CPU效率。
緩存為王~!
What:那么什么是操作系統?
操作系統是由內核和眾多應用程序組合而成的。
而內核位于硬件之上,應用程序之下。它驅動了硬件,并向上提供了系統調用,使得程序員能方便的調用系統資源。
內核(kernel)的作用:
1、驅動底層硬件
2、將各底層硬件資源抽象成簡單的資源
3、管理各程序的運行,把有限資源分配給各程序
-
對于CPU,通過時隙復用
-
對于內存,通過空間復用
它的存在,使得所有程序在任意時候都認為自己是獨占著系統資源。對于程序而言,所要面對的也只有操作系統而已
Linux發行版本
1、Linux的發行版
Linux內核以及在其上運行的軟件都是基于開源協定,以源碼的方式共享出來,任何人都可以隨意拿來編譯安裝。也因此增加了使用難度。
為了方便安裝,很多組織和公司便提供了在不同平臺上已編譯好的Linux系統。我們稱之為發行版。發行版依舊須遵循開源協定,對外免費共享出來。
2、常見的Linux發行版:
主流的有三種Debian
,Slackware
,Red Hat
Debian
Debian,或者稱Debian系列,包括Debian和Ubuntu等。Debian是社區類Linux的典范,是迄今為止最遵循GNU規范的Linux系統。Debian最早由Ian Murdock于1993年創建,分為三個版本分支(branch): stable, testing和unstable。Debian最具特色的是apt-get /dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制文件發行方式中,APT應該是最好的了。Debian的資料也很豐富,有很多支持的社區,有問題求教也有地方可去。
-
Ubuntu是基于Debian的unstable版本加強而來,可以這么說Ubuntu就是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的Linux桌面系統。根據選擇的桌面系統不同,有多個版本可供選擇,比如基于unity的Ubuntu,基于Gnome的Ubuntu Gnome,基于KDE的Kubuntu,基于LXDE的Lubuntu以及基于Xfce的Xubuntu等。特點是界面非常友好,容易上手,對硬件的支持非常全面,是最適合做桌面系統的Linux發行版本。
Red Hat
Redhat,應該稱為Redhat系列,Redhat linux是全球在服務器上應用最廣泛的linux操作系統,在效率、擴展性、可靠性、安全性、集成虛擬化等都具備領先其他linux的特點,被譽為最值得信賴的數據中心平臺系統,其主要應用在服務器領域。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分發方式是編譯好的二進制文件。
-
RHEL(Redhat Enterprise Linux),Redhat為期提供完善的售后服務,并以服務提供收費。
-
CentOS(Community ENTerprise Operating System),它是來自Red Hat Enterprise Linux依照開放源代碼規進行重新編譯而成的,并且僅僅是將logo標識替換掉。所以也可以說CentOS是redhat服務器的免費版。新版的CentOS大約每兩年發布一次,每個版本大概每6個月更新一次,CentOS也提供技術支持,但僅限于社區的官方郵件、論壇和聊天室,并且CentOS不負任何商業責任。
-
Fedora(由原來的Redhat桌面版本發展而來,免費版本),Redhat會將最新的技術或程序用在這個發行版中,以作測試之用。
Slackware
Slackware 由Patrick Volkerding創建于1992年。算起來應當是歷史最悠久的Linux發行版。曾經Slackware非常的流行,但是當Linux越來越普及,用戶的技術層面越來越廣(更多的新手)后,Slackware漸漸的被新來的人們所遺忘。盡管如此,Slackware仍然深入人心(大部分都是比較有經驗的 Linux老手)。Slackware穩定、安全,所以仍然有大批的忠實用戶。由于Slackware盡量采用原版的軟件包而不進行任何修改,所以制造新 bug的幾率便低了很多。Slackware的版本更新周期較長(大約1年),但是新版本的軟件仍然不間斷的提供給用戶下載。
-
SUSE Linux原是以Slackware Linux為基礎,并提供完整德文使用界面的產品。SUSE 有兩個linux版本,一個是open SUSE,另一個是Enterprise linux,Enterprise linux是為企業而設計的,要長期使用,需要收一定的費用的。而前一個是完全按照開源社區的要求,是免費的和放開源代碼的。Zypper 和 Yast 是 SUSE Linux 平臺上的軟件包管理工具,他們的底層使用了 RPM。
Linux的哲學思想
1、一切皆文件:
在Linux中最核心的思想便是一切皆文件,從普通文件到設備,在Linux上都是以文件形式放置。Linux的文件類型有:普通文件、目錄文件、塊設備文件、字符文件、符號鏈接文件、命名管道和套接字文件。就連內核和進程的運行狀態也以文件的方式存放著。
2、由眾多功能單一的程序組成,一個程序只做一件事,切做好。
在Linux上每一個指令便是一個小程序,而每一個指令只負責一件事,通過不同的命令選項,完善了指令的功能。
3、組合單一的小程序完成復雜任務。
體現在了Linux的小巧精簡。Linux上的沒有像Windows那樣,每個軟件大道幾百M。甚至幾十G。他們通過組合小程序實現復雜功能,復用了相同功能的程序,減小軟件的大小,提高了軟件開發的效率。
4、盡量避免與用戶交互。
這也是為了,能方便shell腳本的開發。減少交互,就能方便的將單一小程序組合起來使用。
5、使用文本文件保存配置信息
這點說道根本也是一切皆文件的體現,一個文本編輯器便能完成所有軟件的配置,不需要額外的應用程序。
Linux上的命令
命令提示符:prompt(bash)
#:管理員賬戶,為root;擁有最高權限,能執行所有操作
$:普通用戶,非root用戶;不具有管理權限,不能執行系統管理類操作
命令的語法通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND:發起一命令:請求內核將某個二進制程序運行為一個進程;
-
命令本身是一個可執行的程序文件:二進制格式的文件,有可能會調用共享庫文件;
-
命令必須遵循特定格式規范:ELF(Linux),exe(Windows), msi(Windows)
-
可以使用file命令查看:
-
命令分為兩類:
-
內建命令: 由shell程序的自帶的命令
-
外部命令:獨立的可執行程序文件,文件名即命令名
-
可使用type命令查看:
OPTION:指定命令的運行特性;
選項有兩種表現形式:
短選項:-C, 例如-l, -d
注意:有些命令的選項沒有-;
如果同一命令同時使用多個短選項,多數可合并:-l -d = -ld
長選項:–word, 例如–help, –human-readable
注意:長選項不能合并;
注意:有些選項可以帶參數,此稱為選項參數;
ARGUMENTS:命令的作用對象;命令對什么生效;
不同的命令的參數;有些命令可同時帶多個參數,多個之間以空白字符分隔;
常用命令:ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date
【ifconfig】:configure a network interface 配置網絡接口
【echo】: display a line of text
echo [SHORT-OPTION]… [STRING]…
-
-n:不進行換行
-
-e:讓轉義符生效
1、\n:換行
2、\t:制表符
-
在shell中string可以使用引號,單引號和雙引號均可用
1、單引號:強引用,變量引用不執行替換
2、雙引號:弱引用,變量引用會被替換
-
注意:變量引用的正規符號:${name},只不過一般花括號可以省略
【tty】: print the file name of the terminal connected to standard input
終端:
串行終端
/dev/ttyS#
物理終端
/dev/console
虛擬終端:圖形終端
/dev/tty#
偽終端:遠程連接,圖形環境打開的命令接口
/dev/pts/#
【startx】:打開圖形界面
啟動圖形界面:startx & (不加&,只有等指令運行結束后才能返回命令聽提示符)
【export】:為 shell 變量設定導出屬性。
設置語言為英文:
【pwd】:print name of current/working directory
實例:
【history】:顯示或操縱歷史列表。
-c:清空命令歷史列表
-d offset:刪除指定的歷史命令
-r:從文件讀取命令歷史到歷史列表中
-w:把歷史列表中的命令追加到歷史文件中
history #:顯示最近的#條命令
【shutdown】:Halt, power-off or reboot the machine
shutdown [OPTIONS…] [TIME] [WALL…]
【reboot】,【halt】,【poweroff】:一般情況下是調用shutdown進行關機處理等處理
【hwclock】:query or set the hardware clock
hwclock [function] [option…]
顯示硬件時鐘:
hwclock -s :系統時間以硬件時間為準,–hctosys
hwclock -w : 硬件時間以系統時間為準,–systohc
【date】:print or set the system date and time
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
date +%m 獲取月份:
設置系統時間:
格式:date MMDDhhmm[CC]YY.ss
月 日 時 分 年 秒
Linux上獲取命令幫助
1、內建命令:
#help 命令
如:help cd
2、外部命令
1、# 命令 –help
如:dirname –help
2、使用手冊:manual
位置:/usr/share/man
man介紹:
#man 命令名 (先解壓后顯示)
SECTION:
NAME:功能性說明
SYNOPSIS:語法格式
DESCRIPTION:描述
OPTIONS :選項
EXAMPLES:使用示例
AUTHOR:作者
BUGS:報告程序bug的方式
SEE ALSO:參考
……
使用幫助中命令格式中的字符意義:
[]:可選的部分
{a|b}:分組,a和b作為一個使用單元來使用
|:或者,只能選其一
<>:必不可少的部分
…:同類內容可以出現多個
man的簡要使用機制:
翻屏:
空格鍵:向文件尾部翻一屏
b:向文件首部翻一屏
回車鍵:向文件尾部翻一行
k:向文件首部翻一行
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
1G:跳轉至第一行
#G:跳轉至指定行(#為行號)
G:跳轉至最后一行
文本搜索:(不區分關鍵字大小寫)
/keyword:向文件尾部搜索
?keyword:向文件首部搜索
n:順著查找方向下一個
N:逆著查找方向下一個
q:退出
補充:man其實能為命令(普通命令、管理命令)、程序的配置文件格式、系統調用、庫調用、游戲及其他不便歸類的文件提供幫助手冊
/usr/share/man
man1,man2,……
man命令的分段機制:
1:用戶命令:
2:系統調用
3:C庫調用
4:設備文件及特殊文件
5:文件格式(配置文件格式)
6:游戲使用幫助
7:雜項
8:管理命令及守護進程
并非每個命令在所有章節下都有手冊,
查看某關鍵字在那些段落有使用幫助
whatis Keyword 精確查找
提示:如果whatis的數據庫尚未生成,可以使用makewhatis手動進行
舊版的 Linux 這個指令是使用 makewhatis!CentOS7使用 mandb 了!
man -k Keyword 模糊查找
man -M /path/to/somedir:到指定目錄下查找命令手冊并打開
man的文件在:/usr/share/man
3、很多應用程序自帶有幫助文檔:/usr/share/doc/
README:程序的相關信息
INSTALL:安裝幫助
CHANGES:版本迭代時的改動信息
4、info 命令:獲取在線文檔
5、主流發行版官方文檔
http://www.redhat.com/doc
6、程序官方的文檔
官方站點上的“Document”
7、google:
linux filetype:ppt 特定格式文件
keyword site:magedu.com 在特定網頁內搜素
Linux基礎目錄名稱及功能規定
/bin:所有用戶可用的基本命令程序文件
/sbin:供系統管理使用的工具程序文件
————————————————————————————
存放為了保證操作系統正常運行而提供的可執行程序
/usr/bin
/usr/sbin
————————————————————————————
用來存放第三方軟件的程序
/usr/local/bin
/usr/local/sbin
/boot:引導加載器必須用到的各靜態文件:kernel、initramfs(initrd)、bootloader(grub)
/dev:存儲特殊文件或設備文件
設備有兩種類型:字符設備(線性設備,有時序)、塊設備(隨機設備,可以任意訪問)
/etc:系統程序的配置文件 ,只能為靜態
/etc/sysconfig:系統級別的配置文件
/etc/init.d:系統服務腳本
/home:普通用戶,默認在/home下有一個與其名稱同名目錄,作為用戶的家目錄
/root:管理員的家目錄
/lib:為系統啟動或根文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及為內核提供內核模塊
libc.so.*:動態鏈接的C庫
ld*:運行時鏈接器/加載器
modules:用于存儲內核模塊的目錄
/lib64:64位系統特有的存放64位共享庫的路徑
/media:專用的掛載位置,通常用來掛載便攜式設備。(cdrom,floopy等)
/mnt:專用掛載位置,掛載額外的存儲設備。
/misc:備用目錄
/opt:早期附加應用程序的安裝位置:
/proc:基于內存虛擬文件系統(關機后就沒了),用于為內核及進程存儲運行時的相關信息,他們多為內核參數,例如:net.ipv4.ip_forward(參數的值就是這個文件的內容),虛擬為net/ipv4/ip_forward,存儲于/proc/sys/net/ipv4/ip_forward
/sys:sysfs虛擬文件系統提了一種比proc更為理想的訪問內核數據的途徑,主要作用在于為管理Linux設備提供一種統一的模型接口(偽文件系統,系統級別的,用于配置外圍設備特性的參數。)
詳見:www.ibm.com/developerworks/cn/linux/l-cn-sysfs
/srv:當前主機為服務提供的數據
/tmp:存取臨時文件的目錄,可供所有用戶使用,有特殊權限,默認存放30天
/usr:usr Hierarchy, shared 所有遵循協議的系統都可以使用,readonly 只讀
bin,sbin
lib,lib64
/usr/include:C程序頭文件
share:命令手冊頁和命令自帶文檔等架構特有的文件的存儲位置
local:又一個層級目錄
X11R6:XWindow程序的安裝位置
src:程序源碼文件的存儲位置
/usr/local:Local hierarchy,讓系統管理員安裝本地應用程序(為了與系統原有程序不沖突,而裝在一個新的目錄下),也通常用與安裝第三方程序
在這個路徑下也同樣擁有類似/usr下的目錄
bin、sbin、etc、include、man、share、src等
/var:存儲常發生變化的數據目錄
原創文章,作者:lucklyme,如若轉載,請注明出處:http://www.www58058.com/47364
黑屏是不是很丑,可以研究一下makedown格式