N26-第一周作業(yè)-邢巖
馬哥門徒-N26-邢巖
悲催了! 首次使用這個(gè)博客,居然連續(xù)未保存刪除了兩次,這可是我用了四個(gè)小時(shí)才寫好的??!瞬間藍(lán)瘦香菇了!感覺(jué)就像是Linux中使用了rm -rf / 一樣。
還是重新開始寫吧,第一次接觸Linux是在8年之前了,當(dāng)時(shí)弄到了一張紅帽的光盤,可是怎么也裝不上系統(tǒng),就放棄了。現(xiàn)在又來(lái)學(xué)習(xí)Linux,想起來(lái)還真是有緣。那我就從計(jì)算機(jī)的組成和功能談起吧。
計(jì)算機(jī)的基本硬件系統(tǒng)由運(yùn)算器、控制器、寄存器、輸入設(shè)備和輸出設(shè)備5大部件組成。
1.CPU:Central Processing Unit, 是硬件系統(tǒng)的核心,用于數(shù)據(jù)的加工處理,能完成各種算術(shù)、邏輯運(yùn)算及控制功能。CPU主要由運(yùn)算器、控制器、寄存器和內(nèi)部總線等部件組成。
CPU的功能:程序控制、操作控制、時(shí)間控制和數(shù)據(jù)處理。
運(yùn)算器:由算術(shù)邏輯單元(ALU)、累加寄存器(AC)、數(shù)據(jù)緩沖寄存器(DR)和狀態(tài)條件寄存器(PSW)組成,它是數(shù)據(jù)加工處理部件,完成計(jì)算機(jī)的各種算術(shù)運(yùn)算和邏輯運(yùn)算。
控制器:包括指令控制邏輯、時(shí)序控制邏輯、總線控制邏輯和中斷控制邏輯等幾個(gè)部分。用于控制整個(gè)CPU的工作,它決定了計(jì)算器運(yùn)行過(guò)程的自動(dòng)化。
2. 寄存器:可以分為專用寄存器和通用寄存器。
3. 輸入設(shè)備:用于輸入原始數(shù)據(jù)及各種命令。
4.輸出設(shè)備:用于輸出計(jì)算機(jī)運(yùn)行的結(jié)果。
接下來(lái),我來(lái)按系列羅列Linux的發(fā)行版,并描述不同發(fā)行版之間的聯(lián)系與區(qū)別(根據(jù)GNU/Linux Distribution Timeline)
1.Debian: 是完全由自由軟件組成的類UNIX操作系統(tǒng),其包含的多數(shù)軟件使用GNU通用公共許可協(xié)議授權(quán),并由Debian計(jì)劃的參與者組成團(tuán)隊(duì)對(duì)其進(jìn)行打包、開發(fā)與維護(hù)。
-
Knoppix:是一套光盤或USBU盤啟動(dòng)的GNU/Linux系統(tǒng)(LiveCD),功能包括:自動(dòng)硬件監(jiān)測(cè)、支持常見(jiàn)的顯卡、聲卡、SCSI和USB設(shè)備,以及其它外設(shè)。KNOPPIX可用于Linux演示、光盤教學(xué)、系統(tǒng)急救,經(jīng)過(guò)適當(dāng)改造,還可以用于商業(yè)軟件的產(chǎn)品演示。KNOPPIX采用了特殊的解壓縮技術(shù),不需要硬盤安裝,一張CD,就容納了2GB的可執(zhí)行程序,供用戶自由使用。
-
Ubuntu:Ubuntu是基于Debian發(fā)行版和GNOME桌面環(huán)境,與Debian的不同在于它每6個(gè)月會(huì)發(fā)布一個(gè)新版本(即每年的四月與十月),每2年發(fā)布一個(gè)LTS長(zhǎng)期支持版本。Ubuntu的目標(biāo)在于為一般用戶提供一個(gè)最新同時(shí)又相當(dāng)穩(wěn)定,主要以自由軟件建構(gòu)而成的操作系統(tǒng)。Ubuntu目前具有龐大的社區(qū)力量支持,用戶可以方便地從社區(qū)獲得幫助。
-
Linux Mint:是一種基于Ubuntu/Debian的Linux操作系統(tǒng)。由Linux Mint Team團(tuán)隊(duì)于2006年開始發(fā)行。Linux Mint的目標(biāo)是為家庭用戶和企業(yè)客戶提供一個(gè)免費(fèi)、高效、易用、高雅的桌面操作系統(tǒng)。Linux Mint是對(duì)用戶友好而功能強(qiáng)大的操作系統(tǒng)。Linux Mint的理想之一,以簡(jiǎn)單的方式呈現(xiàn)先進(jìn)技術(shù)給用戶,以此來(lái)成為最優(yōu)秀的操作系統(tǒng)。這種簡(jiǎn)單方式的實(shí)現(xiàn),不是通過(guò)簡(jiǎn)化結(jié)構(gòu)與機(jī)能而削減功能,也不是通過(guò)抄襲其它開發(fā)者的實(shí)現(xiàn)方法。
2.Slackware: 是Slackware Linux, Inc的Patrick Volkerding制作的Linux發(fā)行版本。Slackware走了一條與其他的發(fā)行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力圖成為“UNIX風(fēng)格”的Linux發(fā)行版本。它的方針是只吸收穩(wěn)定版本的應(yīng)用程序,并且缺少其他Linux版本中那些為發(fā)行版本定制的配置工具。
-
S.u.S.E:簡(jiǎn)寫“SuSE”,于1992年末創(chuàng)辦,目的是成為UNIX技術(shù)公司,專門制為德國(guó)人推出量身訂作的SLS/Slackware軟件及UNIX/Linux幫助文檔。
-
SLAS:由捷克人Tomá? Matějí?ek研發(fā),是一個(gè)基于Slackware和KDE桌面環(huán)境的操作系統(tǒng)。 Slax是一個(gè)便捷、便攜的Linux操作系統(tǒng)。它的界面既充滿時(shí)尚感,又可基于不同模塊的功能運(yùn)作。它的界面富有時(shí)尚感,并集成了不同的模塊的界面。盡管它的容量十分嬌小,Slax依然預(yù)載了不少日常應(yīng)用的軟件。除此之外,它還擁有精簡(jiǎn)而齊整的圖形用戶界面和一些有用的修復(fù)工具,方便系統(tǒng)管理員修復(fù)系統(tǒng)。
-
openSUSE:openSUSE在全世界,尤其是在德國(guó)被廣泛使用。它的開發(fā)重心是為軟件開發(fā)者和系統(tǒng)管理者創(chuàng)造適用的開放源代碼的工具,并提供易于使用的桌面環(huán)境和功能豐富的服務(wù)器環(huán)境。openSUSE針對(duì)桌面環(huán)境進(jìn)行了一系列的優(yōu)化,對(duì)Linux新手較為友好。
3.RedHat: Red Hat Linux是由Red Hat公司發(fā)行的一個(gè)Linux發(fā)行包。
-
Fedora Core:是較具知名度的Linux發(fā)行包之一,由Fedora項(xiàng)目社區(qū)開發(fā)、紅帽公司贊助,目標(biāo)是創(chuàng)建一套新穎、多功能并且自由(開放源代碼)的操作系統(tǒng)。Fedora對(duì)于用戶而言,是一套功能完備、更新快速的免費(fèi)操作系統(tǒng);而對(duì)贊助者Red Hat公司而言,它是許多新技術(shù)的測(cè)試平臺(tái),被認(rèn)為可用的技術(shù)最終會(huì)加入到Red Hat Enterprise Linux中。
-
Red Hat Enterprise:(RHEL)是一個(gè)由 Red Hat 開發(fā)的商業(yè)市場(chǎng)導(dǎo)向的 Linux 發(fā)行版。
-
CentOS:是Linux發(fā)行版之一,它是來(lái)自于Red Hat Enterprise Linux依照開放源代碼規(guī)定發(fā)布的源代碼所編譯而成。由于出自同樣的源代碼,因此有些要求高度穩(wěn)定性的服務(wù)器以CentOS替代商業(yè)版的Red Hat Enterprise Linux使用。兩者的不同,在于CentOS并不包含封閉源代碼軟件。CentOS 對(duì)上游代碼的主要修改是為了移除不能自由使用的商標(biāo)。
4.Gentoo:基于Portage包管理系統(tǒng),而擁有幾乎無(wú)限制的適應(yīng)性特性,被官方稱作元發(fā)行版(meta-distribution),支持多達(dá)10種以上的電腦系統(tǒng)結(jié)構(gòu)平臺(tái)。此項(xiàng)目和它的產(chǎn)品以巴布亞企鵝命名。Gentoo包管理系統(tǒng)的設(shè)計(jì)是模塊化、可移植、易維護(hù)、靈活以及針對(duì)用戶機(jī)器優(yōu)化的。軟件包從源代碼構(gòu)建,這延續(xù)了ports的傳統(tǒng)。但是為了方便,也提供一些大型軟件包在多種架構(gòu)的預(yù)編譯二進(jìn)制文件,用戶亦可自建或使用第三方二進(jìn)制包鏡像來(lái)直接安裝二進(jìn)制包。
5.ArchLinux:是朝向輕量(lightweight)以及簡(jiǎn)單(simple)的Linux發(fā)行版。其中“簡(jiǎn)單”(Simplicity)被定義為“避免不必要或復(fù)雜的修改”,也就是說(shuō),是由開發(fā)者角度定義,而非用戶角度思考。Arch Linux是由二進(jìn)制軟件包組成的,這些軟件包會(huì)針對(duì)i686及x86-64優(yōu)化以配合目前的硬件。
Linux的版本還是很多的,看起來(lái)眼花繚亂的。以后要不斷的嘗試才行。接下來(lái),我來(lái)描述Linux的哲學(xué)思想,并按照自己的理解對(duì)其進(jìn)行解釋。
1.一切皆文件,把幾乎所有資源統(tǒng)統(tǒng)抽象為文件形式,包括硬件設(shè)備,甚至通信接口等。表現(xiàn)之一:硬件設(shè)備也通過(guò)文件表示。如:open(), read(), write(), close(), delete(), create()。這就好像是小時(shí)候玩的積木一樣,一切都是積木組成的,可以撘成我想要的任何形狀,還可以用來(lái)計(jì)算。
物理終端:/dev/console

虛擬終端:/dev/tty# [1-6]

串行終端:/dev/ttyS#

偽終端:/dev/pts/#

查看終端設(shè)備: tty

查看接口程序: echo #SHELL
查看所用的shell類型: echo $SHELL

2.由眾多功能單一的程序組成:一個(gè)程序只做一件事,并且做好,需要組合小程序完成復(fù)雜任務(wù)。這很像我們?nèi)祟惖慕M織,領(lǐng)導(dǎo)安排任務(wù)給每一個(gè)員工,員工各司其職,只要做好分內(nèi)的事情就可以了。
3.程序啟動(dòng)后盡量避免跟用戶交互。目標(biāo):易于以編程的方式實(shí)現(xiàn)自動(dòng)化任務(wù)。這也就如員工做好自己的工作,避免去打擾其他人一樣。
4.使用文本文件保存配置信息。我覺(jué)得,之所以用文本文件,是由于文本占用的內(nèi)存最低,最節(jié)省磁盤空間。
看來(lái)Linux的思維與我們還是一樣的,那么,我就來(lái)說(shuō)明一下Linux系統(tǒng)上命令的使用格式,并詳細(xì)介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應(yīng)的示例來(lái)闡述。
1.ifconfig:配置網(wǎng)絡(luò)接口


2. echo:回顯
常見(jiàn)用法:
-
-n:不進(jìn)行換行
-
-e:讓轉(zhuǎn)義字符生效
1)echo string 可以使用引號(hào),
單引號(hào):強(qiáng)引用,變量引用不執(zhí)行替換。
雙引號(hào):弱引用,變量引用會(huì)被替換。
2)echo命令用于在shell中打印shell變量的值。



3.tty:顯示當(dāng)前終端

4.startx:?jiǎn)?dòng)GUI界面
5.export:設(shè)置或顯示環(huán)境變量

6.pwd:以絕對(duì)路徑的方式顯示用戶當(dāng)前工作目錄。

7.history:顯示歷史指令記錄內(nèi)容
命令用法:
-c: 清空命令歷史
-d offset: 刪除指定歷史命令
-r:從文件讀取命令歷史至歷史列表中
-w:把歷史列表中的命令追加至歷史文件中
history #:顯示最近的#條命令
調(diào)用命令歷史列表中的命令
!#: 再一次執(zhí)行歷史列表中的第#條命令
!!: 再一次執(zhí)行上一天命令
!STRING: 再一次執(zhí)行命令歷史列表中最近一個(gè)以STRING開頭的命令


8.shutdown:系統(tǒng)關(guān)機(jī)命令
命令用法:
-r 關(guān)閉系統(tǒng)然后重新啟動(dòng),類似于Windows平臺(tái)restart
-k 模擬關(guān)機(jī)(不是真的關(guān)機(jī)),只是向登錄者發(fā)送警告信息
-h 關(guān)機(jī)后關(guān)閉電源〔halt〕。
-n 不用init﹐而是自己來(lái)關(guān)機(jī)。不鼓勵(lì)使用這個(gè)選項(xiàng)﹐而且該選項(xiàng)所產(chǎn)生的后果往往不總是你所預(yù)期得到的。
-c 取消目前正在執(zhí)行的關(guān)機(jī)程序。這個(gè)選項(xiàng)沒(méi)有時(shí)間參數(shù)﹐但是可以發(fā)送一個(gè)訊息給每位使用者。
-f 快速關(guān)機(jī)重啟動(dòng)時(shí)跳過(guò)fsck。
now
hh:mm
+m
+0 現(xiàn)在


9.poweroff:

10.reboot:

11.hwclock:
12.date:
date [OPTION]... [+FORMAT]
FORMAT: 格式符 %F %T %Y %m %d %H %M %S
%s: 從1970年1月1日(Unix元年)0點(diǎn)0分0秒到執(zhí)行命令那一刻經(jīng)過(guò)的秒數(shù)
~]# date +"%F %T"
設(shè)定日期時(shí)間:date [MMDDhhmm[[CC]YY][.ss]]
~]# date 010211122017.30


這些命令還是要好好記住的。冰凍三尺非一日之寒,重要的事情說(shuō)三遍:練習(xí)、練習(xí)、練習(xí)。然后,我來(lái)看看如何在Linux系統(tǒng)上獲取命令的幫助信息,詳細(xì)列出,并描述man文檔的章節(jié)是如何劃分的。
命令分為兩類,可以使用type COMMAND查看命令類型。
內(nèi)建命令:由shell程序自帶的命令(builtin)。
外部命令:獨(dú)立的可執(zhí)行程序文件,文件名即命令名。
1.內(nèi)建命令使用:help COMMAND
2.外部命令使用:
1)命令自帶簡(jiǎn)要格式的使用幫助:COMMAND –help
2)使用幫助手冊(cè)(manual):man COMMAND
3)info COMMAND:獲取命令的在線文檔
4)很多應(yīng)用程序會(huì)自帶幫助文檔:/usr/share/doc/APP-VERSION
README:程序的相關(guān)信息
INSTALL:安裝幫助
CHANGES:版本迭代時(shí)改動(dòng)信息
5)主流發(fā)行版版官方文檔
6)搜索引擎
使用手冊(cè):壓縮格式的文件,有章節(jié)之分。在目錄/usr/share/man中,分為man1-man8
man1:用戶命令,普通用戶和管理員都可以使用
man2:系統(tǒng)調(diào)用
man3:C庫(kù)調(diào)用
man4:設(shè)備文件及特殊文件
man5:文件格式:配置文件格式
man6:游戲使用幫助
man7:雜項(xiàng)
man8:管理工具及守護(hù)進(jìn)程
使用:man CHAPTER COMMAND
注意:
1.并非每個(gè)COMMAND在所有章節(jié)下都有手冊(cè)
2.通過(guò)~]#whatis COMMAND查看命令在哪些章節(jié)存在
3.whatis執(zhí)行過(guò)程是查詢數(shù)據(jù)庫(kù)進(jìn)行的,如果有新命令加入需要手動(dòng)更新數(shù)據(jù)庫(kù):~]#makewhatis
man命令的幫助用起來(lái)還是很不錯(cuò)的,最后,我再來(lái)羅列Linux發(fā)行版的基礎(chǔ)目錄名稱、命名法則及功用規(guī)定。
Linux的FHS(Filesystem Hierarchy Standard,文件系統(tǒng)層級(jí)標(biāo)準(zhǔn)):Linux的標(biāo)準(zhǔn)規(guī)范
Linux文件系統(tǒng)以'/'為原初起點(diǎn)形成樹狀結(jié)構(gòu)
/bin : Essential user command binaries(for use by all users)供所有用戶使用的基本的用戶命令程序文件
/sbin: System binaries 系統(tǒng)的二進(jìn)制命令程序
/boot: Static files of the boot loader 引導(dǎo)加載器必須用到的各靜態(tài)文件:kernel,initramfs(initrd),grub等;
/dev: Device files 存儲(chǔ)特殊文件或設(shè)備文件
設(shè)備有兩種類型:字符設(shè)備和塊設(shè)備
字符設(shè)備(線性設(shè)備):數(shù)據(jù)交換是以字符為基本單位進(jìn)行的,如早期顯示器,鍵盤
塊設(shè)備(隨機(jī)設(shè)備):把多個(gè)字符打包成一個(gè)單位進(jìn)行的,如硬盤
/etc: Host-specific system configuration 主機(jī)特有的系統(tǒng)程序的配置文件,只能為靜態(tài)文件
/home: User home directories(optional) 普通用戶的家目錄的集中位置,層級(jí)結(jié)構(gòu):一般每個(gè)普通用的家目錄默認(rèn)為此目錄下與用戶名同名的子目錄, /home/USERNAME;
/root: Home directory for the root user(optional) 管理員的家目錄,可選;
重要:不要使用管理員登錄
/lib: Essential shared libraries and kernel modules 基礎(chǔ)共享庫(kù)和內(nèi)核模塊
/lib<qual>: Alternate format essential shared libraries (optional) 為系統(tǒng)啟動(dòng)或根文件系統(tǒng)上的應(yīng)用程序(/bin ,/sbin 等)提供共享庫(kù),以及內(nèi)核挺內(nèi)核模塊。(對(duì)32系統(tǒng)可選,64位系統(tǒng)必須的),主要是為 /bin和 /sbin提供共享庫(kù)的
libc.so.*:動(dòng)態(tài)鏈接的C庫(kù)
ld*:運(yùn)行時(shí)連接器/加載器
modules: 用于存儲(chǔ)內(nèi)核模塊的目錄
/lib64: 64位系統(tǒng)特有的存放64位共享庫(kù)的路徑
/media: Mount point for removeable media 便攜性設(shè)備掛載點(diǎn)
/mnt:Mount point for a temorarily mounted filesystem 其他文件系統(tǒng)的臨時(shí)掛載點(diǎn)
/opt: Add-on application softeware packages 附加應(yīng)用程序(第三方應(yīng)用程序)的安裝位置,可選路徑 如:oracle, stack,
/srv: Data for services provided by this system 當(dāng)前主機(jī)為服務(wù)提供的數(shù)據(jù)
/tmp: Temporary files 臨時(shí)文件目錄,可供所有用戶執(zhí)行寫入操作,有特殊權(quán)限
/usr: usr Hierarchy 全局共享的只讀數(shù)據(jù)路徑,除了根以外第二重要的
bin, sbin
lib, lib64
include: C程序頭文件
share:架構(gòu)特有的文件的存放位置,命令手冊(cè)頁(yè)和命令自帶文檔等
local:另一個(gè)層級(jí)目錄
X11R6:X-Window程序的存放位置
src:程序源碼文件的存儲(chǔ)位置
/usr/local: Local hierarchy 真正用來(lái)存儲(chǔ)第三方程序的,讓系統(tǒng)管理員安裝本地應(yīng)用程序
/var: var Hierarchy 存儲(chǔ)經(jīng)常發(fā)生變化的數(shù)據(jù)的目錄,如日志
cache
lib:程序的狀態(tài)數(shù)據(jù)
local:
lock
opt
run
spool
/tmp:系統(tǒng)重啟后依然需要留存的數(shù)據(jù)
/proc: Kernel and process information virtual filesystem 基于內(nèi)存的虛擬文件系統(tǒng)。為內(nèi)核及進(jìn)程存儲(chǔ)其相關(guān)信息的,它們?yōu)閮?nèi)核參數(shù),如:net.ipv4.ip_forward,虛擬為net/ipv4/ip_forward,存儲(chǔ)于/proc/sys/,因此其完整路徑為 /proc/sys/net/ipv4/ip_forwrad
/sys:sysfs虛擬文件系統(tǒng)提供了一種比proc更為理想的訪問(wèn)內(nèi)核數(shù)據(jù)的途徑,其主要作用在于為管理Linux設(shè)備提供一種統(tǒng)一的模型的接口
今天就到這里了,真不容易啊,這篇博客我寫了一天的時(shí)間,忘記保存真的是一個(gè)教訓(xùn)。下次再會(huì)!