天天看點

linux基礎知識總結(五)

2011年1月2号整理

根據RH131課程整理

通路系統常用接口:CLI 、GUI。

CLI(指令行):提供一個輸入指令的提示符而實作對系統的通路。

顯示裝置

實體終端:(裝置檔案)——>/dev/tty0

直連到linux系統所直接安裝到的那台主機上的那台顯示裝置。

虛拟終端:/dev/tty1-tty6 (ctrl+Alt+F1——F6)

在同一個主機上,提供六個不同接口來通路同一個系統,對實體終端的虛拟。

程式:mingetty 在系統初始化完成以後,根據/etc/inittab這個檔案的訓示,結合init程序,初始化啟動幾個終端的那個程式。

串行終端:通過串行鍊路裝置接入進來對系統進行通路的裝置

(裝置檔案)/dev/ttyS* /dev/xvc0(虛拟機上的串行終端)

程式: agetty 啟動串行終端

系統控制台:/dev/console 邏輯裝置,

系統預設的邏輯終端裝置,在系統核心在初始化過程中虛拟出來的,要想顯示出來必須跟實體裝置關聯起來(預設/dev/tty0或/dev/fb0(虛拟機上))。預設情況下系統的啟動資訊都是到系統控制台上去的。

更改設定:console=ttyS0 consle=ttys1

可以設定多個參數,但隻有最後一個才會顯示啟動資訊。

模拟終端:(裝置檔案)——>/dev/pts/N

在X window打開的終端,

通過SSH遠端連接配接上去的terminal

通過,telnet遠端連接配接上去的terminal

tty 檢視當所對應的終端裝置檔案

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368344tS9a.jpg"></a>

通過screen打開不同的螢幕,類同于在X-window上打開多個視窗的機制

GUI(圖形使用者界面)

X protocol(C/S),x386(商業實作) XFree86(開源實作)——&amp;gt;最新版X11R7 R(release)

Xorg漸漸取代XFree86

XFree86,Xorg隻是提供了驅動顯示卡的驅動程式,并提供了幾個額外的子產品,讓顯示卡能夠真正工作起來,為圖形應用提供低層架構的工具。

視窗管理器

桌面管理器:提供所有視窗的母視窗。Gnome 、KDE

X &amp;——&amp;gt; xterm ——&amp;gt;twm &amp;(視窗管理器)——&amp;gt;gdm(登陸管理器)——&amp;gt;gnome-session(桌面)

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368344r8Eh.jpg"></a>

檢視X server 版本号

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368347dehw.jpg"></a>

prefdm:啟動一個圖形界面

Xorg.Conf的配置内容:

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368350ebwv.jpg"></a>

screen:支援在字元界面下打開多個模拟終端

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368351AMHd.jpg"></a>

權限的傳遞:

使用者:管理者(root) 普通使用者

sudo

/etc/sudoers 定義哪些使用者可以在哪些主機上以什麼身份執行哪些指令 who where=(who) what

例如: A 192.168.0.0/24=(root) /sbin/ofcpnfig

RH131

可以使用visudo指令編輯

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368354N3QP.jpg"></a>

百分号表示是一個系統群組

被添加的使用者在使用指令執行時需要在前邊加上sudo 關鍵字

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368357HrEY.jpg"></a>

預設五分鐘内執行sudo指令不用輸入密碼,很人性化的。

定義一個使用者組:User_Alias NETWORK=A,B,C組名必須是大寫英文字母

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368358lu8V.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368358NPbE.jpg"></a>

lecture 2

作業系統是實體主機的虛拟抽象

yum yellow update manger

rpm redhat package manager——&amp;gt;rpm package manager

命名格式:package_name-version-release.arhc.rpm

rpm –i 或 –install

-v 顯示安裝進度

-h 以安裝資訊列顯示安裝進度

解除安裝軟體包 rmp –e packagenamne(隻需要指定軟體包的名字)

--nodeps忽略依賴關系

--replacepkgs 重新裝一次,替換原來的包,達到修複的目的

--force強行安裝

--test 測試一下

--justdb 僅僅更新資料庫

更新 rpm –F更新 純粹更新,在原來的基礎上進行

rpm –U更新 原來的包存不存在都沒關系 --oldpackage 降級安裝

核心一般不能以更新的方式安裝

-q 查詢

-qi 列出詳細資訊

-ql 列出該軟體包的所有檔案與目錄所在完整名(list)

-qf 找出該檔案是由那個安裝包來的

-qc 列出安裝包完成後所生成的配置檔案

-qR 列出軟體包的依賴資訊

--querytags 定制查詢

--scripts 檢視安裝時執行了哪些腳本檔案

校驗:

-V pkg_name 檢視系統的安全資訊

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368359jZzp.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_12943683595Oh8.jpg"></a>

tripwire

數字簽名,保證資料完整性

單項加密:MD5

rpm --initdb 更新資訊的 不會覆寫原有資料庫

rpm --rebuilddb 無論如何都要覆寫原有資料庫

rpm –qa gpg-pubkey檢視系統公鑰

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

rpm –K package_name 校驗

--checksig package_name 校驗

三種檔案共享方式:file:/// 、 http:// 、ftp://

yum –y install pkg_name 不提示,預設安裝

-y reintall 重裝

yum remove 解除安裝軟體包

update 更新軟體包 可以更新kernel

yum list all 列出所有的軟體包

yun list installed 列出安裝過的

yum provides|whatprovides 誰提供的

grouplist 列出已裝組和所有可用組

groupinstall 組安裝

localinstall

建立一個本地yum源

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368360kDMc.jpg"></a>

直接将CD光牒上的軟體包作為yum源

先挂載CD光牒

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368362GjGY.jpg"></a>

createrepo 直接建立一個yum源

Lecture 7

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368365r49v.jpg"></a>

硬碟盤面結構示意圖

硬碟片旋轉一圈所畫出來的就是磁道(track)

所有硬碟片上相同半徑的那個磁道就組成了柱面(cylinder)

資料是按照柱面來存取的。

第0磁道上的0扇區不能被分區。用于表示目前磁盤上有幾個分區以作業系統所在的分區,成為引導扇區,MBR (主引導記錄) 512B 前446B放置一段程式,成為boot loader

引導加載器,後64B用來标示分區,每16B用來标示一個分區

硬碟最小的存儲機關是扇區(512B),資料所存儲的最小機關是邏輯塊(block)

每個分區就是一個檔案系統,而每個檔案系統開始位置的那個塊就稱為超級塊(superblock)。超級快的作用是存儲檔案系統的大小,空的和填滿的塊,以及它們各自的總數和其他諸如此類的資訊。

檢視目前系統上所有的塊儲存設備及分區資訊:fdisk –l

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368368ChGK.jpg"></a>

* 表示在此分區上有作業系統

檢視系統分區資訊:

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368369UuYE.jpg"></a>

HAL 硬體抽象層:實時探測核心中新插入的裝置,将新插入的裝置屬性資訊,通過HAL将這些資訊導入到使用者空間的程序中去。

hal-device 輸出整個系統上所有的硬體裝置資訊

fdisk /dev/sda 對硬碟裝置進行分區

mkfs——&amp;gt;make filesystem

-t type 類型

mkfs –t ext3= mkfs.ext3

mke2fs 建立ext2檔案系統

-j 格式化為ext3

-l 設定卷标

-b 指定塊大小 預設1024B=1K

-c 慢速格式化

-i 指定位元組和inode比率

-n 指定一個分區上inode個數

-m為超級使用者在目前分區上所預留的空間大小的比率 預設百分之五

mount [options] [-o options] /dev/device /path/to/mount_point

不加參數顯示目前系統上已經挂載的裝置和類型

umount /dev/device [/path/to/mount_point]

-o rw 讀寫挂載 (自定義選項)

-a 挂載/etc/fstab 所有裝置

remount 重新挂載

mount –n –o remount,rw 重新挂載

gnome-mount 自動挂載 預設在media目錄下

gnome-umount 解除安裝

partprobe /dev/sda 更新核心中分區資訊

如果需要自動挂載的話需要修改/etc/fstab

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368370MPMe.jpg"></a>

要挂載的裝置 挂載點 檔案系統類型 挂載選項(-o指定) 是否需要轉儲(1備份) 自檢辨別(根分區為1 其他分區為2)

lecture 5

系統初始化

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368371oXl4.jpg"></a>

顯示系統版本号

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368372THgH.jpg"></a>

uname –a 顯示所有資訊

-r 顯示核心發行号

-n 顯示目前系統名稱

-v 顯示核心版本(什麼時候編譯的)

-p 顯示系統架構

運作級别 runlevel 在啟動的時候所啟動的服務不一樣

0——6

檢視運作級别

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368373Cigu.jpg"></a>

init 0 關機

init 6 重新開機

init 3 字元界面正常模式

init 5 圖形界面正常模式

init 1 單使用者模式 不啟動網絡服務 用于修複系統 不需要使用者認證登入

init 2 多使用者模式 不啟動NFS服務

init 4 保留

s S single:單使用者 /etc/rc.d/rc.sysinit

emergency: 緊急模式,不會讀取/etc/rc.d/rc.sysinit 用于系統修複

init N 切換運作級别

chkconfig –list 列出所有的服務在不同運作級别下開啟情況

chkconfig –level nnnnnnn service_name on|off 特定的關掉某個級别下的服務

沒加級别預設是2.3.4.5

ntsysv –level 2345

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368373uvkP.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368376WDkp.jpg"></a>

開機啟動流程

1. 加載BIOS資訊,并取得第一個啟動裝置的代号;

2. 讀取第一個啟動裝置的MBR的引導加載程式(lilo,grub等)的啟動資訊;

3. 加載核心作業系統的核心資訊,核心開始解壓縮,并嘗試驅動所有的硬體裝置;

4. 核心執行init程式并擷取運作資訊;

5. init執行/etc/rc.d/rc.local檔案;

6. 啟動核心的外挂子產品(/etc/modprobe.conf);

7. init執行運作的各個批處理檔案(scripts);

8. init執行/etc/rc.d/rc.loacl檔案;

9. 執行/bin/login程式,等待使用者登入;

10. 登入之後開始以shell控制主機。

BIOS(Basic Input Output System)記錄了主機闆的晶片組與相關的設定,如CPU與接口裝置的通信頻率、啟動裝置的搜尋順序、硬碟大小與類型、系統時間、外部總線是否啟動即插即用、各接口裝置的I/O位址,以及與CPU通信的IRQ中斷等資訊。

引導加載程式的設定視窗

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368379RsbV.gif"></a>

BIOS與引導加載程式及核心加載流程示意圖

init處理系統初始化流程(/etc/rc.d/rc.sysinit)

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368382mZGV.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368386FQ1J.jpg"></a>

/etc/rc.d/rc.sysinit主要任務有:

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368391XP5a.jpg"></a>

自定義核心子產品的加載可以将整個子產品寫入到/etc/sysconfig/modules/*.modules中。

啟動系統服務與相關啟動設定檔案(/etc/rc.d/rc.n 與/etc/sysconfig)

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368394sP9W.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368397hkxq.jpg"></a>

目錄裡邊檔案全是軟連結,是以/etc/init.d與/etc/rc.d/init.d是一樣的。

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_12943684009BsQ.jpg"></a>

以S為開頭的檔案,為啟動時需要“啟動,start”的服務

以K開頭的檔案,為“關機時需要關閉的服務,stop”的檔案連結

S與K後面的數字,表示該檔案的執行順序 範圍0——99 數字越小,優先級越高

使用者自定義引導啟動程式(/etc/rc.d/rc.local)

任何想要在開機時執行的工作,直接寫入到/etc/rc.d/rc.local。該工作就會在啟動的時候自動加載。比如自己制作的shell腳本。

根據/etc/inittab 設定加載終端或X-Window界面

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_12943684016pof.jpg"></a>

運作等級為2345時,都會執行/sbin/mingetty 而且執行6個。

mingetty 啟動虛拟終端

如果運作級别為runlevel 5 init還會執行/etc/X11/prefdm –nodaemon 指令,啟動X-window。

對子產品進行一些參數的設計 /etc/modprobe.conf

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368402KkCi.jpg"></a>

/etc/sysconfig/* 再整個啟動過程中,在/etc/sysconfig讀取服務的相關設定

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368403b1oD.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_12943684061dah.jpg"></a>

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368409UvQS.jpg"></a>

核心與核心子產品

存放位置:

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368410l30L.jpg"></a>

引導加載程式:Grub

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368411iqRL.jpg"></a>

grub對硬碟的代号設定于傳統的linux磁盤代号完全不同,如(hd0,0)

1. 硬碟代号以小括号()括起來

2. 硬碟以hd表示,後面接一組數字

3. 以“搜尋順序”作為硬碟的編号,而不是根據硬碟排線的排序

4. 第一個搜尋到的為0,第二個為1号,以此類推

5. 每個硬碟的第一個分區代号為0,以此類推

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368412ITk2.jpg"></a>

第一個硬碟MBR安裝處的硬碟代号是“(hd0)”,第一個硬碟的第一個分區的超級塊代号是“(hd0,0)”,第一個硬碟的第一個邏輯分區的超級塊代号是“(hd0,4)”。

(0——3)——&amp;gt;(P+E)

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368413dt4t.jpg"></a>

如果/boot單獨分區,則/vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

如果boot在根目錄下,則/boot/vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

核心=核心核心+子產品(kernel object)

核心本身就是子產品化設計,隻提供了最核心的功能,核心上有很多接口,可以去加載對應的子產品,其他的功能都被做成了二進制的子產品,放在/lib/modules/`uname –r`/

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368414RpWI.jpg"></a>

kernel裡邊的内容:

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368415nhfX.jpg"></a>

lsmod 顯示目前已加載子產品

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368416h1pM.jpg"></a>

modprobe 子產品名 加載子產品

-r 子產品名 解除安裝子產品

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_12943684166gaz.jpg"></a>

ldd /bin/ls 檢視一個指令執行過程中需要調用哪些庫

<a href="http://lyp0909.blog.51cto.com/attachment/201101/7/508999_1294368417p27L.jpg"></a>

本文轉自 490999122 51CTO部落格,原文連結:http://blog.51cto.com/lyp0909/473707,如需轉載請自行聯系原作者