【Linux基礎】計算機及操作系統基礎
計算機的組成及其功能
計算機的組成
簡單來說,計算機應由兩部分組成:
第一部分:硬件
馮諾依曼結構體系
當前計算機主要是基于馮諾依曼體系結構設計的,在該體系中,計算機硬件由5個部件組成。分別是:運算器、控制器、存儲器、輸入設備和輸出設備。而現今運算器和控制器一般集成在一起,叫中央處理器(Central Processing Unit, CPU)計算機最核心的部件,相當于人類的大腦。
中央處理器(CPU)
- 運算器:主要負責程序運算與邏輯判斷
- 控制器:則主要在協調各周邊元件與各單元間的工作
在CPU中,還包含了通用寄存器組,是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,存器有累加器(ACC)。
- 存儲器(memory)
存儲程序和數據,并能在計算機運行過程中高速、自動地完成從程序或數據的存取,也就是俗稱的內存RAM(Random Access Memory) - 輸入設備(Input):外部設備之一。作用是將程序、原始數據、文字、字符、控制命令或現場采集的數據輸入到計算機。常見的輸入設備有:鍵盤、鼠標、磁帶機、磁盤機、光盤機等
- 輸出設備(Output):外部設備之一。作用是把計算機的中間結果或最后結果、機內的各種數據及文字等信息輸出來。常見的輸出設備有:CRT、打印機、繪圖儀等
第二部分:軟件
- 匯編語言(assembly language):一種用于cpu的低級語言。它使用助記符代替二進制語言,方便人類的閱讀及操作。但一種匯編語言只能與相對應的計算機系統結構對應,無法在不同平臺移植
匯編語言是最接近機器語言的低級語言,相當于用人類看得懂的符號來代替0和1,匯編通過指令集來下達命令控制CPU,并且它操作的對象并不是具體的數據,而是各種寄存器和內存;不同類型的CPU 有著不同的機器指令系統,所以,匯編語言程序與機器有著密切的關系。除了同系列、不同型號CPU 之間的匯編語言程序有一定程度的可移植性之外,其它不同類型(如:小型機和微機等)CPU 之間的匯編語言程序是無法移植的,也就是說,匯編語言程序的通用性和可移植性要比高級語言程序低。
- 系統軟件(system software):用來運行或控制硬件所開發的計算機軟件,如操作系統、編譯器、數據庫等等
常見的軟件
- 操作系統(Operating system):控制與管理硬件及軟件資源,并提供用戶操作接口,完成人機交互的軟件,常見的有Unix、GNU/Linux、 MAC OS X、Microsoft Windows等
- 編譯器(compiler):將使用匯編語言編寫的代碼,轉換成計算機可識別的機器語言,常見的有GCC
- 解釋器(interpreter):將高級編程語言一行一行解釋運行。它的好處是可以消除編譯整個程序的負擔,缺點則是運行速度比較緩慢,且使用解釋器的代碼在運行過程中,不可脫離解釋器。常見的使用解釋器的語言包括Perl、Python、Ruby等
- 連接器(linker):將由匯編器或編譯器產生的目標文件和外部程序庫鏈接為一個可執行文件
- 加載器(loader):負責將程序加載到內存中,并配置內存與相關參數,使之能夠運行
- 應用軟件(application software):為了某種特定用途而被開發的軟件。它可以是一個特定的程序,也可以是一個由眾多獨立程序組成的龐大的軟件系統
什么是Linux
在Linux誕生之前,一直是UNIX的天下,只不過UNIX在1979年之后就不能免費獲得,要想使用就需要購買,在當時,這不是一個小數目。
后來Richard Mathew Stallman在1984年發起GNU計劃,該計劃意在構建一個完全自由的操作系統,所謂完全自由,就要要求加入GNU計劃的所有軟件必須自由使用,自由更改,自由發布,也需要把更改后的代碼發布。并且制定了明文規定許可協議:GPL協議
GNU計劃發起后,在這期間誕生了很多有名的軟件,如(VI,emacs,gcc)但GUN上的軟件都是運行在UNIX系統上,并沒有“自由的Unix核心”存在。直到1991年,芬蘭赫爾辛基大學的一個學生:Linus Benedict Torvalds 開發了一個類unix內核,一經發布便得到廣大愛好者的支持,這個內核就是linux,1994年,linux加入GNU計劃并采用GPL協議發布,自此GNU/LINUX真正實現了構建一套完全自由的操作系統的設想。
Linux發行版(Linux distribution)
Linux發行版是一種為一般用戶預先集成好的Linux操作系統及各種應用軟件。一般不需要用戶重新編譯,在直接安裝之后,只需要作出小幅度的更改設置即可。Linux發行版通常包含了桌面環境、辦公包、媒體播放器、數據庫等應用軟件。這些操作系統通常使用Linux、以及來自GNU計劃的軟件、和基于X Window的圖形界面組成。
Linux發行版通常分為商業發行版和社區發行版。也有少部分既不屬于發行版又不屬于社區發行版,其中最有名的是Slackware.
- 著名的Linux發行版
按照程序包管理器的不同,通常Linux的發行版也被分成了不同的派系。
Redhat系
名稱 | 基于 | 特點 |
---|---|---|
Red Hat Enterprise | RPM管理包 | 紅帽的商業版本 提供10年服務支持 |
CentOS | RedHat | 根據RHEL代碼編譯的社區版 文檔充足 |
Fedora | RedHat | 紅帽官方的社區版 RH公司新技術測試平臺 |
Slackware系
名稱 | 基于 | 特點 |
---|---|---|
Slackware | SLS | UNIX風格的Linux發行版 KISS(簡潔)的設計理念 |
SUSE | Slackware | 界面華麗 照顧歐洲人的使用習慣 |
opensuse | SUSE | suse的社區版 |
Debian系
名稱 | 基于 | 特點 |
---|---|---|
Debian | Dpkg管理包 | 一直為社區版 限制較少 功能較多 要求技術較高 |
Adamantix | Debian | 關注安全 |
Knoppix | Debian | 對硬件支持極佳 對中日韓環境不夠友好 |
Gnoppix | Knoppix | Knoppix的GNOME版 |
Ubuntu | Debian | 界面華麗 與Debian、GNOME開源社區關系緊密 有資金支持 |
Linux Mint | Ubuntu | Ubuntu的衍生版 開箱即用 |
Ubuntu Kylin | Ubuntu | 中文定制版 |
BackTrack | Ubuntu | 專業安全檢測操作系統 已不再維護 |
Kali Linux | BackTrack | BackTrack替代者 安全滲透軟件 |
其他
名稱 | 基于 | 特點 |
---|---|---|
Gentoo | Portage管理包 | 大量程序開放源代碼 對硬件要求較高 |
ArchLinux | pacman管理包 | 軟件更新速度快 包管理簡易高效 |
LFS(Linux From scratch) | 高端玩法 DIY系統 |
- 發行版之間的不同
在Linux發行版中,通常均使用軟件包管理系統,不同的操作系統,軟件包管理系統也不盡相同。比較常見的軟件包管理系統有以下幾種
Debian:deb, apt-get
RedHat:rpm, yum –> dnf
S.u.S.E: rpm, zypper
ArchLinux:port
LFS: Linux From Scratch
Linux的哲學思想
- 一切皆文件:
把幾乎所有資源統統抽象為文件形式;包括硬件設備,甚至通信接口、進程等;
如;
物理終端:/dev/console
虛擬終端:/dev/tty#
串行終端:/dev/ttyS#
偽終端:/dev/pts/# - 由眾多功能單一的程序組成;一個程序只做一件事,并且做好;
通過組合眾多小程序完成復雜任務; - 盡量避免跟用戶交互;
目標:易于以編程的方式實現自動化任務; - 使用文本文件保存配置信息;
說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述
Linux命令格式與基礎命令
什么是命令
命令其實就是一個可執行文件。程序本身只是一個靜態文件,只有通過這個請求,才會轉化為有生命周期的動態進程。命令本身是一個可執行的二進制格式程序文件(Linux哲學思想:一切皆文件),請求一個命令相當于在環境變量$PATH中的路徑尋找與之同名的程序,而PATH變量一般包含的路徑有:
普通命令:/bin
,/usr/bin
,/usr/local/bin
管理命令:/sbin
,/usr/sbin
,/usr/local/sbin
命令往往會調用到許多庫文件,這些庫可能許多程序都會遇到,我們形象的稱之為共享庫。這些共享庫也是二進制文件,但是由于其沒有程序執行入口,所以不能獨立執行。只能被其他有執行入口的程序調用時才能執行,一般這些庫都存放在這些目錄下:
32bits的庫:/lib
,/usr/lib
,/usr/local/lib
64bits的庫:/lib64
,/usr/lib64
,/usr/local/lib64
命令的分類與格式
- 命令的分類:
由shell程序自帶的命令:內置命令(builtin)shell程序是一種獨特的程序(用戶接口進程),它的作用是負責解析用戶提供的命令。
獨立的可執行程序文件:文件名即命令名:外部命令
查看命令類型:type COMMAND
注意:并非所有的命令都有一個在某目錄與之相對應的可執行程序文件,shell程序已經內嵌了許多命令。 - 命令的格式:
命令必須遵循特定格式規范:比如說win的exe,msi,對于linux而言則是ELF - 命令使用格式
COMMAND [OPTIONS] ARGUMENTS
COMMAND: 發起一個命令 ??
OPTIONS:
指定命令的運行特性
一般選項有兩種表現形式:
短選項:-C
例如-l -d
注意:
有些命令的選項沒有-
如果同一命令使用多個短選項,多數可以合并,比如說 -l -d就可以寫作-ld
短選項一般使用“ ”(空格)來分割
長選項:–word
例如–help –human-readable
注意:?長選項不能合并
長選項一般用“=”來表示
ARGUMENTS:
命令的作用對象,以及命令對什么生效
注意:有些命令可以同時帶多個參數,多個參數之間以空白字符分割 下面舉例說明一下命令用法 - ifconfig
ifconfig(interface configuration)是在Unix-like系統中用于查看以及配置網絡接口設備的系統管理工具。其作用等同于ip addr或ip link
作用:作用于類Unix系統中,用于配置、控制及查詢TCP/IP網絡接口的系統管理工具語法:ifconfig [interface] ?????
ifconfig interface options | address …
常用方法:
ifconfig:查看當前系統中存活的網絡接口設備信息
ifconfig eth#:查看指定的網絡接口設備的信息
ifconfig -a:查看所有網絡接口設備(通過此命令,非運行狀態的網卡也可顯示)
ifconfig eth# up:啟動指定網絡接口設備
ifconfig eth# down:關閉指定網絡接口設備
ifconfig eth# add 33ffe:3240:800:1005::2/64:為指定網絡接口設備添加IPv6地址
ifconfig eth# del 33ffe:3240:800:1005::2/64:為指定網絡接口設備刪除IPv6地址
ifconfig eth# hw ether 00:16:3E:10:60:B5 : 修改指定網絡接口設備MAC地址
ifconfig eth# xxx.xxx.xxx.xx:給指定網絡接口設備配置指定ip地址
ifconfig eth# xxx.xxx.xxx.xx netmask 255.255.255.0 :給指定網絡接口設備配置指定ip地址及子網掩碼
ifconfig eth# xxx.xxx.xxx.xx netmask 255.255.255.0 broadcast 192.168.120.255:給指定網絡接口設備配置指定ip地址及子網掩碼、廣播地址
ifconfig eth# mtu 1500:給指定網絡接口設備設置最大傳輸單元
備注:使用此命令對于網絡接口的所有操作,在系統重啟后均會失效。若需永久生效,需要通過修改配置文件的方式,配置文件的路徑一般為[root@test ~]# cd /etc/sysconfig/network-scripts/
[root@test network-scripts]# ls
- echo
echo用來將字符串輸出到終端上。它通常在shell腳本中使用,以將狀態信息輸出到屏幕或文件中
作用:顯示文字語法:echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION
常用方法:
-n 不進行換行
-e 讓轉義符生效
轉義符如下
\a 發出警告聲
\b 刪除前一個字符
\c 最后不加上換行符號
\f 換行但光標仍舊停留在本身的位置
\n 換行
\r 光標移至行首,但不換行
\t 制表符
\v 等同于\f
\ 插入\字符
–help 顯示幫助
–version 顯示版本信息
備注:STRING可以使用引號,單引號雙引號均可用
單引號:強引用,變量不執行替換[root@iZ25test ~]# echo ‘$SHELL’
$SHELL
雙引號:弱引用,變量引用會被替換
[root@iZ25test ~]# echo “$SHELL”
/bin/bash
- tty
作用:查看當前的終端設備語法:?tty [OPTION]… ?
常用方法:[root@test ~]# tty
`/dev/pts/0`
`startx`
作用:用來啟動X Window,實際上是啟動X Window程序
常用方法:
startx:在服務器上啟動x會話 ????
startx -w:在服務器上強制啟動x會話
- export
作用:用于將shell變量輸出為環境變量,或將shell函數輸出為環境變量語法:BASH BUILTIN COMMANDS ????
常用方法:
-f:代表【變量名稱】中為函數名稱
-n:刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中】
-p:列出所有shell賦予程序的環境變量
- pwd
顯示當前工作目錄print name of current/working directory
作用:以絕對路徑的方式顯示用戶當前工作目錄。語法: pwd [OPTION]..
常用方法:
–help:顯示幫助信息
–version:顯示版本信息
pwd命令用于顯示當前工作目錄,一般而言,涉及pwd,就會涉及到三個環境變量
PATH:執行文件路徑的變量
OLDPWD:表示前一次的工作目錄
PWD:表示當前的工作目錄
- history
作用:
用于顯示指定數目的指令命令
讀取歷史命令文件中的目錄到歷史命令緩沖區
將歷史命令緩沖區寫入命令文件語法:BASH BUILTIN COMMANDS ???
常用方法:
-c:清空當前歷史命令
-a:將歷史命令緩沖區中命令寫入歷史命令文件中
-r:將歷史命令文件中的命令讀入當前歷史命令緩沖區
-w:將當前歷史命令緩沖區命令寫入歷史命令文件中
n:打印最近n條歷史命令(n為數字)
- shutdown
作用:
系統關機
關閉所有程序
按照用戶需要重啟或關機語法:shutdown [OPTION…] [TIME] [WALL…] ???
常用方法:
-c:取消關機
-f:重新啟動時不執行fsck
-F:重新啟動時執行fsck
-h:將系統關機
-k:送出信息給所有用戶,但不會實際關機
-n:不調用init程序進行關機,而由shutdown自己控制
-r:重啟系統
TIME:設置多久時間后執行shutdown指令
WALL:要傳送給所有登入用戶的信息
- ** poweroff**
作用:用來關閉計算機操作系統并且切斷系統電源語法: poweroff [OPTION]…
常用方法:
-n:關閉操作系統時不執行sync操作
-w:不真正關閉操作系統
-d:關閉操作系統時,不將操作寫入日志文件
-f:強制關閉系統
-i:關閉系統之前關閉所有的網絡接口
-h:關閉操作系統之前將系統中所有的操作設置為備用模式
- reboot
作用:用來重新啟動正在進行的Linux操作系統語法:reboot [OPTION]…
常用方法:
-d:重新開機時不把數據寫入數據文件/var/tmp/wtmp
-f:強制重新開機,不調用shutdown指令的功能
-i:在重開機之前,先關閉所有網絡界面
-n:重開機之前不檢查是否有未結束的程序
-w:僅做測試,并不真正將系統重新開機,只會把重開機的數據寫入/var/log目錄下的wtmp記錄文件
- hwclock
作用:是一個硬件時鐘訪問工具,它可以顯示當前時間、設置硬件時鐘的時間和設置硬件時鐘為系統時間,也可以設置系統時間為硬件時鐘的時間語法: hwclock [functions] [options]
常用方法:
–adjust:校正目前的硬件時鐘
–debug:顯示hwclock執行時詳細的信息
–hctosys:將系統時鐘調整與當前的硬件時鐘一致
–set –date=<日期與時間>:設定硬件時鐘
–show:顯示硬件時鐘的時間與日期
–systohc:將硬件始終調整為與當前的系統時鐘一致
–test:測試程序
–utc:使用格林威治時間
–version:顯示版本信息
- date
作用:顯示或設置系統時間與日期語法:date [OPTION]… [+FORMAT] ????
常用方法:
-d<“字符串”>:顯示字符串所指的日期與時間
-s<“字符串”>:根據字符串設置的日期與時間
+FORMAT:格式符
%F:年月日
%T:小時分鐘秒
%Y:年
%m:月
%d:日
%H:小時(24小時進制)
%S:秒
%s:秒(從1970-01-01 00:00:00 開始到命令執行那一刻的秒數 unix元年)
設定日期時間:date [MMDDhhmm[[CC]YY][.ss]]
Linux系統上獲取命令的幫助信息
- Linux的命令
Linux命令的執行必須依賴于Shell命令解釋器。Shell實際上是在Linux系統中運行的一種特殊程序,它位于操作系統內核與用戶之間進行交互。Linux的幫助有多種方式,通過命令的不同,幫助的查看方式也不盡相同。上面介紹了命令分別有外部命令和內部命令: - 內部命令和外部命令
內部命令:shell程序的一部分,其包含的往往是一些簡單的linux系統命令。它們被shell程序識別并通過shell內部完成運行,通常在linux系統加載運行時shell就被加載并駐留在系統內存中。內部命令是寫在shell程序源碼里面的,其執行速度通常比外部命令快。
外部命令:linux系統中能夠完成特定功能的腳本文件或二進制文件,每個外部命令對應了系統中的一個文件。這些文件通常比較強大,包含的程序量也很大,在系統加載時并不隨系統一起被加載到內存中,而是在需要時才將其調用內存。外部命令的實體通常并不包含在shell中,但是其命令執行過程是由shell程序控制的。shell程序管理外部命令執行的路徑查找、加載存放,并控制命令的執行。
命令幫助
- 內部命令: help 作用:用于顯示shell內部命令的幫助信息
語法:help(選項)(參數)
選項:-s:輸出短格式的幫助信息。僅包括命令格式
- 外部命令: 1)可以使用man手冊獲取幫助
man 作用:Linux下的幫助指令語法:man(選項)(參數)
選項:
-a:在所有的man幫助手冊中搜索
-f:等同于whatis,顯示給定關鍵字的簡短描述信息
-P:指定內容時使用分頁程序
-M:指定man手冊搜索的路徑
man作為命令手冊,有章節之分,同一個關鍵字,在不同章節中有著不用的解釋和使用幫助,如passwd在章節1中是介紹命令的使用方法,在章節5中則介紹passwd這個文件的幫助
man章節介紹:
man1:用戶命令
man2:系統調用
man3:c庫調用
man4:設備文件及特殊文件
man5:文件格式(配置文件格式)
man6:系統游戲使用幫助
man7:雜項
man8:管理工具及守護進程
man9:含糊的內核規范和接口
man使用方法快捷操作: 翻屏操作: 空格鍵:向文件尾部翻一屏
b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
回車鍵:向文件尾部翻一行
k:向文件首部翻一行
G:跳轉至最后一行
數字G:跳轉至指定行
1G:跳轉至文件首部
文本搜索:
/keyword:從文件首部向文件尾部依次查找,不區分字符大小寫
?keyword:從文件尾部向文件首部依次查找
n:與查找命令方向相同
N:與查找命令方向相反
Linux發行版的基礎目錄名稱命名法則及功用規定
linux操作系統中的主要目錄及目錄內容,是由文件系統層次結構標準(Filesystem Hierarchy Standard,FHS)定義的,采用倒置樹形結構,該標準由Linux基金會維護。在大多數情況下,它都是一個傳統BSD文件系統層次結構的形式化與擴充。
- 文件名法則
對于我們自身所創建的文件及目錄,則需要按照如下的法則
文件名使用法則:
嚴格區分字符大小寫:file1 File1 FILE1 并不是一個文件
目錄也是文件,
在同一路徑下,兩個文件不能同名
支持使用除”/“以外的任意字符;
最長不得超過255個字符 - 目錄結構
Linux發行版的基礎目錄名稱命名法則及功用規定
linux操作系統中的主要目錄及目錄內容,是由文件系統層次結構標準(Filesystem Hierarchy Standard,FHS)定義的,采用倒置樹形結構,該標準由Linux基金會維護。在大多數情況下,它都是一個傳統BSD文件系統層次結構的形式化與擴充。
下表中大部分目錄都以相似的功能存在于所有的UNIX系統中。但是,以下的描述僅針對FHS,且對非Linux系統并非權威
目錄/文件 | 用途 | 來源 |
---|---|---|
/ | /處于Linux文件系統樹形結構的最頂端 它是Linux文件系統的入口 所有的目錄、文件、設備都在/之下 |
|
/bin | 該目錄存放著系統最常用的最重要的命令 是以獨立的文件形式存在 這個目錄中的文件都是可執行的并且是普通用戶都可以使用的命令 作為系統最基礎的命令都放在這里 |
binary |
/usr | 該目錄是系統存放程序的地方 比如普通命令、幫助文件、安裝的軟件等 當我們安裝一個Linux發行版官方提供的軟件包時,大多安裝在這里 /usr目錄下包括涉及字體目錄/usr/share/fonts、幫助目錄/usr/share/man或/usr/share/doc等 |
unix shared resource |
/var | 該目錄的內容是經常變動的 /var下有/var/log目錄用來存放系統日志的目錄 /var/www目錄用來定義Apache服務器站點存放目錄 /var/lib用來存放一些庫文件 |
variable |
/sbin | 大多數涉及系統管理的命令都存放在該目錄中 它是超級權限用戶root的可執行命令存放地 凡是目錄sbin中包含的命令都是root權限才能執行的 |
super user binary |
/root | Linux超級權限用戶(系統管理員)root的主目錄 | |
/home | 普通用戶的主目錄都默認存放在該目錄中 | |
/etc | 該目錄是系統配置文件的所在地 一些服務器的配置文件也在這里 |
etcetera |
/dev | 設備文件存儲目錄 該目錄下是所有Linux的外部設備文件 |
device |
/boot | 存放Linux的內核及引導系統的程序所需要的文件 | |
/opt | 該目錄是可選的軟件包安裝目錄 | optional |
/tmp | 該目錄用于存放臨時文件 | temporary |
/lib | 該目錄用于存放庫文件 這個目錄里存放著系統最基本的共享庫 |
library |
/mnt | 該目錄是用于存放掛載儲存設備的掛載目錄的 | mount |
/proc | 操作系統運行時進程(正在運行中的程序)信息及內核信息(比如cpu、硬盤分區、內存信息等)存放處 /proc目錄是偽裝的文件系統proc的掛載目錄 可以通過直接訪問這個目錄來獲取系統信息 |
process |
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91870