天天看點

Linux成長之路-基礎篇(1)

一、計算機組成及功能

1、計算機的組成

計算機組成指的是系統結構的邏輯實作,包括機器機内的資料流和控制流的 組成及邏輯設計等。

主要分為五個部分:控制器,運算器,存儲器,輸入裝置,輸出裝置。

2、各組成部分的功能

(1)運算器:運算器的主要功能是對資料進行各種運算。這些運算除了正常的加、減、乘、除等基本的算術運算之外,還包括能進行“邏輯判斷”的邏輯處理能力,即“與”、“或”、“非”這樣的基本邏輯運算以及資料的比較、移位等操作。

(2)控制器:由程式計數器、指令寄存器、指令譯碼器、時序産生器和操作控制器組成,它是釋出指令的“決策機構”,即完成協調和指揮整個計算機系統的操作。

(3)存儲器:存儲器分為記憶體和外存。記憶體是電腦的記憶部件,用于存放電腦運作中的原始資料、中間結果以及訓示電腦工作的程式。記憶體可以分為随機通路存儲器和隻 讀存儲器,前者允許資料的讀取與寫入,磁盤中的程式必須被調入記憶體後才能運作,中央處理器可直接通路記憶體,與記憶體交換資料。

(4)輸入裝置:輸入裝置是向計算機輸入資料和資訊的裝置。

(5)輸出裝置:是計算機硬體系統的終端裝置,用于接收計算機資料的輸出顯示、列印、聲音、控制外圍裝置操作等。

二、Linux的發行版本與各版本間的聯系和差別

Linux發行版主要有三個分支:Debian、Slackware、Redhat,如圖:

Linux成長之路-基礎篇(1)

1、Debian系列

(1)Debian系列包括Mint和Ubuntu等。Debian是社群類Linux的典範,是迄今為止最遵循GNU規範的Linux系統。Debian最早由Ian Murdock于1993年建立,分為三個版本分支(branch): stable, testing 和 unstable。其中,unstable為最新的測試版本,其中包括最新的軟體包,但是也有相對較多的bug,适合桌面使用者。testing的版本都經 過unstable中的測試,相對較為穩定,也支援了不少新技術(比如SMP等)。而stable一般隻用于伺服器,上面的軟體包大部分都比較過時,但是 穩定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制檔案發行方式中,APT應該是最好的了。Debian的資 料也很豐富,有很多支援的社群,有問題求教也有地方可去:)

1> Ubuntu:基于Debian開發的開源Linux作業系統,主要針對桌面和伺服器;嚴格來說不能算一個獨立的發行版本,Ubuntu是基于Debian的unstable版本加強而來,可以這麼說,Ubuntu就是 一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的 Linux桌面系統。根據選擇的桌面系統不同,有三個版本可供選擇,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特點是界面非常友好,容易上手,對硬體的支援非常全面,是最适合做桌面系統的Linux發行版本。

2> Linux Mint:基于Debian和Ubuntu的Linux發行版,緻力于桌面系統對個人使用者每天的工作更易用,更高效,且目标是提供一種更完整的即刻可用體驗。

2、Slackware系列

是由Patrick Volkerding開發的GNU/Linux發行版。與很多其他的發行版不同,它堅持KISS(Keep It Simple Stupid)的原則,就是說沒有任何配置系統的圖形界面工具。一開始,配置系統會有一些困難,但是更有經驗的使用者會喜歡這種方式的透明性和靈活性。 Slackware Linux的另一個突出的特性也符合KISS原則:Slackware沒有如RPM之類的成熟的軟體包管理器。Slackware的軟體包都是通常的tgz(tar/gzip)格式檔案再加上安裝腳本。Tgz對于有經驗的使用者來說,比RPM更為強大,并避免了RPM之類管理器的依賴性問題。Slackware與其他的發行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力圖成為“UNIX風格”的Linux發行版本。隻吸收穩定版本的應用程式,并且缺少其他linux版本中那些為發行版本定制的配置工具。

1> suse:基于Slackware二次開發的一款Linux,主要用于商業桌面、伺服器。

2> SLES(SUSE Linux Enterprise Server(SLES):企業伺服器作業系統,是唯一與微軟系統相容的Linux作業系統。

3> OpenSUSE:由suse發展而來,旨在推進linux的廣泛使用,主要用于桌面環境,使用者界面非常華麗,而且性能良好。

3、RedHat系列

Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所謂的Redhat Advance Server,收費版本)、Fedora Core(由原來的Redhat桌面版本發展而來,免費版本)、CentOS(RHEL的社群克隆版本,免費)。Redhat應該說是在國内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鳥更是隻用這一個版本的Linux。是以這個版本的特點就是使用人群數量大,資料非常多,言下之意就是如果你有什麼不明白的地方,很容易找到人來問,而且網上的一般Linux教程都是以Redhat為例來講解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分發方式是編譯好的二進制檔案。穩定性方面RHEL和CentOS的穩定性非常好,适合于伺服器使用,但是Fedora Core的穩定性較差,最好隻用于桌面應用。

1> rhel(red hat enterprise Linux):Red Hat公司釋出的面向企業使用者的Linux作業系統。早起版本主要用于桌面環境,免費:

2> Fedora:基于Red Hat Linux終止發行後,紅帽公司計劃以Fedora來取代Red Hat Linux在個人領域的應用,而另外發行的Red Hat Enterprise Linux取代Red Hat Linux在商業應用的領域。Fedora的功能對于使用者而言,它是一套功能完備、更新快速的免費作業系統,而對贊助者Red Hat公司而言,它是許多新技術的測試平台,被認為可用的技術最終會加入到Red Hat Enterprise Linux中。Fedora大約每六個月釋出新版本。

3> Centos:基于Red hat Linux提供的可自由使用源代碼的企業級Linux發行版本。每個版本的Centos都會獲得十年的支援(通過安全更新的方式)。新版本的Centos大約每兩年發行一次,而每個版本的Centos會定期(大概6個月)更新一次,以支援新的硬體。這樣,建立一個安全、低維護、穩定、高預測性、高重複性的Linux環境。

(4)其他發行版本:

1、 Gentoo:基于linux的自由作業系統,基于Linux的自由作業系統,它能為幾乎任何應用程式或需求自動地作出優化和定制。追求極限的配置、性能,以及頂尖的使用者和開發者社群,都是Gentoo體驗的标志特點, Gentoo的哲學是自由和選擇。得益于一種稱為Portage的技術,Gentoo能成為理想的安全伺服器、開發工作站、專業桌面、遊戲系統、嵌入式解決方案或者别的東西--你想讓它成為什麼,它就可以成為什麼。由于它近乎無限的适應性,可把Gentoo稱作元發行版。

2、 Aech Linux(或稱Arch):以輕量簡潔為設計理念的Linux發行版。其開發團隊秉承簡潔、優雅和代碼最小化的設計宗旨。

不通發行版之間的聯系和差別:

聯系:所有發行版都是使用Linux核心;都需要遵循GNU的GPL協定;所有的發行版都有自己的版本号,版本格式約定基本一樣(主版本号.次版本号.發行号.修正号)。

差別:發行版的本質差別,在于繼承不同版本的核心,庫、程式的組成。不同發行版幾乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系統,封包件以RPM為擴充名;Ubuntu系列,Debian系列使用基于DPKG包管理系統,封包件以deb為擴充名。)

三、Linux的哲學思想

1、一切皆檔案:是Unix/Linux的重要哲學思想之一,不僅将檔案、目錄、字元裝置、塊裝置、 套接字等在 Unix/Linux

中都是以檔案被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面,作用就是提高資源的管理效率。

2、由衆多功能單一的小程式組成:一個程式隻做一件事,并且能組合好完成複雜的任務,作用是分工明确,友善程序管理,好處是小程式易于了解,維護,

占用系統資源少。

3、避免令人困擾的圖形界面:使用指令行接口執行效率更高,易于以程式設計的方式實作自動化任務。

4、配置資料存儲在文本中:linux所有的配置檔案都存放在文本配置檔案當中,無論什麼配置修改都隻需修改其配置檔案即可,易于閱讀和編輯。

5、提供機制而非政策:從籠統意義上講,所謂機制就是“提供什麼功能”;政策就是“實作什麼功能”。其實,機制就是将整個系統看作是一個資源的集合,當

任務來臨時能夠提供多少資源供其使用,卻不介入任務的運作過程,任憑使用者自己配置設定。

四、說明Linux指令的使用格式

1、ifconfig

1.指令格式:

ifconfig [網絡裝置] [參數]

2.指令功能:

ifconfig 指令用來檢視和配置網絡裝置。當網絡環境發生改變時可通過此指令對網絡進行相應的配置。

3.指令參數:

up 啟動指定網絡裝置/網卡。

down 關閉指定網絡裝置/網卡。該參數可以有效地阻止通過指定接口的IP資訊流,如果想永久地關閉一個接口,我們還需要從核心路由表中将該接口的路由資訊全部删除。

arp 設定指定網卡是否支援ARP協定。

-promisc 設定是否支援網卡的promiscuous模式,如果選擇此參數,網卡将接收網絡中發給它所有的資料包

-allmulti 設定是否支援多點傳播模式,如果選擇此參數,網卡将接收網絡中所有的多點傳播資料包

-a 顯示全部接口資訊

-s 顯示摘要資訊(類似于 netstat -i)

add 給指定網卡配置IP位址

del 删除指定網卡的IP位址

<硬體位址> 配置網卡最大的傳輸單元

mtu<位元組數> 設定網卡的最大傳輸單元 (bytes)

netmask<子網路遮罩> 設定網卡的子網路遮罩。掩碼可以是有字首0x的32位十六進制數,也可以是用點分開的4個十進制數。如果不打算将網絡分成子網,可以不管這一選項;如果要使用子網,那麼請記住,網絡中每一個系統必須有相同子網路遮罩。

tunel 建立隧道

dstaddr 設定一個遠端位址,建立點對點通信

-broadcast<位址> 為指定網卡設定廣播協定

-pointtopoint<位址> 為網卡設定點對點通訊協定

multicast 為網卡設定多點傳播标志

address 為網卡設定IPv4位址

txqueuelen<長度> 為網卡設定傳輸列隊的長度

4.使用執行個體:

執行個體1:檢視網絡接口狀态,不加任何參數,會輸出目前網絡接口的情況。

Linux成長之路-基礎篇(1)

執行個體2:啟動關閉指定網卡

ifconfig ens33 up

Linux成長之路-基礎篇(1)

ifconfig ens33 down

Linux成長之路-基礎篇(1)

執行個體3:為網卡配置IP

Linux成長之路-基礎篇(1)

說明:

ifconfig eth0 192.168.60.129

給eth0網卡配置IP地:192.168.60.129

ifconfig eth0 192.168.60.129 netmask 255.255.255.0

給eth0網卡配置IP位址:192.168.60.192,并加上子掩碼:255.255.255.0

ifconfig eth0 192.168.60.129 netmask 255.255.255.0 broadcast 192.168.60.255

/給eth0網卡配置IP位址:192.168.60.129,加上子掩碼:255.255.255.0,加上個廣播位址: 192.168.60.129

執行個體4:啟用和關閉ARP協定

指令:

ifconfig eth0 arp

ifconfig eth0 -arp

輸出:

Linux成長之路-基礎篇(1)

執行個體5:設定最大傳輸單元

ifconfig eth0 mtu 1480

Linux成長之路-基礎篇(1)

設定能通過的最大資料包大小為 1480 bytes

2、echo

echo指令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。

語   法:echo [-ne][字元串]或 echo [--help][--version]

補充說明:echo會将輸入的字元串送往标準輸出。輸出的字元串間以空白字元隔開, 并在最後加上換行号。

選項:

-n 不要在最後自動換行

-e 若字元串中出現以下字元,則特别加以處理,而不會将它當成一般文字輸出:

\a 發出警告聲;

\b 删除前一個字元;

\c 最後不加上換行符号;

\f 換行但光标仍舊停留在原來的位置;

\n 換行且光标移至行首;

\r 光标移至行首,但不換行;

\t 插入tab;

\v 與\f相同;

\ 插入\字元;

\nnn 插入nnn(八進制)所代表的ASCII字元;

–help 顯示幫助

–version 顯示版本資訊

執行個體1:顯示系統定義的變量的值

[root@CentOS7 ~]# echo $USER

root

[root@CentOS7 ~]# echo $HOME

/root

執行個體2:顯示使用者自定義的變量的值

[root@CentOS7 ~]# var1=<code>date</code>

[root@CentOS7 ~]# echo "Today's date time is : $var1"

Today's date time is : Sat Dec 15 17:43:24 CST 2018

執行個體3:在echo指令中使用反斜線

[root@CentOS7 ~]# echo -e "Ubuntu \bis \bthe \bbest \bDesktop \bOS"

UbuntuisthebestDesktopOS

執行個體4:顯示文本字元串

[root@CentOS7 ~]# echo " Hi this echo command testing"

Hi this echo command testing

執行個體5:在echo指令中使用制表符空格和垂直制表符

[root@CentOS7 ~]# echo -e "Ubuntu \tis \tthe \tbest \tDesktop \tOS"

Ubuntu is the best Desktop OS

[root@CentOS7 ~]# echo -e "Ubuntu \vis \vthe \vbest \vDesktop \vOS"

Ubuntu

is

the

best

Desktop

OS

執行個體6:設定echo指令彩色輸出

echo指令可以修改字型類型,字型背景色以及字型顔色,轉義序列\033可以用于改變字型屬性。要使轉義序列生效,必須使用-e選項。下面列出了部分轉義代碼:

[0m: 正常

[1m: 粗體

[4m: 字型加上下劃線

[7m: 逆轉前景和背景色

[8m: 不可見字元

[9m: 跨行字型

[30m: 灰色字型

[31m: 紅色字型

[32m: 綠色字型

[33m: 棕色字型

[34m: 藍色字型

[35m: 紫色字型

[36m: 淺藍色字型

[37m: 淺灰字型

[38m: 黑色字型

[40m: 黑色背景

[41m: 紅色背景

[42m: 綠色背景

[43m: 棕色背景

[44m: 藍色背景

[45m: 紫色背景

[46m: 淺藍色背景

[47m: 淺灰色背景

用紫色加粗字型列印輸出My Linux。

[root@CentOS7 ~]# echo -e "\033[1m\033[35mMy Linux\033[0m"

用紅色字型黑色背景色列印輸出My Linux。

[root@CentOS7 ~]# echo -e "\033[31m\033[40mMy Linux\033[0m"

3、tty

tty指令用于顯示終端機連接配接标準輸入裝置的檔案名稱。

在Linux作業系統中,所有外圍裝置都有其名稱與代号,這些名稱代号以特殊檔案的類型存放于/dev目錄下。你可以執行tty(teletypewriter)指令查詢目前使用的終端機的檔案名稱。

文法

tty [-s][--help][--version]

參數說明:

-s或--silent或--quiet 不顯示任何資訊,隻回傳狀态代碼。

--help 線上幫助。

--version 顯示版本資訊。

執行個體1:顯示目前終端

[root@CentOS7 ~]# tty

/dev/pts/3

4、startx

當我們在終端下想啟動圖形界面時,我們都會通過輸入startx來實作,該指令可以啟動一個Xserver,而且可以啟動一個漂亮的圖形界面。

startx [ [ client ] options ... ] [ -- [ server ] options ... ]。startx其實就是一個腳本,它啟動X server就是通過調用xinit指令實作的,startx的參數将全部傳給xinit。是以,這些參數的意義和xinit的參數是一樣的。

5、export

功能說明:

  設定或顯示環境變量。

文法:export [-fnp][變量名稱]=[變量設定值]

參數:

-f  代表[變量名稱]中為函數名稱。

-n  删除指定的變量。變量實際上并未删除,隻是不會輸出到後續指令的執行環境中。

-p  列出所有的shell賦予程式的環境變量。

執行個體1:顯示目前系統上所有環境變量

直接使用export不加任何選項

Linux成長之路-基礎篇(1)

執行個體2:設定環境變量

[root@Python ~]# export PATH="$PATH:/home/Python"

[root@Python ~]# echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/Python

執行個體3:定義環境變量指派

Linux成長之路-基礎篇(1)

6、pwd

pwd指令用于顯示目前工作目錄。

pwd [--help][--version]

參數說明:

執行個體:檢視目前所在目錄

[root@CentOS7 network-scripts]# pwd

/etc/sysconfig/network-scripts

7、history

用于顯示曆史記錄和執行過的指令指令。history指令是被儲存在記憶體中的,當退出或者登入shell時,會自動儲存或讀取。在記憶體中,曆史指令僅能夠存儲1000條曆史指令,該數量是由環境變量 HISTSIZE進行控制。

文法:

history [選項] [參數]

-c: 清空指令曆史;

-d offset:删除指定指令曆史

-r: 從檔案讀取指令曆史至曆史清單中;

-w:把曆史清單中的指令追加至曆史檔案中;

history #:顯示最近的#條指令

環境變量:

1&gt; HISTSIZE:指令曆史的條數

2&gt; HISTFILE:預設為~/.bash_history

3&gt; HISTFILESIZE:HISTFILE檔案記錄曆史的條數

調用曆史指令:

1&gt; !# 重複執行第#條指令

2&gt; !! 重複執行上一條指令

3&gt; !str 執行指定str開頭的指令(最後一個)

4&gt; !? 獲得最後執行的狀态碼

控制指令曆史的記錄方式:

1&gt; ignoredups 忽略重複

2&gt; ignorespace 忽略空白開頭

3&gt; ignoreboth 上面2個都啟用

執行個體1:顯示已記錄的曆史指令

Linux成長之路-基礎篇(1)

執行個體2:删除曆史指令中某條曆史指令

[root@CentOS7 ~]# history -d 391

執行個體3:顯示最近10條曆史指令

[root@CentOS7 ~]# history 10

執行個體4:清空所有曆史指令

[root@CentOS7 ~]# history -c

8、shutdown、poweroff、reboot

1&gt; shutdown 會給系統計劃一個時間關機。它可以被用于停止、關機、重新開機機器。

指令示例:

[root@CentOS7 ~]# shutdown

[root@CentOS7 ~]# shutdown now

[root@CentOS7 ~]# shutdown 13:20

[root@CentOS7 ~]# shutdown -p now ##關閉機器

[root@CentOS7 ~]# shutdown -H now ##停止機器

[root@CentOS7 ~]# shutdown -r09:35 ##在 09:35am 重新開機機器

[root@CentOS7 ~]# shutdown -c ##取消

2&gt; poweroff

會發送一個 ACPI 信号來通知系統關機。

[root@CentOS7 ~]# poweroff 關閉機器

[root@CentOS7 ~]# poweroff --halt 停止機器

[root@CentOS7 ~]# poweroff --reboot 重新開機機器

3&gt; reboot

通知系統重新開機

[root@CentOS7 ~]# reboot 重新開機機器

[root@CentOS7 ~]# reboot --halt 停止機器

[root@CentOS7 ~]# reboot -p 關閉機器

9、hwclock、date

1&gt; date

date 可以用來顯示或設定系統的日期與時間。

date [OPTION]... [+FORMAT]

FORMAT

%H 小時(以00-23來表示)。

%I 小時(以01-12來表示)。

%K 小時(以0-23來表示)。

%l 小時(以0-12來表示)。

%M 分鐘(以00-59來表示)。

%P AM或PM。

%r 時間(含時分秒,小時以12小時AM/PM來表示)。

%s 總秒數。起算時間為1970-01-01 00:00:00 UTC。

%S 秒(以本地的慣用法來表示)。

%T 時間(含時分秒,小時以24小時制來表示)。

%A 星期的完整名稱。

%D 日期(含年月日)。

%Y 年份(以四位數來表示)。

MM 月份(必要)

DD 日期(必要)

hh 小時(必要)

mm 分鐘(必要)

ss 秒(選擇性)

執行個體1:顯示目前系統時間

[root@CentOS7 ~]# date

Sat Dec 15 19:40:33 CST 2018

執行個體2:格式化輸出時間

[root@CentOS7 ~]# date +"%Y-%m-%d %H:%M:%S"

2018-12-15 19:45:49

執行個體3:修改系統時間

[[root@CentOS7 ~]# date -s "2012-12-12 12:12:12"

Wed Dec 12 12:12:12 CST 2012

2&gt; hwclock、clock

指令可以用來顯示/設定硬體時鐘指令。

-s, --hctosys:以硬體為準,把系統調整為與硬體時間相同;

-w, --systohc:以系統為準,把硬體時間調整為與系統時鐘相同;

五、擷取Linux系統幫助資訊

擷取指令的使用幫助:

内部指令:

help COMMAND

外部指令:

(1) 指令自帶簡要格式的使用幫助

~]# COMMAND --help

(2) 使用手冊:manual

位置:/usr/share/man

~]# man COMMAND

六、Linux發行版的基礎目錄名稱命名法則及功用規定

linux檔案命名法則:

1.檔案名嚴格區分大小寫

2.檔案可以使用除/以外任意字元

3.檔案名長度不能超過255字元

4.以.開頭的檔案為隐藏檔案

在各種版本的linux發行版中,檔案系統必要遵循FHS(Filesystem Hierarchy Standard,檔案系統結構标準),它定義了一個發行版所必須有的檔案目錄和可選的檔案目錄。

FHS:

Filesystem Hierarchy Standard

/bin:所有使用者可用的基本指令程式檔案;

/sbin:供系統管理使用的工具程式;

/boot:引導加載器必須用到的各靜态檔案:kernel, initramfs(initrd), grub等;

/dev:存儲特殊檔案或裝置檔案;

裝置有兩種類型:字元裝置(線性裝置)、塊裝置(随機裝置);

/etc:系統程式的配置檔案,隻能為靜态;

/home:普通的家目錄的集中位置;一般每個普通使用者的家目錄預設為此目錄下與使用者名同名的子目錄,/home/USERNAME;

/root:管理者的家目錄;可選;

/lib:為系統啟動或根檔案系統上的應用程式(/bin, /sbin等)提供共享庫,以及為核心提供核心子產品

libc.so.:動态連結的C庫;

ld:運作時連結器/加載器;

modules:用于存儲核心子產品的目錄;

/lib64:64位系統特有的存放64位共享庫的路徑;

/media:便攜式裝置挂載點,cdrom, floppy等;

/mnt:其它檔案系統的臨時挂載點;

/opt:附加應用程式的安裝位置;可選路徑;

/srv:目前主機為服務提供的資料;

/tmp:為那些會産生臨時檔案的程式提供的用于存儲臨時檔案的目錄;可供所使用者執行寫入操作;有特殊權限;

/usr:usr Hierarchy,全局共享的隻讀資料路徑;

bin, sbin

lib, lib64

include:C程式頭檔案;

share:指令手冊頁和自帶文檔等架構特有的檔案的存儲位置

local:另一個層級目錄;

X11R6:X-Window程式的安裝位置

src:程式源碼檔案的存儲位置

/usr/local:Local hierarchy,讓系統管理者安裝本地應用程式;也通常用于安裝第三方程式;

/var:/var Hierarchy,存儲常發生變化的資料的目錄;

cache Application cache data

lib Variable state information

local Variable data for /usr/local

lock Lock files

log Log files and directories

opt Variable data for /opt

run Data relevant to running processes

spool Application spool data

tmp Temporary files preserved between system reboots

繼續閱讀