Linux操作系統(tǒng)的基本常識詳解
Linu_操作系統(tǒng)或許你很熟悉,但是你對Linu_操作系統(tǒng)的基本常識又認(rèn)識多少呢?下面由學(xué)習(xí)啦小編為大家整理了Linu_操作系統(tǒng)的基本常識詳解的相關(guān)知識,希望對大家有幫助!
Linu_操作系統(tǒng)的基本常識詳解
1、系統(tǒng)組成部分
Linu_系統(tǒng)內(nèi)核,shell(命令編譯器),文件系統(tǒng)和應(yīng)用程序四部分組成。
2、Linu_ 內(nèi)核由哪些部分組成
進(jìn)程管理,文件系統(tǒng)管理,網(wǎng)絡(luò)功能,內(nèi)存管理,驅(qū)動程序,安全功能,進(jìn)程間通信等模塊構(gòu)成
3、進(jìn)程鏈表
進(jìn)程鏈表是一個雙向鏈表,進(jìn)程鏈表把所有進(jìn)程的描述符鏈接起來。每個task_struct 結(jié)構(gòu)都包含一個list_head類型的tasks字段,這個類型的orev和ne_t字段分別指向前面和后面的task_struct元素。
4、Linu_ 創(chuàng)建子進(jìn)程及子線程
(1) fork是重量級調(diào)用,因?yàn)樗⒘烁高M(jìn)程的一個完整副本,然后作為子進(jìn)程。
(2) vfork1類似于fork,但并不創(chuàng)建父進(jìn)程數(shù)據(jù)的副本,相反,父子進(jìn)程共享數(shù)據(jù),節(jié)省了大量的CPU。vfork設(shè)計用于子進(jìn)程形成后立即執(zhí)行e_ecve系統(tǒng)調(diào)用,在子進(jìn)程退出或開始新程序之前,父進(jìn)程處于堵塞狀態(tài)。
(3) clone用于產(chǎn)生線程,可以堆父子進(jìn)程之間的共享、復(fù)制進(jìn)行精確控制。
所有的3個fork機(jī)制最終都調(diào)用了kernel/fork.c中的do_fork函數(shù),在do_fork中,大多數(shù)工作都是由copy_process函數(shù)完成的。
5、COW
父進(jìn)程在fork 出子進(jìn)程后,父子進(jìn)程共享內(nèi)存數(shù)據(jù),如果子進(jìn)程要修改內(nèi)存數(shù)據(jù) ,Copy一份副本給子進(jìn)程做修改
6、進(jìn)程的優(yōu)先級
linu_的進(jìn)程優(yōu)先級分:
1. 實(shí)時優(yōu)先級(跟內(nèi)核有關(guān)),范圍0-99,數(shù)字越小優(yōu)先級越低。top看到的RT的都是實(shí)時優(yōu)先級。
2. 靜態(tài)優(yōu)先級(跟用戶有關(guān)),范圍100-139, 數(shù)字越小優(yōu)先級越高 static_prio = MA__RT_PRIO + nice + 20,其中MA__RT_PRIO = 100,那么取值區(qū)間為[100, 139];
實(shí)時優(yōu)先級比靜態(tài)優(yōu)先級高。
nice是一個優(yōu)先值,范圍-20-19 這個值越小,那么對應(yīng)的進(jìn)程優(yōu)先級越高,在top里,PR-NI=20
默認(rèn)啟動一個進(jìn)程,nice是0,也可以在執(zhí)行這個進(jìn)程時指定nice值:
nice -n -5 sleep 100
使用renice可以調(diào)整這個值:
renice 10 pid
如下命令可以看到實(shí)時優(yōu)先級和靜態(tài)優(yōu)先級的級:
ps -e -o rtprio,pri,nice,cmd
從調(diào)度的角度,Linu_把進(jìn)程分成140個優(yōu)先等級,其中0級到99級是分給實(shí)時進(jìn)程的,100級到139級是分給非實(shí)時進(jìn)程的。每個優(yōu)先等級都有一個運(yùn)行隊(duì)列,這樣就有140個運(yùn)行隊(duì)列。運(yùn)行時間片結(jié)束會 送入休息隊(duì)列 也有140 個休息隊(duì)列
Linu_ 內(nèi)核,搶占式多任務(wù),高優(yōu)先級槍戰(zhàn)低優(yōu)先級,但必須在固定的時間點(diǎn)上
守護(hù)進(jìn)程: daemon 內(nèi)核在系統(tǒng)的引導(dǎo)過程中啟動跟終端無關(guān)
用戶進(jìn)程: 用戶通過終端打開的進(jìn)程
注意:也可以在前臺啟動的進(jìn)程送到后臺以守護(hù)進(jìn)程運(yùn)行
7、Linu_ 權(quán)限設(shè)置:
•Kernel
–系統(tǒng)啟動時將內(nèi)核裝入內(nèi)存
–管理系統(tǒng)各種資源
•Shell
–用戶界面,提供用戶與內(nèi)核交互處理接口
–是命令解釋器,提供強(qiáng)大的編程環(huán)境
–bash,ash,pdksh,tcsh,ksh,sh,csh,zsh….
•Utility
–提供各種管理工具,應(yīng)用程序
8、進(jìn)程間通信方式
1. 管道(pipe),流管道(s_pipe)和有名管道(FIFO)
2. 信號(signal)
3. 消息隊(duì)列
4. 共享內(nèi)存
5. 信號量
6.套接字(socket)
7.RPC
8.Socket
9、進(jìn)程的狀態(tài)
運(yùn)行態(tài),就緒態(tài),睡眠態(tài)(可中斷,不可終端) 停止態(tài),僵死態(tài)
可中斷睡眠: 叫醒之后可以立馬工作
不可終端睡眠:進(jìn)程等待某種資源,即使叫醒也不能工作
僵死態(tài): 已經(jīng)執(zhí)行完任務(wù)等待回收的子進(jìn)程
10、Linu_ 文件系統(tǒng)
Linu_使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu),在安裝的時候,安裝程序就已經(jīng)為用戶創(chuàng)建了文件系統(tǒng)和完整而固定的目錄組成形式,并指定了每個目錄的作用和其中的文件類型。
/bin 二進(jìn)制可執(zhí)行命令
/dev 設(shè)備特殊文件
/etc 系統(tǒng)管理和配置文件
/etc/rc.d 啟動的配置文件和腳本
/home 用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示
/lib 標(biāo)準(zhǔn)程序設(shè)計庫,又叫動態(tài)鏈接共享庫,作用類似windows里的.dll文件
/sbin 系統(tǒng)管理命令,這里存放的是系統(tǒng)管理員使用的管理程序
/tmp 公用的臨時文件存儲點(diǎn)
/root 系統(tǒng)管理員的主目錄(呵呵,特權(quán)階級)
/mnt 系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng)。
/lost+found 這個目錄平時是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無家可歸”的文件(windows下叫什么.chk)就在這里
/proc 虛擬的目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個目錄來獲取系統(tǒng)信 息。
/var 某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件
/usr 最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個目錄。其中包 含:
/usr/_11R6 存放_ window的目錄
/usr/bin 眾多的應(yīng)用程序
/usr/sbin 超級用戶的一些管理程序
/usr/doc linu_文檔
/usr/include linu_下開發(fā)和編譯應(yīng)用程序所需要的頭文件
/usr/lib 常用的動態(tài)鏈接庫和軟件包的配置文件
/usr/man 幫助文檔
/usr/src 源代碼,linu_內(nèi)核的源代碼就放在/usr/src/linu_里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的庫
文件系統(tǒng)指文件存在的物理空間,linu_系統(tǒng)中每個分區(qū)都是一個文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。linu_會將這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)按一定的方式形成一個系統(tǒng)的總的目錄層次結(jié)構(gòu)。一個操作系統(tǒng)的運(yùn)行離不開對文件的操作,因此必然要擁有并維護(hù)自己的文件系統(tǒng)。
Llinu_文件系統(tǒng)使用索引節(jié)點(diǎn)來記錄文件信息
掛載點(diǎn)必須是一個目錄。
2、一個分區(qū)掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內(nèi)容將不可用。
對于其他操作系統(tǒng)建立的文件系統(tǒng)的掛載也是這樣。但是需要理解的是:光盤、軟盤、其他操作系統(tǒng)使用的文件系統(tǒng)的格式與linu_使用的文件系統(tǒng)格式是不一樣的。光盤是ISO9660;軟盤是fat16或e_t2;
光驅(qū)和軟驅(qū)是不自動掛載的,參數(shù)設(shè)置為noauto。(如果你非要設(shè)成自動掛載,你要確保每次開機(jī)時你的光驅(qū)和軟驅(qū)里都要有盤
Linu_ 系統(tǒng)上查看及管理工具
pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,nohup,nice,renicekillall
Linu_操作系統(tǒng)的常見問題及解答
1.Linu_開機(jī)啟動流程詳細(xì)步驟是什么?系統(tǒng)安裝完,忘記密碼如何破解?
答:
開機(jī)步驟由a--h
a、首先是bios加電自檢、初始化,這個過程會檢測相關(guān)硬件(cpu、內(nèi)存、顯卡、硬盤等),然后讀取一個啟動順序,以硬盤為例,會讀取硬盤中的MBR。
b、加載內(nèi)核 讀取/boot里邊的配置文件。
c、啟動初始化進(jìn)程,開始運(yùn)行/sbin/init
d、讀取/etc/inittab確定運(yùn)行級別
e、根據(jù)/etc/rc.d/rcN.d加載開機(jī)啟動程序,rcN.d都是鏈接文件,都指向/etc/rc.d/init.d 再運(yùn)行/etc/rc.d/rc.local
f、用戶登錄(3種方式 ssh、命令行、圖形化)
g、進(jìn)入login shell,以命令行為例,首先讀取/etc/profile這個全局配置文件,然后再針對當(dāng)前用戶讀取家目錄中的 ~/.bash_profile和~/.bash_login和~/.profile
h、最后一步就是打開non-login shell,進(jìn)入圖形化后 手動新建一個終端,但這個shell不讀取/etc/profile
忘記密碼
a、重啟系統(tǒng),在GRUB界面,選取忘記密碼的系統(tǒng),按e鍵進(jìn)入編輯模式
b、選項(xiàng)Kernel.....按e鍵進(jìn)行編輯
c、在編輯界面rhgb quiet后加空格,然后輸入"single"或"1" 回車
d、按b啟動 進(jìn)入單用戶模式
f、進(jìn)入系統(tǒng)后passwd回車輸入新密碼(如果有selinu_,先暫時關(guān)閉 setenforce 0)
2.企業(yè)中l(wèi)inu_服務(wù)器系統(tǒng)分區(qū)標(biāo)準(zhǔn)是什么?(硬盤為300G,內(nèi)存16G)
答:
/boot 200M
/swap 16G
/ 70G
/data 剩下的全部空間
3.某一天突然發(fā)現(xiàn)Linu_系統(tǒng)文件只讀,該怎么辦呢?完整操作步驟。
答:
首先把系統(tǒng)關(guān)機(jī),然后以光盤啟動進(jìn)入救援模式(linu_ rescue),執(zhí)行"fsck.e_t3 -y /dev/sda2" (假如只讀的分區(qū)類型為e_t3,分區(qū)為/dev/sda2)
4.安裝一臺系統(tǒng)使用DVD光盤安裝,如何安裝50臺Linu_系統(tǒng)如何安裝呢?思考一下。
答:
a、可以多用幾張DVD一臺一臺的安裝。
b、可以用Kickstart批量安裝(客戶端從網(wǎng)絡(luò)啟動)
5.用虛擬機(jī)安裝了一臺Linu_系統(tǒng),突然想克隆一臺服務(wù)器,克隆后發(fā)現(xiàn)無法上網(wǎng),如何解決?
答:
a、編輯網(wǎng)卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,將HWADDR和MAC地址這兩行刪除。
b、修改文件/etc/udev/rules.d/70-persistent-net.rules,刪除之前eth0所在的行,將下一行eth1修改為eth0
c、reboot
6.Linu_網(wǎng)卡配置文件路徑是什么?要使服務(wù)器上外網(wǎng),必須滿足的條件有哪些?需要配置什么?
答:
網(wǎng)卡配置文件路徑:/etc/sysconfig/network-scripts/ifcfg-eth__表數(shù)字)
要上外網(wǎng)需要:能夠鏈接internet的網(wǎng)線(或無線)、有網(wǎng)卡
需要配置:IP、netmask、gateway、dns(自動或手動都o(jì)k,服務(wù)器一般自動)
7.一般可以使用什么軟件遠(yuǎn)程linu_服務(wù)器?通過什么上傳文件和下載文件?
答:
遠(yuǎn)程連接linu_的軟件:_shell、SecureCRT、putty、vnc(圖形化)
上傳和下載文件:lrzsz、sftp
8./mnt目錄主要用于什么?/root目錄跟root用戶有什么關(guān)系?/根目錄與/boot目錄有什么聯(lián)系?
答:
/mnt一般用于掛載外接設(shè)備
/root是一個目錄,是root用戶的家目錄
/boot目錄是/目錄下的一個子目錄
9.某一天誤操作,執(zhí)行了rm -rf _,會有哪些情況發(fā)生?請舉例。
答:
a、如果當(dāng)前目錄為"/tmp" ,那么這個目錄下的東西會全部刪除(默認(rèn)不包含隱藏文件)
b、如果當(dāng)前目錄為"/",那么系統(tǒng)上的數(shù)據(jù)將會丟失,且無法啟動,系統(tǒng)崩潰(謹(jǐn)慎使用這個命令)