馬哥教育網絡班N22期+第1周課程練習
1.計算機的組成及其功能
1.1 計算機的組成
根據馮·諾依曼體系結構,將計算機分為五個主要的部件:
-
CPU:運算器
-
CPU:控制器
-
RAM:存儲器
-
Input:輸入設備
-
Output: 輸出設備
其功能分別為:
-
運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。
-
控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。并將數據遞交給運算器進行計算。
-
存儲器(Memory):存儲器的功能是存儲程序、數據和各種信號、命令等信息,并在需要時提供這些信息。
-
輸入設備(Input):輸入設備的作用是將程序、原始數據、文字、字符、控制命令或現場采集的數據等信息輸入到計算機。常見的輸入設備有鍵盤、鼠標器、光電輸入機、磁帶機、磁盤機、光盤機等。
-
輸出(Output system):它把外算機的中間結果或最后結果、機內的各種數據符號及文字或各種控制信號等信息輸出出來。微機常用的輸出設備有顯示終端CRT、打印機、激光印字機、繪圖儀及磁帶、光盤機等。
2.Linux的發行版
2.1 什么是linux發行版(linux distribution)
linux發行版就是:眾多商業或非營利性的團體,根據不同的版本的“linux kernel+software+Tools”打包集成在一起可完全安裝的系統。
2.2 linux主流發行版簡介
linux發行版本眾多,但根據主流發行版軟件包的安裝方式的不同(RPM軟件包管理器、dpkg軟件包管理器)大體可分為兩大陣營。
-
采用dpkg軟件包管理器的Debian、Ubuntu等,其中Ubuntu是Debian發展出的一支擁有相對比較絢麗的用戶界面linux發行版。
-
采用rpm軟件包管理器的比較主流的Redhat、CentOS及Slackware系列。
(1)Redhat發行版在發展到Redhat 9.0之后,于2004年開辟了兩條產品線: 一是:Red Hat Enterprise Linux(以下稱之為RHEL);二是Fedora,由其替代了Red Hat9以后的發行版。
區別與聯系:RHEL及Fedora都免費供使用,但RHEL面向企業用戶,產品更穩定,同時也面向企業提供有償服務,如:升級安全補丁、技術支持等。而Fedora面向普通用戶,更新周期為6個月左右。
(2)CentOS發行版:是將Red Hat Enterprise Linux的源代碼重新編譯而成的發行版,因為RHEL也遵守GPL協定,因此屬于合法(為避免版權去除Red Hat商標,命名為CentOS)。CentOS組織與2014年正式被Red Hat公司收購。
(3)Slackware也是一支開發歷史比較悠久的發行版,由它向后延伸的發行版還有很多,旗下比較知名的發行版分支有S.u.S.E、openSUSE等。此發行版在歐美國家比較流行。
3.Liunx哲學思想概述
-
一切皆文件
把幾乎所有資源統一抽象為文件的形式:包括硬件設備,甚至通信接口等 例如:/dev/tty1
-
由眾多功能單一的小程序組成,并可通過組合來完成復雜任務。
-
盡量避免跟用戶進行交互
-
使用文本文件保存配置信息
網卡的配置文件位于:/etc/sysconfig/network-scripts/ifcfg-eth0
4. linux的命令使用格式
4.1 linux命令通用格式:
COMMAND OPTION ARGUMENTS | 命令 -選項 參數
OPTION | 選項 :
? OPTION的幾種狀態:
<>:必選 []:可選 …:同類內容可以出現多次 |:多選一 {}:分組''
? 短選項:
示例:#ls -la
注意:有些命令的選項沒有-
同一命令同時使用多個短選項,多數可合并;
? 長選項:
示例:# lvcreate --help
(注:長選項不能合并)
注意:有些選項可以帶參數,此稱為:選項參數
ARGUMENTS | 參數 :
此參數為命令的作用對象:
有些命令可同時帶多個參數,多個參數間以空白字符分隔
示例:# ls -la /etc /var
4.2 linux常用命令詳解:
4.2.1 echo命令
echo :顯示一行文本 display a line of text 用法: echo [SHORT-OPTION]... [STRING]... SHORT-OPTION -n 不輸出末尾的換行符。 -e 啟用反斜線轉義功能。 \f 換頁 \n 新行 \r 回車 \t 水平制表 \v 垂直制表 -E 禁用解釋反斜杠的轉義功能(默認)
示例:
-
顯示輸出變量的值
[root@Red ~]# name="hello" [root@Red ~]# echo $name hello
2.輸出末尾不換行顯示
[root@Red ~]# echo -n $name hello[root@Red ~]#
3.啟用反斜線轉移功能
[root@Red ~]# echo -e "\n$name" hello [root@Red ~]# echo -e "$name \fworld" hello world
4.強引用' '和弱引用" "
[root@Red ~]# echo '$name world' $name world [root@Red ~]# echo "$name world" hello world
區別:使用強引用時,不能完成變量替換。弱引用則可以完成變量替換
5.輸出字體顏色
echo命令可以修改字體類型,字體背景色以及字體顏色,轉義序列033可以用于改變字體屬性。要使轉義序列生效,必須使用-e選項。下面列出了部分轉義代碼:
echo -e "\033[##mhello\033[0m"
左側#:3表示前景色,4表示背景色 右側#:表示顏色種類,數字從1~7
[0m: 正常] [1m: 粗體 [4m: 字體加上下劃線 [7m: 逆轉前景和背景色 [8m: 不可見字符 [9m: 跨行字體 [30m: 灰色字體 [31m: 紅色字體 [32m: 綠色字體 [33m: 棕色字體 [34m: 藍色字體 [35m: 紫色字體 [36m: 淺藍色字體 [37m: 淺灰字體 [38m: 黑色字體 [40m: 黑色背景 [41m: 紅色背景 [42m: 綠色背景 [43m: 棕色背景 [44m: 藍色背景 [45m: 紫色背景 [46m: 淺藍色背景 [47m: 淺灰色背景
4.2.2 tty命令及startx命令
startx命令:在虛擬終端中可以啟動圖形終端
使用startx命令激活的虛擬終端號:
CentOS 6中:
Ctrl+Alt+F7
CentOS 7中:
在哪個虛擬終端啟動,既位于哪個虛擬終端
tty 命令:顯示當前終端類型
[root@Red ~]# tty /dev/pts/3
linux的終端類型:
-
console:物理終端,控制臺
-
pty:物理終端(VGA)
-
tty:虛擬控制臺(虛擬終端)(VGA)
-
ttys:串行終端
-
pts/#:偽終端
4.2.3 export命令
export命令:用于設置或顯示系統的環境變量。
在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及于該次登陸操作。
語法:
export [-fnp][變量名稱]=[變量設置值]
參數說明:
-f 代表[變量名稱]中為函數名稱。 -n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。 -p 列出所有的shell賦予程序的環境變量。
示例:
export PATH="$PATH:/root"
4.2.4 pwd、history命令
pwd命令:以絕對路徑的方式顯示用戶當前所在目錄
[root@Red sysconfig]# pwd /etc/sysconfig
history:用于查看指定數目的指令命令
語法:
history [option] [argument]
選項:
-c:清空當前歷史命令 -a:將歷史命令緩沖區中的命令寫入歷史命令文件中 -r:將歷史命令文件中的命令讀入當前歷史命令緩沖區 -w:將當前歷史命令緩沖區寫入歷史命令文件中
參數:
n:指定打印最近的n條歷史命令
4.2.5 ifconfig命令
ifconfig命令:被用于配置和顯示Linux內核中網絡接口的網絡參數。
注意:用ifconfig命令配置的網卡信息,在網卡重啟后機器重啟后,配置就不存在。要想將上述的配置信息永遠的存的電腦里,那就要修改網卡的配置文件了。
語法:
ifconfig interface [option]
==>設定與修改接口
ifconfig interface {up | down}
==>關閉和啟動接口服務
參數:
add<地址>:設置網絡設備IPv6的ip地址; del<地址>:刪除網絡設備IPv6的IP地址; down:關閉指定的網絡設備; <hw<網絡設備類型><硬件地址>:設置網絡設備的類型與硬件地址; io_addr<I/O地址>:設置網絡設備的I/O地址; irq<IRQ地址>:設置網絡設備的IRQ; mtu<字節>:設置網絡設備的MTU; netmask<子網掩碼>:設置網絡設備的子網掩碼; up:啟動指定的網絡設備;
示例1:查看當前已激活的網絡設備信息
[root@Red Hat]# ifconfig eth0 Link encap:Ethernet HWaddr 00:1C:42:F8:DC:2D inet addr:10.211.55.32 Bcast:10.211.55.255 Mask:255.255.255.0 inet6 addr: fdb2:2c26:f4e4:0:21c:42ff:fef8:dc2d/64 Scope:Global inet6 addr: fe80::21c:42ff:fef8:dc2d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2361 errors:0 dropped:0 overruns:0 frame:0 TX packets:1300 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:256637 (250.6 KiB) TX bytes:198077 (193.4 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:140 errors:0 dropped:0 overruns:0 frame:0 TX packets:140 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:12286 (11.9 KiB) TX bytes:12286 (11.9 KiB)
說明:eth0表示第一塊網卡,其中HWaddr表示網卡的物理地址,可以看到目前這個網卡的物理地址(MAC地址)是00:16:3E:00:1E:51
inet addr用來表示網卡的IP地址,此網卡的IP地址是10.160.7.81,廣播地址Bcast:10.160.15.255,掩碼地址Mask:255.255.240.0。
lo是表示主機的回壞地址,這個一般是用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,只能在此臺主機上運行和查看所用的網絡接口。比如把 httpd服務器的指定到回壞地址,在瀏覽器輸入127.0.0.1就能看到你所架WEB網站了。但只是您能看得到,局域網的其它主機或用戶無從知道。
第一行:連接類型:Ethernet(以太網)HWaddr(硬件mac地址)。
第二行:網卡的IP地址、子網、掩碼。
第三行:UP(代表網卡開啟狀態)RUNNING(代表網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500字節。
第四、五行:接收、發送數據包情況統計。
第七行:接收、發送數據字節數統計信息。
示例2:啟動關閉指定網卡
ifconfig eth0 up ifconfig eth0 down
示例3:用ifconfig修改MAC地址
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE
示例4:配置IP地址:
[root@localhost ~]# ifconfig eth0 192.168.2.10 [root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 [root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
4.2.6 系統關機重啟命令
shutdown命令
語法:
shutdown [OPTION]... TIME [MESSAGE] option: -t <sec> :指定多少秒關機 -k:發送警告信息,不真正關機 -r:系統的服務關閉后執行重啟操作(常用) -h:將系統服務關閉后立即關機 -n:不調用init程序進行關機,直接以shutdown功能關機 -f:重新啟動時不執行fsck -F:重新啟動時執行fsck TIME: 此參數不能缺少,否則會進入init1的單用戶模式,而不關閉電源 now: 立即關機 +m:等待m分鐘后關機 hh:mm :指定具體時間關機
示例:
shutdown -h now #立即關機 shutdown +5 "system will shutdown after 5minutes" #向用戶發送警告信息
poweroff命令
語法:
poweroff [option]
選項:
-n:關閉操作系統時不執行sync操作 -w:不真正關閉操作系統,僅在日志文件/var/log/wtmp中 -d:關閉操作系統時,不將操作寫入日志文件 -f:強制關閉操作系統 -i:關閉操作系統之前關閉所有的網絡接口 -h:關閉操作系統之前將系統中所有的硬件設備為備用模式
reboot命令:用來重啟linux系統
語法
reboot [option]
選項:
-d:重新開機時,不把數據寫入記錄文件/var/log/wtmp -f:強制重新開機,不調用shutdown功能 -i:在重新開機之前,先關閉所有網絡界面 -n:重開機之前不檢查是否有未結束的程序 -w: 僅做測試,并不真正將系統重新開機,只會把重開機的數據寫入日志文件中/var/log/wtmp
hwclock命令:是一個硬件時鐘訪問命令,它可以顯示當前時間、設置硬件時鐘的時間和設置硬件時鐘為系統時間,也可設置系統時間為硬件時鐘時間
相關知識:Liunx系統中有兩種時鐘:系統時鐘、硬件時鐘。硬件時鐘是指主板上的時鐘設備。系統時鐘則是指kernel中的時鐘。
語法:
hwclock [option]
選項:
-r:查看時間(可忽略) -s, --hctosys : 獲取硬件時間設置系統時間 -w, --systohc :獲取系統時間設置硬件時間
date命令:顯示或設置系統時間與日期
語法:
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
選項:
-d<STRING>:顯示字符串所指的日期與時間,字符串必須加上雙引號 #STRING是比較隨性的可讀的字符串,比如說“2012-06-16 18:31:00”或者“next Thursday”,這個字符串通常包含日歷時間、時間、星期、日期、相對時間,相對日期或者數字。 -s<STRING>:根據字符串來設置時間與日期,字符串前后必須加上雙引號 -r, --reference=FILE:顯示文件FILE最后修改的時間 -u, --utc, --universal:顯示輸出UTC時間
+格式:
%H 小時,24小時制(00~23) %I 小時,12小時制(01~12) %k 小時,24小時制(0~23) %l 小時,12小時制(1~12) %M 分鐘(00~59) %p 顯示出AM或PM %r 顯示時間,12小時制(hh:mm:ss %p) %s 從1970年1月1日00:00:00到目前經歷的秒數 %S 顯示秒(00~59) %T 顯示時間,24小時制(hh:mm:ss) %X 顯示時間的格式(%H:%M:%S) %Z 顯示時區,日期域(CST) %a 星期的簡稱(Sun~Sat) %A 星期的全稱(Sunday~Saturday) %h,%b 月的簡稱(Jan~Dec) %B 月的全稱(January~December) %c 日期和時間(Tue Nov 20 14:12:58 2012) %d 一個月的第幾天(01~31) %x,%D 日期(mm/dd/yy) %j 一年的第幾天(001~366) %m 月份(01~12) %w 一個星期的第幾天(0代表星期天) %W 一年的第幾個星期(00~53,星期一為第一天) %y 年的最后兩個數字(1999則是99) %Y 年數
示例:1
[root@Red ~]# date +%Y.%m.%d 2016.08.12 ''[root@Red ~]#date -d "-1 day" +%Y%m%d //顯示前一天的日期 20160811 [root@Red ~]#date -d "-1 month" +%Y%m%d //顯示上一月的日期 20160712
示例2:輸出昨天的日期
[root@Red ~]# date -d "1 day ago" +%Y-%m-%d 2016-08-11
示例3:2秒后輸出:
[root@Red ~]# date -d "2 second" +"%Y-%m-%d %H:%M.%S" 2016-08-12 14:24.25
示例4:設定時間
date -s "2012-05-23 01:01:01" //這樣可以設置全部時間
5. Linux系統上獲取命令使用幫助的方法
5.1 獲取命令使用幫助的方法
Linux命令分為內置命令和外部命令兩類。
內置命令獲取幫助的方式:
help COMMAND
外部命令:
(1)命令自帶簡要格式的使用幫助
COMMAND - -help
(2)參看該命令的幫助手冊manual
? 手冊存放路徑:/usr/share/man
? 查看方式:man COMMAND
(3)info COMMAND:獲取命令在線文檔,顯示命令的詳細歷史
(4)很多應用程序會自帶幫助文件:
? 文檔路徑:/usr/share/doc/APP-VERSION
? README:程序的相關信息
? INSTALL:安裝幫助
? CHANGES:版本迭代的情況
(5)主流發行版官方文檔
? 例如:http://www.redhat.com/doc
(6)程序官方的文檔
? 官方站點上的“Document”
5.2 MAN手冊內容格式說明
MAN命令內容格式說明:
SECTION:
? NAME:命令名稱及功能簡要說明
? SYNOPSIS:語法格式,命令功能的詳盡說明
? DESCRIPTION:命令功能的詳盡說明,盡可能包括每一個選項的意義
? OPTIONS:選項
? Examples:使用示例
5.3 man文檔的不同章節
使用手冊:壓縮格式的文件,分有不同章節;文件放置路徑:
/usr/share/man/man1 ,man2….
man文檔的章節劃分:
? 1:用戶命令(/bin,/user/bin,/user/local/bin)
? 2:系統調用
? 3:C庫調用
? 4:特殊文件及設備文件
? 5:文件格式(配置文件格式)
? 6:游戲使用幫助
? 7:雜項(miscellaneous)
? 8:管理工具及守護進程(/sbin,/usr/sbin,/usr/local/sbin)
查看不同章節的幫助手冊:
? man # COMMAND ;#為章節數
? 注意:并非每個COMMAND在所有的章節下都有幫助手冊
查看命令章節數:whatis COMMAND
注意:其執行過程是查詢數據庫進行的;
可采取手動更新數據庫的方式:makewhatis
5.4 MAN手冊查看方式
? 向后翻一屏:SPACE
? 向前翻一屏:b
? 向后翻一行:ENTER
? 向前翻一行:k
? 向下翻半屏:ctrl+d
? 向上翻半屏:ctrl+u
? 跳轉至最后一行:G
? 跳轉至文件首部:1G
? 跳轉指定行:#G
? 退出:q
指定位置查看man文檔:
man -M /path
關鍵詞查找功能
/keyword:向后查詢
? n:下一個
? N:前一個
?keyword:向前查詢
? n:下一個
? N:前一個
6. Linux發行版的文件系統
在Linux系統中,所有的文件與目錄都是由根目錄開始的!然后再一個一個的分支下來,類似倒置的樹狀圖.因此,我們也稱這種目錄配置方式為:『目錄樹(directory tree)』。?
如果我們將整個目錄樹以圖的方法來顯示,并且將較為重要的文件數據列出來的話,那么目錄樹架構就如下圖所示:


目錄文件夾解析:
/bin目錄:
用來存放系統命令等可執行的二進制程序文件的文件夾。在/bin底下的指令可以被root與一般帳號所使用,主要有:cat,chmod(修改權限), chown, date, mv, mkdir, cp, bash等等常用的指令。
/boot目錄:
用來存放linux系統啟動時,需要加載的文檔。包括Linux kernel以及grub菜單及設置文件等。Linux kernel常用的檔名為:vmlinuz-release ,如果使用的是grub這個開機管理程式,則還會存在/boot/grub/這個目錄。
/dev目錄:
在Linux系統上一起皆文件,因此linux主機上的任何設備文件都存放在這個目錄當中。比要重要的文件有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*
等等
/etc目錄:
系統主要的配置文檔存放目錄。例如人員的帳號密碼文檔(/etc/passwd、/etc/group)、及各種服務的啟始文件(/etc/init.d/)等等。
/home目錄:
這是系統預設的使用者家目錄(home directory)。 在你新增一個一般使用者帳號時,預設的使用者家目錄都會規范到這里來。比較重要的是,家目錄有兩種代號: ~ :代表當前使用者的家目錄
, 而 ~guest:則代表用戶名為guest的家目錄
。
/lib目錄:
存放系統中可被調用各類可調用的庫文件,其中尤其重要的是/lib/modules/這個目錄,因為該目錄會放置的內核模塊文件。
/media目錄:
這個/media底下放置的就是可移除的移動設備。 包括軟碟、光碟、DVD等等裝置都暫時掛載于此。 常見的檔名有:/media/floppy, /media/cdrom等等。
/mnt目錄:
為額外設備提供一個臨時文件掛載點。
/opt目錄:
這個是可選目錄,用來給第三方程序安裝提供的目錄 。 不過,以前的Linux系統中,還是習慣放置在/usr/local目錄下。
/root目錄 :
系統管理員(root)的家目錄。 之所以放在這里,是因為如果進入單人維護模式而僅掛載根目錄時,該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分區中。
/sbin目錄:
/sbin目錄存放的都是涉及系統管理的命令,里面包括了開機、修復、還原系統所需要的指令,僅有root用戶有權限使用。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。至于本機自行安裝的軟件所產生的二進制可執行文件(system binary),則放置到/usr/local/sbin/當中了。
/srv目錄:
srv可以視為service的縮寫,是一些網路服務啟動之后,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。
/tmp目錄:
用來存放臨時文件的目錄。
/proc目錄:
這個目錄本身是一個偽文件系統(virtual filesystem)。 他存放的資料都是系統啟動以后內存當中的內核所加載設備信息及系統狀態的映射文件,例如系統核心、進程(process)、設備狀態及網絡狀態等等。因為這個目錄下的資料都是在內存當中,所以本身不占任何硬盤空間。比較重要的目錄。例如: /proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net等等。
/sys目錄:
這個目錄其實跟/proc非常類似,也是一個偽文件系統,主要也是記錄與內核相關的信息。 包括目前已載入的內核模塊信息與內核偵測到的硬體設備信息等等。 這個目錄同樣不占硬盤容量。
原創文章,作者:N22-武漢-enfp,如若轉載,請注明出處:http://www.www58058.com/33795
寫的很好,排版也很棒,加油,圖是自己畫的嗎?