N26-第一周作業-邢巖
馬哥門徒-N26-邢巖
悲催了! 首次使用這個博客,居然連續未保存刪除了兩次,這可是我用了四個小時才寫好的啊!瞬間藍瘦香菇了!感覺就像是Linux中使用了rm -rf / 一樣。
還是重新開始寫吧,第一次接觸Linux是在8年之前了,當時弄到了一張紅帽的光盤,可是怎么也裝不上系統,就放棄了。現在又來學習Linux,想起來還真是有緣。那我就從計算機的組成和功能談起吧。
計算機的基本硬件系統由運算器、控制器、寄存器、輸入設備和輸出設備5大部件組成。
1.CPU:Central Processing Unit, 是硬件系統的核心,用于數據的加工處理,能完成各種算術、邏輯運算及控制功能。CPU主要由運算器、控制器、寄存器和內部總線等部件組成。
CPU的功能:程序控制、操作控制、時間控制和數據處理。
運算器:由算術邏輯單元(ALU)、累加寄存器(AC)、數據緩沖寄存器(DR)和狀態條件寄存器(PSW)組成,它是數據加工處理部件,完成計算機的各種算術運算和邏輯運算。
控制器:包括指令控制邏輯、時序控制邏輯、總線控制邏輯和中斷控制邏輯等幾個部分。用于控制整個CPU的工作,它決定了計算器運行過程的自動化。
2. 寄存器:可以分為專用寄存器和通用寄存器。
3. 輸入設備:用于輸入原始數據及各種命令。
4.輸出設備:用于輸出計算機運行的結果。
接下來,我來按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別(根據GNU/Linux Distribution Timeline)
1.Debian: 是完全由自由軟件組成的類UNIX操作系統,其包含的多數軟件使用GNU通用公共許可協議授權,并由Debian計劃的參與者組成團隊對其進行打包、開發與維護。
-
Knoppix:是一套光盤或USBU盤啟動的GNU/Linux系統(LiveCD),功能包括:自動硬件監測、支持常見的顯卡、聲卡、SCSI和USB設備,以及其它外設。KNOPPIX可用于Linux演示、光盤教學、系統急救,經過適當改造,還可以用于商業軟件的產品演示。KNOPPIX采用了特殊的解壓縮技術,不需要硬盤安裝,一張CD,就容納了2GB的可執行程序,供用戶自由使用。
-
Ubuntu:Ubuntu是基于Debian發行版和GNOME桌面環境,與Debian的不同在于它每6個月會發布一個新版本(即每年的四月與十月),每2年發布一個LTS長期支持版本。Ubuntu的目標在于為一般用戶提供一個最新同時又相當穩定,主要以自由軟件建構而成的操作系統。Ubuntu目前具有龐大的社區力量支持,用戶可以方便地從社區獲得幫助。
-
Linux Mint:是一種基于Ubuntu/Debian的Linux操作系統。由Linux Mint Team團隊于2006年開始發行。Linux Mint的目標是為家庭用戶和企業客戶提供一個免費、高效、易用、高雅的桌面操作系統。Linux Mint是對用戶友好而功能強大的操作系統。Linux Mint的理想之一,以簡單的方式呈現先進技術給用戶,以此來成為最優秀的操作系統。這種簡單方式的實現,不是通過簡化結構與機能而削減功能,也不是通過抄襲其它開發者的實現方法。
2.Slackware: 是Slackware Linux, Inc的Patrick Volkerding制作的Linux發行版本。Slackware走了一條與其他的發行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力圖成為“UNIX風格”的Linux發行版本。它的方針是只吸收穩定版本的應用程序,并且缺少其他Linux版本中那些為發行版本定制的配置工具。
-
S.u.S.E:簡寫“SuSE”,于1992年末創辦,目的是成為UNIX技術公司,專門制為德國人推出量身訂作的SLS/Slackware軟件及UNIX/Linux幫助文檔。
-
SLAS:由捷克人Tomá? Matějí?ek研發,是一個基于Slackware和KDE桌面環境的操作系統。 Slax是一個便捷、便攜的Linux操作系統。它的界面既充滿時尚感,又可基于不同模塊的功能運作。它的界面富有時尚感,并集成了不同的模塊的界面。盡管它的容量十分嬌小,Slax依然預載了不少日常應用的軟件。除此之外,它還擁有精簡而齊整的圖形用戶界面和一些有用的修復工具,方便系統管理員修復系統。
-
openSUSE:openSUSE在全世界,尤其是在德國被廣泛使用。它的開發重心是為軟件開發者和系統管理者創造適用的開放源代碼的工具,并提供易于使用的桌面環境和功能豐富的服務器環境。openSUSE針對桌面環境進行了一系列的優化,對Linux新手較為友好。
3.RedHat: Red Hat Linux是由Red Hat公司發行的一個Linux發行包。
-
Fedora Core:是較具知名度的Linux發行包之一,由Fedora項目社區開發、紅帽公司贊助,目標是創建一套新穎、多功能并且自由(開放源代碼)的操作系統。Fedora對于用戶而言,是一套功能完備、更新快速的免費操作系統;而對贊助者Red Hat公司而言,它是許多新技術的測試平臺,被認為可用的技術最終會加入到Red Hat Enterprise Linux中。
-
Red Hat Enterprise:(RHEL)是一個由 Red Hat 開發的商業市場導向的 Linux 發行版。
-
CentOS:是Linux發行版之一,它是來自于Red Hat Enterprise Linux依照開放源代碼規定發布的源代碼所編譯而成。由于出自同樣的源代碼,因此有些要求高度穩定性的服務器以CentOS替代商業版的Red Hat Enterprise Linux使用。兩者的不同,在于CentOS并不包含封閉源代碼軟件。CentOS 對上游代碼的主要修改是為了移除不能自由使用的商標。
4.Gentoo:基于Portage包管理系統,而擁有幾乎無限制的適應性特性,被官方稱作元發行版(meta-distribution),支持多達10種以上的電腦系統結構平臺。此項目和它的產品以巴布亞企鵝命名。Gentoo包管理系統的設計是模塊化、可移植、易維護、靈活以及針對用戶機器優化的。軟件包從源代碼構建,這延續了ports的傳統。但是為了方便,也提供一些大型軟件包在多種架構的預編譯二進制文件,用戶亦可自建或使用第三方二進制包鏡像來直接安裝二進制包。
5.ArchLinux:是朝向輕量(lightweight)以及簡單(simple)的Linux發行版。其中“簡單”(Simplicity)被定義為“避免不必要或復雜的修改”,也就是說,是由開發者角度定義,而非用戶角度思考。Arch Linux是由二進制軟件包組成的,這些軟件包會針對i686及x86-64優化以配合目前的硬件。
Linux的版本還是很多的,看起來眼花繚亂的。以后要不斷的嘗試才行。接下來,我來描述Linux的哲學思想,并按照自己的理解對其進行解釋。
1.一切皆文件,把幾乎所有資源統統抽象為文件形式,包括硬件設備,甚至通信接口等。表現之一:硬件設備也通過文件表示。如:open(), read(), write(), close(), delete(), create()。這就好像是小時候玩的積木一樣,一切都是積木組成的,可以撘成我想要的任何形狀,還可以用來計算。
物理終端:/dev/console
虛擬終端:/dev/tty# [1-6]
串行終端:/dev/ttyS#
偽終端:/dev/pts/#
查看終端設備: tty
查看接口程序: echo #SHELL
查看所用的shell類型: echo $SHELL
2.由眾多功能單一的程序組成:一個程序只做一件事,并且做好,需要組合小程序完成復雜任務。這很像我們人類的組織,領導安排任務給每一個員工,員工各司其職,只要做好分內的事情就可以了。
3.程序啟動后盡量避免跟用戶交互。目標:易于以編程的方式實現自動化任務。這也就如員工做好自己的工作,避免去打擾其他人一樣。
4.使用文本文件保存配置信息。我覺得,之所以用文本文件,是由于文本占用的內存最低,最節省磁盤空間。
看來Linux的思維與我們還是一樣的,那么,我就來說明一下Linux系統上命令的使用格式,并詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
1.ifconfig:配置網絡接口
2. echo:回顯
常見用法:
-
-n:不進行換行
-
-e:讓轉義字符生效
1)echo string 可以使用引號,
單引號:強引用,變量引用不執行替換。
雙引號:弱引用,變量引用會被替換。
2)echo命令用于在shell中打印shell變量的值。
3.tty:顯示當前終端
4.startx:啟動GUI界面
5.export:設置或顯示環境變量
6.pwd:以絕對路徑的方式顯示用戶當前工作目錄。
7.history:顯示歷史指令記錄內容
命令用法:
-c: 清空命令歷史
-d offset: 刪除指定歷史命令
-r:從文件讀取命令歷史至歷史列表中
-w:把歷史列表中的命令追加至歷史文件中
history #:顯示最近的#條命令
調用命令歷史列表中的命令
!#: 再一次執行歷史列表中的第#條命令
!!: 再一次執行上一天命令
!STRING: 再一次執行命令歷史列表中最近一個以STRING開頭的命令
8.shutdown:系統關機命令
命令用法:
-r 關閉系統然后重新啟動,類似于Windows平臺restart
-k 模擬關機(不是真的關機),只是向登錄者發送警告信息
-h 關機后關閉電源〔halt〕。
-n 不用init﹐而是自己來關機。不鼓勵使用這個選項﹐而且該選項所產生的后果往往不總是你所預期得到的。
-c 取消目前正在執行的關機程序。這個選項沒有時間參數﹐但是可以發送一個訊息給每位使用者。
-f 快速關機重啟動時跳過fsck。
now
hh:mm
+m
+0 現在
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點0分0秒到執行命令那一刻經過的秒數
~]# date +"%F %T"
設定日期時間:date [MMDDhhmm[[CC]YY][.ss]]
~]# date 010211122017.30
這些命令還是要好好記住的。冰凍三尺非一日之寒,重要的事情說三遍:練習、練習、練習。然后,我來看看如何在Linux系統上獲取命令的幫助信息,詳細列出,并描述man文檔的章節是如何劃分的。
命令分為兩類,可以使用type COMMAND查看命令類型。
內建命令:由shell程序自帶的命令(builtin)。
外部命令:獨立的可執行程序文件,文件名即命令名。
1.內建命令使用:help COMMAND
2.外部命令使用:
1)命令自帶簡要格式的使用幫助:COMMAND –help
2)使用幫助手冊(manual):man COMMAND
3)info COMMAND:獲取命令的在線文檔
4)很多應用程序會自帶幫助文檔:/usr/share/doc/APP-VERSION
README:程序的相關信息
INSTALL:安裝幫助
CHANGES:版本迭代時改動信息
5)主流發行版版官方文檔
6)搜索引擎
使用手冊:壓縮格式的文件,有章節之分。在目錄/usr/share/man中,分為man1-man8
man1:用戶命令,普通用戶和管理員都可以使用
man2:系統調用
man3:C庫調用
man4:設備文件及特殊文件
man5:文件格式:配置文件格式
man6:游戲使用幫助
man7:雜項
man8:管理工具及守護進程
使用:man CHAPTER COMMAND
注意:
1.并非每個COMMAND在所有章節下都有手冊
2.通過~]#whatis COMMAND查看命令在哪些章節存在
3.whatis執行過程是查詢數據庫進行的,如果有新命令加入需要手動更新數據庫:~]#makewhatis
man命令的幫助用起來還是很不錯的,最后,我再來羅列Linux發行版的基礎目錄名稱、命名法則及功用規定。
Linux的FHS(Filesystem Hierarchy Standard,文件系統層級標準):Linux的標準規范
Linux文件系統以'/'為原初起點形成樹狀結構
/bin : Essential user command binaries(for use by all users)供所有用戶使用的基本的用戶命令程序文件
/sbin: System binaries 系統的二進制命令程序
/boot: Static files of the boot loader 引導加載器必須用到的各靜態文件:kernel,initramfs(initrd),grub等;
/dev: Device files 存儲特殊文件或設備文件
設備有兩種類型:字符設備和塊設備
字符設備(線性設備):數據交換是以字符為基本單位進行的,如早期顯示器,鍵盤
塊設備(隨機設備):把多個字符打包成一個單位進行的,如硬盤
/etc: Host-specific system configuration 主機特有的系統程序的配置文件,只能為靜態文件
/home: User home directories(optional) 普通用戶的家目錄的集中位置,層級結構:一般每個普通用的家目錄默認為此目錄下與用戶名同名的子目錄, /home/USERNAME;
/root: Home directory for the root user(optional) 管理員的家目錄,可選;
重要:不要使用管理員登錄
/lib: Essential shared libraries and kernel modules 基礎共享庫和內核模塊
/lib<qual>: Alternate format essential shared libraries (optional) 為系統啟動或根文件系統上的應用程序(/bin ,/sbin 等)提供共享庫,以及內核挺內核模塊。(對32系統可選,64位系統必須的),主要是為 /bin和 /sbin提供共享庫的
libc.so.*:動態鏈接的C庫
ld*:運行時連接器/加載器
modules: 用于存儲內核模塊的目錄
/lib64: 64位系統特有的存放64位共享庫的路徑
/media: Mount point for removeable media 便攜性設備掛載點
/mnt:Mount point for a temorarily mounted filesystem 其他文件系統的臨時掛載點
/opt: Add-on application softeware packages 附加應用程序(第三方應用程序)的安裝位置,可選路徑 如:oracle, stack,
/srv: Data for services provided by this system 當前主機為服務提供的數據
/tmp: Temporary files 臨時文件目錄,可供所有用戶執行寫入操作,有特殊權限
/usr: usr Hierarchy 全局共享的只讀數據路徑,除了根以外第二重要的
bin, sbin
lib, lib64
include: C程序頭文件
share:架構特有的文件的存放位置,命令手冊頁和命令自帶文檔等
local:另一個層級目錄
X11R6:X-Window程序的存放位置
src:程序源碼文件的存儲位置
/usr/local: Local hierarchy 真正用來存儲第三方程序的,讓系統管理員安裝本地應用程序
/var: var Hierarchy 存儲經常發生變化的數據的目錄,如日志
cache
lib:程序的狀態數據
local:
lock
opt
run
spool
/tmp:系統重啟后依然需要留存的數據
/proc: Kernel and process information virtual filesystem 基于內存的虛擬文件系統。為內核及進程存儲其相關信息的,它們為內核參數,如:net.ipv4.ip_forward,虛擬為net/ipv4/ip_forward,存儲于/proc/sys/,因此其完整路徑為 /proc/sys/net/ipv4/ip_forwrad
/sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑,其主要作用在于為管理Linux設備提供一種統一的模型的接口
今天就到這里了,真不容易啊,這篇博客我寫了一天的時間,忘記保存真的是一個教訓。下次再會!