計算機誕生
1946年2月14日,由美國軍方定製的世界上 第一臺電子計算機“電子數字積分計算機”(ENIAC Eletronic Numerical Integrator And Calculator)在美國賓夕法尼亞大學問世了。
計算機(computer)俗稱電腦,是現代一種用於高速計算的電子計算機器,可以進行數值計算,又可以進行邏輯計算,還具有存儲記憶功能。是能夠按照程序運行,自動、高速處理海量數據的現代化智能電子設備。由硬件系統和軟件系統所組成,沒有安裝任何軟件的計算機稱爲裸機。
馮· 諾依曼體系結構:1946 年計算機發明者馮· 諾依曼於提出計算機硬件由運算器、控制器、存儲器、輸入設備、輸出設備組成。
計算機硬件發展史:
第一代計算機(1946-1957) 電子管時代
第二代計算機(1958-1964) 晶體管時代
第三代計算機(1965-1970) 集成電路 時代
第四代計算機(1971 以後) 大規模集成電路 時代
操作系統
操作系統(Operating System,簡稱OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必須在操作系統的支持下才能運行。
操作系統是用戶和計算機的接口,同時也是計算機硬件和其他軟件的接口。操作系統的功能包括管理計算機系統的硬件、軟件及數據資源,控制程序運行,改善人機界面,爲其它應用軟件提供支持,讓計算機系統所有資源最大限度地發揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環境,爲其它軟件的開發提供必要的服務和相應的接口等。
UNIX
UNIX 是一個強大的多用戶、多任務操作系統,支持多種處理器架構,按照操作系統的分類,屬於分時操作系統。UNIX 最早由Ken Thompson和Dennis Ritchie於1969年在美國AT&T的貝爾實驗室開發。
UNIX哲學
小即是美。
讓程序只做好一件事。
儘可能早地建立原型。
可移植性比效率更重要。
數據應該保存爲文本文件。
Use software leverage to your advantage.
使用shell腳本來提高效率和可移植性。
避免使用漂亮的用戶界面。
爲每個程序添加一個過濾機制。
GNU項目介紹
1983Richard Stallman發起目的是創建一套完全自由的操作系統
1985Richard Stallman創立了自由軟件基金會FSF爲GNU提供技術、法律、財政支持,GNU計劃開發了大量的自由軟件
1990年GNU計劃已經開發出包括Emacs、GCC等大部分軟件工具,但操作系統內核HUR進展緩慢
1992年GNU與Linux結合,誕生完全自由的操作系統“GNU/LinuxGPL–GNU通用公共授權
Free Software的概念不是免費,自由軟件的重點在於自由權,而非價格。要了解其所代表的概念,你應該將“自由”想成是“言論自由”,而不是“免費啤酒”–理查德.斯托曼
GPL是一種授權方式,其精神是自由、分享、互惠
Copyleft 版權概念 ,傳染性允許他人任意的修改散步作品,唯其散步及修改的行爲和做法,亦限定於Copyleft的方式行之open source
Linux
核心編寫者Linus Torvalds 芬蘭人林納斯.託瓦茲,1991年9月發佈了Linux內核第一個版本
Linux的歷史與GNU緊密聯繫,linux內核遵循GNU 和GPL,但並不是GNU計劃的一部分,1994年3月linux1.0版正式發佈,Redhat公司成立,成爲最著名的linux發行商之一
自由的類Unix操作系統
Linux 操作系統:
Linux Kernel內核+ GNU 工具= 完整的類UNIX操作系統
如:CentOS,Ubuntu,Android
Linux 發行版
slackware:SUSE Linux Enterprise Server (SLES)
opensuse 桌面
debian: ubuntu ,mint
redhat: : rhel: redhat enterprise linux
每18 個月發行一個新版本
CentOS :兼容rhel 的格式
中標麒麟:中標軟件
fedora :每6 個月發行一個新版本
ArchLinux :輕量簡潔
Gentoo :極致性能, 不提供傳統意義的安裝程序
LFS: Linux From scratch 自制Linux
Android: kernel+busybox (工具集)+java 虛擬機
Linux 分支參考網站:http://futurist.se/gldt/
Linux的哲學思想
1.一切皆文件接口
把幾乎所有資源統統抽象爲文件形式,包括硬件設備,甚至通信接口等
2. 用衆多功能單一的程序組成,一個程序只做一件事,並且做好
組合小程序完成複查任務
3.儘量避免跟用戶交互
目標:易於以編程的方式實現自動化任務
4. 使用文本文件保存配置信息
linux文件系統
Linux有一個樹狀結構來組織文件。樹的頂端爲根目錄(/),節點爲目錄,而末端的葉子爲包含數據的文件。當我們給出一個文件的完整路徑時,我們從根目錄出發,經過沿途各個目錄,最終到達文件。
根文件系統(rootfs) :root filesystem
文件名稱 區分大小寫
以. 開頭的文件爲隱藏文件
路徑分隔的 /
文件有兩類數據:
元數據:metadata
數據:data
文件系統分層結構:LSB Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
文件名最長255 個字節
包括路徑在內文件名稱最長4095 個字節
/:根目錄,所有的目錄、文件、設備都在/之下,/就是Linux文件系統的組織者,也是最上級的領導者。
/bin:bin 就是二進制(binary)英文縮寫。在一般的系統當中,都可以在這個目錄下找到linux常用的命令。系統所需要的那些命令位於此目錄。
/boot:Linux的內核及引導系統程序所需要的文件目錄,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄。
/cdrom:這個目錄在剛剛安裝系統的時候是空的。可以將光驅文件系統掛在這個目錄下。例如:mount /dev/cdrom /cdrom
/dev:dev 是設備(device)的英文縮寫。這個目錄對所有的用戶都十分重要。因爲在這個目錄中包含了所有linux系統中使用的外部設備。但是這裏並不是放的外部設備的驅動程序。這一點和常用的windows,dos操作系統不一樣。它實際上是一個訪問這些外部設備的端口。可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。
/etc:etc這個目錄是linux系統中最重要的目錄之一。在這個目錄下存放了系統管理時要用到的各種配置文件和子目錄。要用到的網絡配置文件,文件系統,x系統配置文件,設備配置信息,設置用戶信息等都在這個目錄下。
/home:如果建立一個用戶,用戶名是”xx”,那麼在/home目錄下就有一個對應的/home/xx路徑,用來存放用戶的主目錄。
/lib:lib是庫(library)英文縮寫。這個目錄是用來存放系統動態連接共享庫的。幾乎所有的應用程序都會用到這個目錄下的共享庫。因此,千萬不要輕易對這個目錄進行什麼操作,一旦發生問題,系統就不能工作了。
/lost+found:在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這裏。當系統啓動的過程中fsck工具會檢查這裏,並修復已經損壞的文件系統。有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
/mnt:這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom等目錄。可以參看/etc/fstab的定義。
/media:有些linux的發行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅動器等等。
/opt:這裏主要存放那些可選的程序。
/proc:可以在這個目錄下獲取系統信息。這些信息是在內存中,由系統自己產生的。
/root:Linux超級權限用戶root的家目錄。
/sbin:這個目錄是用來存放系統管理員的系統管理程序。大多是涉及系統管理的命令的存放,是超級權限用戶root的可執行命令存放地,普通用戶無權限執行這個目錄下的命令,這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目錄是相似的,凡是目錄sbin中包含的都是root權限才能執行的。
/selinux :對SElinux的一些配置文件目錄,SElinux可以讓linux更加安全。
/srv 服務啓動後,所需訪問的數據目錄,舉個例子來說,www服務啓動讀取的網頁數據就可以放在/srv/www中
/tmp:臨時文件目錄,用來存放不同程序執行時產生的臨時文件。有時用戶運行程序的時候,會產生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
/usr:這是linux系統中佔用硬盤空間最大的目錄。用戶的很多應用程序和文件都存放在這個目錄下。在這個目錄下,可以找到那些不適合放在/bin或/etc目錄下的額外的工具
/usr/local:這裏主要存放那些手動安裝的軟件,即不是通過“新立得”或apt-get安裝的軟件。它和/usr目錄具有相類似的目錄結構。讓軟件包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面、。
/usr/share :系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。
/var:這個目錄的內容是經常變動的,看名字就知道,可以理解爲vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。/var/ www目錄是定義Apache服務器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL數據庫的的存放地。
Shell 是Linux 系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行
shell 也被稱爲LINUX 的命令解釋器(command interpreter) )
shell 是一種高級程序設計語言
輸入命令後回車:
提請shell 程序找到鍵入命令所對應的可執行程序或代碼,並由其分析後提交給內核分配資源將其運行起來
在shell 中可執行的命令有兩類:
內部命令:由shell 自帶的,而且通過某命令形式提供
help 內部命令列表
enable cmd 可以啓用
enable –n cmd 禁用 內部 命令
enable –n 查看所有禁用的內部命令
外部命令:在文件系統路徑下有對應的可執行程序文件
查看路徑:which -a |–skip-alias ; whereis
區別指定的命令是內部或外部命令:
# type COMMAND
使用手冊 MAN 章節 /usr/share/man
1、Standard commands (標準命令) 2、System calls (系統調用) 3、Library functions (庫函數) 4、Special devices (設備說明) 5、File formats (文件格式) 6、Games and toys (遊戲和娛樂) 7、Miscellaneous (雜項) 8、Administrative Commands (管理員命令) 9 其他(Linux特定的), 用來存放內核例行程序的文檔。
man 常用於命令參考 ,GNU 工具info 適合通用文檔參考。
沒有參數, 列出所有的頁面
info 頁面的結構就像一個網站
每一頁分爲“節點”
鏈接節點之前 *
info [ 命令 ] //獲取命令的在線文檔;