Linux的發行版以及不同發行版之間的聯系與區別
Linux發行版主要的大分支有三個:dibian S.U.S.E redhat
一個操作系統由kernel和application組成。編譯封裝的時候根據不同的application,可以編譯成不同的發行版本。
所有的linux發行版都是基于GPL的版權,它們的內核都是linux的(只是可能版本不同),所以源碼都必須提供出來。
一個大的發行版本可以分為桌面版(個人版)、企業版。大的發行版本還可以有許多其他的衍生版本
主要發行版本的關聯關系:
Redhat:紅帽linux
桌面版: 桌面這塊的業務已經移交給了fedora
企業版:RHEL
Centos:redhat 的社區企業版,現已被Redhat收購
S.U.S.E:基于slackwre的發行版,它引用了一些redhat的特性,如RPM
S.U.S.E和opensuse一般在歐洲用的比較多。
Debian:
它不是由商業組織發行的,是由一個獨立松散的組織來維護。相對其他的linux發行版本,debian更自由及開放,所以相對來說,這個發行版給與用戶的選擇更多。
Debian的發行版的分支上有一個桌面衍生版,ubuntu,它的桌面效果非常好。
Linux的哲學思想
1. 一切皆文件
2. 由各個目的單一的小程序組成,小程序組合完成復雜的功能
3. 盡量避免跟用戶交互,以便可以通過腳本等方式進行自動化任務
4. 使用文本文件保存配置
1. 一切皆文件
Linux下所有的東西都以文件來顯示:
硬件:硬件設備也顯示為文件,提供硬件的訪問入口及關聯驅動。主要有塊設備文件及字符設備文件兩種形式,顯示為b,c
普通的文件:顯示為f,包含二進制文件、可執行文件、ASCI文件
目錄文件: 顯示為d,表示一個文件的路徑映射
符號連接文件:顯示為l,在元數據區數據塊指針指向了另外一個文件的訪問路徑。
管道文件:顯示為p
套接字文件:顯示為s
2. 由各個目的單一的小程序組成,小程序組合完成復雜的功能
有點類似于模塊化的設計,把一個復雜功能拆分成各個單獨的模塊。每個模塊負責一個簡單功能。這樣可以提高代碼的實現,維護,重用。
3. 盡量避免跟用戶交互,以便可以通過腳本等方式進行自動化任務
一個程序一旦發起為進程,在這個生命周期內,盡量減少和用戶的交互,依靠系統自身的機制,完成自動化任務。
4. 使用文本文件保存配置
文本文件易于和底層進行交互,這樣可以方便管理員用文本來進行管理
計算機的組成及其功能
根據馮諾依曼體系,計算機分為5部分:運算器、控制器、存儲器、輸入設備、輸出設備
運算器:通過存儲器和輸入設備提供的數據,并有控制器提供指令所在的地址,完成一次指令運算。
控制器:告訴運算器數據與指令從哪里獲取。
存儲器:內存(RAM)存放指令與數據。數據掉電失效。
輸入與輸出設備:也可以稱呼為IO設備,完成數據的輸入與數據結果的輸出。通常的輸入輸出設備有:硬盤,網卡,顯示器,鍵盤……
各個組成之間的關聯關系
1. 運算器一般與控制器放在一起,統稱CPU
2. CPU與存儲器及IO設備之間通過總線相連。為了完成尋址、獲取數據、及獲取指令這三個功能,CPU與其他設備之間的總線分為地址總線、數據總線、控制總線
3. 在南北橋架構中,CPU與存儲器(內存)之間通過北橋來完成功能交互,北橋是高速總線;與IO設備之間通過南橋來完成功能交互,南橋是低速總線,匯總后連入北橋。
IO也有一些高速的接口例如PCIE可以讓IO設備直接連入北橋。
各個設備之間速度在數量級上的概念
CPU、存儲器、IO設備之間的速率各不相同。按照速度快慢:CPU——存儲器——IO
設備性能相關
為了完成數據交互,設備與設備間的速率相匹配,才能提升性能
CPU的速率最快,存儲器的速率比較慢,所以CPU為了可以更好地與存儲器完成數據交互,提升性能,可以添加中間件(緩存)。
獲取命令的使用幫助
命令分為兩種:外部命令及內部命令
內部命令:
help COMMAND
例:help cd
外部命令
1)命令自帶簡要格式的使用幫助 (簡單的使用說明)
例:ls –help
2)使用手冊
man +COMMAND
位置:/usr/share/man
例:man ls
3)獲取命令的在線文檔
info COMMAND
4)很多應用程序會自帶幫助文檔
一般存放在 /usr/share/doc/APP-VERSION
5) 主流的發行版官方文檔
http://www.redhat.com/doc
6)程序的官方文檔
官方站點上的“Document”
7) 善用搜索引擎
man手冊章節說明
man手冊下的各個章節的含義如下
位置: /usr/share/man
man1,man2..
1.用戶命令
2.系統調用
3.C庫調用
4.設備文件及特殊文件
5.文件格式
6.游戲使用幫助
7.雜項
8.管理工具及守護進程
可以通過查看指定章節的手冊信息
man 數字 COMMADN
例:man 5 passwd 查看man手冊中第五章節的passwd命令幫助
Linux的FHS
FHS:Filesystem Hierarchy Standard
通過FHS,規范了每個不同的目錄下應該存放什么文件。
/bin:所有用戶可用的基本命令程序文件
/sbin:供系統使用的工具程序
/boot: Static files of the boot loader 引導加載器必須用到的各靜態文件:kerenl、initramfs(initrd),grub
/dev :Devices files 存儲特殊文件或者設備文件
/etc:主機特有的系統配置文件(靜態)
/home:用戶家目錄(可選)
/lib: 為系統啟動或根文件系統上的應用程序(/bin,/sbin)提供共享庫及為內核提供內核模塊
/lib64;64位的庫
/media:
/mnt:其他文件型的臨時掛載點
/opt:附加應用程序的安裝位置
/root:root用戶的家目錄
/srv: 當前主機為服務提供的數據
/tmp:存放臨時文件
/usr:全局共享的只讀數據路徑 usr Hierarchy
bin ,sbin
lib lib64
include:C程序用到的頭文件
share:架構特有的文檔存放位置 命令手冊頁,自帶文檔
/local:hierarchy
/usr/local:hierarchy.讓系統管理員安裝本地應用程序,也通常用于安裝第三方程序
/var:hierarchy 存儲經常發生變化的數據的目錄
lib
local
lock
log
opt
run
spool
tmp
/proc:虛擬文件系統,用來為內核及進程存儲其相關信息:他們大多為內核參數,例如:net.ipv4_forward 虛擬為net/ipv4/ip_forward
/sys:sysfs 虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑,其主要作用在于為管理linux設備提供了一種統一模型的接口
* /proc 和 /sys 都是基于內存的,也就是說已關機就沒了
Linux上命令的使用格式皆一些常規命令的用法
Linux命令的語法通用格式
COMMAND OPTIONS ARGUMENTS
命令(COMMAND):
一般分為兩類:外部命令及內部命令
內部命令:由shell程序自帶的命令
外部命令:獨立的可執行文件,文件名即命令名
選項(OPTIOS):
指定命令的運行特性,改變了命令的實現功能及表現形式
選項分兩種:
-char 短選項
–word 長選項
長選項,如果有選項參數的話通過“=”來進行連接,中間沒有空格
短選項,如果有選項參數的話通過“space” 來進行連接,有時可以沒有空格
多個短選項間可以合并,長選項不行
選項與選項間通過“space”來隔開
參數(argtments):
命令的作用對象
不同的命令帶的參數的格式不一樣,有些命令可以同時帶多個參數(中間以空格隔開)
Linux常用命令
ifconfig,echo,tty,startx ,export,pwd,history,shutdown,poweroff,reboot,hwclock,date
ifconfig:
用來顯示網卡的配置信息或者為網卡進行配置
用法:
ifconfig [interface]
ifconfig interface [aftype] options | address …
示例:
ifconfig [eth0]
顯示系統的網卡配置信息,如果帶參數eth0,則只顯示eth0一塊網卡的信息
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D3:C4:B2
inet addr:192.168.122.3 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed3:c4b2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32894 errors:0 dropped:0 overruns:0 frame:0
TX packets:2849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4187189 (3.9 MiB) TX bytes:223104 (217.8 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:65536 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1272 (1.2 KiB) TX bytes:1272 (1.2 KiB)
ifconfig interface [aftype] options | address …
可以為網卡 配置IP,掩碼等參數
[root@localhost ~]# ifconfig lo 127.0.0.1 netmask 255.0.0.0 設置lo的網卡IP地址為127.0.0.1 掩碼為255.0.0.0
[root@localhost ~]# ifconfig eth0 up 開啟eth0網卡
[root@localhost ~]# ifconfig eth0 down 關閉eth0網卡
* 用ifconfig命令配置的信息在shell進程關閉后消失
echo:命令回顯
用法:
echo [SHORT-OPTION]… [STRING]…
選項:
-e 激活轉義字符
示例:
[root@localhost ~]# echo "hello world"
hello world
[root@localhost ~]# echo "hello world\n"
hello world\n
[root@localhost ~]# echo -e "hello world\n"
hello world
tty:顯示當前的終端
用法:
tty [options]
示例:
[root@localhost ~]# tty
/dev/pts/1
startx:啟動GUI
用法:
startx [options]
export:導入或者顯示環境變量,和declare -i 命令類似
用法:
1.export name=VALUE 賦予一個值給環境變量name
*用export命令導入的環境變量在shell進程結束后被釋放
2.export 查看當前的環境變量
示例:
[root@localhost ~]# export name=1
[root@localhost ~]# export
pwd:顯示當前的工作目錄
用法:
pwd [OPTION]…
示例:
[root@localhost tmp]# pwd
/tmp
history:用戶之前執行過的命令歷史
示例:
[root@localhost ~]# history 顯示當前內存中保存中的命令歷史
1 whereis tree
2 man tree
3 man whereis
[root@localhost ~]# history -c 清空命令歷史
[root@localhost ~]# history
1 history
[root@localhost tmp]# history -r 把歷史命令從文件中讀取并載入內存
[root@localhost tmp]# history -w 把內存中的歷史命令載入文件中
[root@localhost tmp]# history 5 顯示最近的5條歷史命令
12 ls -ld /tmp/
13 history
14 history -w
15 history
16 history 5
[root@localhost tmp]# !12 執行歷史命令列表中的第12個命令
[root@localhost tmp]# ??!執行上次命令
[root@localhost tmp]# !l 執行命令列表中最近l個以l開頭的命令
在環境變量中有3個和hisory相關的環境變量,可以修改他們的值來做到定制history功能
HISTSIZE:shell保留的history條目,默認1000
HISTFILE: 歷史命令保存的文件 歷史命令被寫入文件之后會被永久保存。 /root/.bash_history
HISTFILESIZE:歷史命令文件的大小,默認1000
shutdown:關機
shutdown [OPTION]… TIME [MESSAGE]
用法:
[root@localhost tmp]# shutdown -h now 立刻關機
[root@localhost tmp]# shutdown -r now 立刻重啟
[root@localhost tmp]# shutdown -c 取消正在執行的關機的操作
poweroff:關機
reboot:重啟
hwclock:顯示或設定硬件時鐘
用法:
hwclock [functions] [options]
示例:
[root@localhost test.GvCZXb]# hwclock
2016年08月14日 星期日 22時24分00秒 -0.878324 seconds
[root@localhost test.GvCZXb]# hwclock -s 以硬件時間為準,把系統時間調整和硬件時間相同
[root@localhost test.GvCZXb]# hwclock -w 以系統時間為準,把硬件時間調整和系統時間相同
date
顯示日期時間以及修改系統時間
用法:
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
示例:
[root@localhost test.GvCZXb]# date 顯示當前系統時間
2016年 08月 14日 星期日 22:31:03 CST
[root@localhost test.GvCZXb]# date 081422322016.30 修改當前系統時間
2016年 08月 14日 星期日 22:32:30 CST
[root@localhost test.GvCZXb]# date +%F 顯示年–月–日
2016-08-14
[root@localhost test.GvCZXb]# date +%Y 顯示年份
2016
[root@localhost test.GvCZXb]# date +%T 顯示時間
22:34:51
[root@localhost test.GvCZXb]# date +%m 顯示月份
08
[root@localhost test.GvCZXb]# date +%d 顯示日期
14
[root@localhost test.GvCZXb]# date +%H 顯示小時
22
[root@localhost test.GvCZXb]# date +%M 顯示分鐘
36
[root@localhost test.GvCZXb]# date +%S 顯示妙
11
[root@localhost test.GvCZXb]# date +%s 顯示從UTC時間,從1970年1月1號0點0分距現在多少秒
1471185433
原創文章,作者:N22-蘇州-striker,如若轉載,請注明出處:http://www.www58058.com/35478
寫的很好,排版還可以在漂亮一點,加油,沒寫全把