电竞比分网-中国电竞赛事及体育赛事平台

分享

只要你認(rèn)真看完一萬(wàn)字??Linux操作系統(tǒng)基礎(chǔ)知識(shí)??分分鐘鐘都吊打面試官《??記得收藏??》

 菌心說 2021-08-12

目錄

??????開講之前我們先慶祝我國(guó)贏得38金牌。??????中國(guó)加油!!??????

在這里插入圖片描述
在這里插入圖片描述

??開講啦?。。?!

在這里插入圖片描述

??1、前言

操作系統(tǒng)演進(jìn)如下:

1、無(wú)操作系統(tǒng)

人工操作,用戶獨(dú)占,CPU等待人工操作,資源利用率很低。

2、批處理系統(tǒng)

無(wú)需等待人工操作,批量輸入任務(wù),資源利用率提升,多道程序設(shè)計(jì)。

3、分時(shí)系統(tǒng)

人-機(jī)交互,多用戶共享,及時(shí)調(diào)試程序,資源利用率提升。

多道程序設(shè)計(jì)設(shè)計(jì):

早起批處理系統(tǒng)只能一次處理一個(gè)任務(wù),多道程序設(shè)計(jì)使得批處理系統(tǒng)可以一次處理多個(gè)任務(wù)。對(duì)多道程序的管理是操作系統(tǒng)的重要功能。

  • 多道程序設(shè)計(jì)是指在計(jì)算機(jī)內(nèi)存中同時(shí)存放多個(gè)程序。

  • 多道程序在計(jì)算機(jī)的管理程序之下相互穿插運(yùn)行。

操作系統(tǒng)對(duì)多道程序的管理分為五大功能:

  • 進(jìn)程管理

  • 存儲(chǔ)管理

  • 作業(yè)管理

  • 文件管理

  • 設(shè)備管理

??2、操作系統(tǒng)概述

??2.1、操作系統(tǒng)概念

操作系統(tǒng)是管理計(jì)算機(jī)硬件和軟件資源的計(jì)算機(jī)程序;管理配置內(nèi)存、決定資源供需順序、控制輸入輸出設(shè)備等;操作系統(tǒng)提供
讓用戶和系統(tǒng)交互的操作界面。該定義不局限于計(jì)算機(jī)。

??2.2、操作系統(tǒng)的基本功能

處理器資源、存儲(chǔ)器資源、IO設(shè)備資源、文件資源。操作系統(tǒng)統(tǒng)一管理這這些計(jì)算機(jī)資源。

用戶無(wú)需面向硬件接口編程。

IO設(shè)備管理軟件,提供讀寫接口。

文件管理軟件,提供操作文件接口。

實(shí)現(xiàn)了對(duì)計(jì)算機(jī)資源的抽象。

提供了用戶于計(jì)算機(jī)之間的接口。

圖像窗口形式、命令形式、系統(tǒng)調(diào)用形式。

??2.3、操作系統(tǒng)的相關(guān)概念

并發(fā)性

并行是指兩個(gè)或多個(gè)事件可以在同一個(gè)時(shí)刻發(fā)生,并發(fā)是指兩個(gè)或多個(gè)事件可以在同一個(gè)時(shí)刻間隔發(fā)生。

對(duì)于單處理器來說,有兩個(gè)程序交替運(yùn)行,兩個(gè)程序并發(fā)關(guān)系;對(duì)雙處理器來說,兩個(gè)程序可同一時(shí)刻運(yùn)行,是并行關(guān)系,但是對(duì)于單個(gè)核心,依然是并發(fā)關(guān)系。

共享性
表現(xiàn)為操作系統(tǒng)中的資源可供多個(gè)并發(fā)的程序共同使用,這種共同使用的形式稱之為資源共享。

資源共享根據(jù)屬性可以分為兩種方式:互斥共享形式、同時(shí)訪問形式。

互斥共享: 當(dāng)資源被程序或進(jìn)程A占用時(shí),只有A使用完之后,其他才可以使用(如打印機(jī));

同時(shí)訪問: 某種資源在一段時(shí)間內(nèi)并發(fā)地被多個(gè)程序訪問。

虛擬性

虛擬性表現(xiàn)為把一個(gè)物理實(shí)體轉(zhuǎn)變?yōu)槿舾蓚€(gè)邏輯實(shí)體,虛擬的技術(shù)主要有時(shí)分復(fù)用技術(shù)空分復(fù)用技術(shù)

時(shí)分復(fù)用技術(shù): 資源在時(shí)間上進(jìn)行復(fù)用,不同程序并發(fā)使用,多道程序分時(shí)使用計(jì)算機(jī)的硬件資源,提高資源的利用率。其中虛擬處理器技術(shù)是借用多道程序設(shè)計(jì)為每個(gè)程序建立進(jìn)程,多個(gè)程序分時(shí)復(fù)用處理器;虛擬設(shè)備技術(shù)是物理設(shè)備虛擬為多個(gè)邏輯設(shè)備,每個(gè)程序占用一個(gè)邏輯設(shè)備,多個(gè)程序并發(fā)訪問。

空分復(fù)用技術(shù): 用來實(shí)現(xiàn)虛擬磁盤、虛擬內(nèi)存等,提高資源的利用率,提升編程效率。

異步性

表現(xiàn)為多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行;進(jìn)程在使用資源時(shí)可能需要等待或放棄;進(jìn)程的執(zhí)行并不是一氣呵成的,而是以走走停停的形式推進(jìn)。

??3、進(jìn)程管理之進(jìn)程實(shí)體

??3.1、為什么需要進(jìn)程

  • 進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。

  • 進(jìn)程作為程序獨(dú)立運(yùn)行的載體保障程序正常執(zhí)行。

  • 進(jìn)程的存在使得操作系統(tǒng)的資源利用率大幅提升。

??3.2、進(jìn)程的實(shí)體

標(biāo)識(shí)符,唯一標(biāo)記一個(gè)進(jìn)程,用于區(qū)別其他進(jìn)程。

狀態(tài),標(biāo)記進(jìn)程的進(jìn)程狀態(tài),如:運(yùn)行態(tài)。

程序計(jì)數(shù)器,程序即將被執(zhí)行的下一條指令的地址。

內(nèi)存指針,程序代碼、進(jìn)程數(shù)據(jù)相關(guān)指針。

上下文數(shù)據(jù),進(jìn)程執(zhí)行時(shí)處理器存儲(chǔ)的數(shù)據(jù)

IO狀態(tài)信息,被進(jìn)程IO操作所占用的文件列表。

記賬信息,使用處理器時(shí)間、時(shí)鐘數(shù)總和等。

進(jìn)程控制塊(PCB):

用于描述和控制進(jìn)程運(yùn)行的通用數(shù)據(jù)結(jié)構(gòu),記錄進(jìn)程當(dāng)前狀態(tài)和控制進(jìn)程運(yùn)行的全部信息。是使得進(jìn)程能夠獨(dú)立運(yùn)行的基本單位。

PCB是操作系統(tǒng)進(jìn)行調(diào)度進(jìn)程會(huì)被讀取的信息,PCB是常駐內(nèi)存的,存放在系統(tǒng)專門開辟的PCB區(qū)域內(nèi)。

進(jìn)程(Process)與線程(Thread):

一個(gè)進(jìn)程可以有多個(gè)線程。線程是操作系統(tǒng)進(jìn)行運(yùn)行調(diào)度的最小單位,包含在進(jìn)程之中,是進(jìn)程中實(shí)際運(yùn)行工作的單位。一個(gè)進(jìn)程可以并發(fā)多個(gè)線程,每個(gè)線程執(zhí)行不同的任務(wù)。


進(jìn)程線程
資源資源分配的基本單位不擁有資源
調(diào)度獨(dú)立調(diào)度的基本單位獨(dú)立調(diào)度的最小單位
系統(tǒng)開銷進(jìn)程系統(tǒng)開銷大線程系統(tǒng)開銷小
通信進(jìn)程IPC讀寫同一進(jìn)程數(shù)據(jù)通信

??4、進(jìn)程管理之五狀態(tài)模型

  • 就緒

  • 阻塞

  • 執(zhí)行

  • 創(chuàng)建

  • 終止

??4.1、就緒狀態(tài)

  • 當(dāng)進(jìn)程被分配到除CPU以外所有必要的資源后,只要再獲得CPU的使用權(quán),就可以立即運(yùn)行。

  • 其他資源都準(zhǔn)備好,只差CPU資源的狀態(tài)為就緒狀態(tài)。

  • 在一個(gè)系統(tǒng)中多個(gè)處于就緒狀態(tài)的進(jìn)程通常排成一個(gè)隊(duì)列。

??4.2、執(zhí)行狀態(tài)

  • 進(jìn)程獲得CPU,其程序正在執(zhí)行稱為執(zhí)行狀態(tài)。

  • 在單處理機(jī)中,在某個(gè)時(shí)刻只能有一個(gè)進(jìn)程是處于執(zhí)行狀態(tài)。

??4.2、執(zhí)行狀態(tài)

  • 進(jìn)程獲得CPU,其程序正在執(zhí)行稱為執(zhí)行狀態(tài)。

  • 在單處理機(jī)中,在某個(gè)時(shí)刻只能有一個(gè)進(jìn)程是處于執(zhí)行狀態(tài)。

??4.3、阻塞狀態(tài)

  • 進(jìn)程因某種原因如:其他設(shè)備未就緒而無(wú)法繼續(xù)執(zhí)行,從而放棄CPU的狀態(tài)稱為阻塞狀態(tài)。

??4.4、創(chuàng)建狀態(tài)

  • 創(chuàng)建進(jìn)程時(shí)擁有PCB但其他資源尚未就緒的狀態(tài)稱為創(chuàng)建狀態(tài)。

操作系統(tǒng)提供fork函數(shù)接口創(chuàng)建進(jìn)程

??4.5、終止?fàn)顟B(tài)

  • 進(jìn)程結(jié)束由系統(tǒng)清理或者歸還PCB的狀態(tài)稱為終止?fàn)顟B(tài)。
    在這里插入圖片描述

??5、進(jìn)程管理之進(jìn)程同步

需要同步的原因:實(shí)現(xiàn)進(jìn)程彼此之間的同步,對(duì)競(jìng)爭(zhēng)資源在多進(jìn)程間進(jìn)行使用次序的協(xié)調(diào),使得并發(fā)執(zhí)行的多個(gè)進(jìn)程之間可以有效使用資源和相互合作。

??5.1、進(jìn)程間同步的原則

臨界資源: 臨界資源指的是一些雖作為共享資源卻又無(wú)法同時(shí)被多個(gè)線程共同訪問的共享資源。當(dāng)有進(jìn)程在使用臨界資源時(shí),其他進(jìn)程必須依據(jù)操作系統(tǒng)額同步機(jī)制等待占用進(jìn)程釋放該共享資源才可重新競(jìng)爭(zhēng)使用資源。

為了對(duì)臨界資源使用進(jìn)行約束,有四個(gè)使用原則:

  • 空閑讓進(jìn):資源無(wú)占用,允許使用

  • 忙則等待:資源有占用,請(qǐng)求(其他)進(jìn)程等待

  • 有限等待:保證(其他進(jìn)程)有限等待時(shí)間能夠使用資源

  • 讓權(quán)等待:等待時(shí),進(jìn)程需要讓出CPU(即進(jìn)程由運(yùn)行狀態(tài)進(jìn)入阻塞狀態(tài))

同步方法:

消息隊(duì)列 共享存儲(chǔ) 信號(hào)量(詳見下文)

??5.2、線程同步

進(jìn)程內(nèi)多線程也需要同步

線程同步的方法:

互斥量 讀寫鎖 自旋鎖 條件變量(詳見下文)

??6、Linux的進(jìn)程管理

??6.1、Linux進(jìn)程相關(guān)概念

進(jìn)程的類型:

前臺(tái)進(jìn)程 后臺(tái)進(jìn)程 守護(hù)進(jìn)程。

**前臺(tái)進(jìn)程:**具有終端,可以和用戶交互的進(jìn)程。

**后臺(tái)進(jìn)程:**與前臺(tái)進(jìn)程相對(duì),沒有占用終端的就是后臺(tái)進(jìn)程;后臺(tái)程序基本上不和用戶交互,優(yōu)先級(jí)比前臺(tái)進(jìn)程低,不影響前臺(tái)進(jìn)程。將需要執(zhí)行的命令以“&”符號(hào)結(jié)束。

**守護(hù)進(jìn)程:**守護(hù)(daemon)進(jìn)程是特殊的后臺(tái)進(jìn)程;很多守護(hù)進(jìn)程在系統(tǒng)引導(dǎo)的時(shí)候啟動(dòng),一直運(yùn)行知道系統(tǒng)關(guān)閉。crond hhtpd sshd mysqld等。

進(jìn)程名字以'd’結(jié)尾的一般都是守護(hù)進(jìn)程。

進(jìn)程的標(biāo)記

進(jìn)程ID是進(jìn)程的唯一標(biāo)識(shí),每個(gè)進(jìn)程擁有不同的ID。

進(jìn)程ID表現(xiàn)為一個(gè)非負(fù)整數(shù),最大值由操作系統(tǒng)限定。

top命令查看系統(tǒng)進(jìn)程。

ID為0的進(jìn)程為idle進(jìn)程,是系統(tǒng)創(chuàng)建的第一個(gè)進(jìn)程。

ID為1的進(jìn)程是init進(jìn)程,是0號(hào)進(jìn)程的子進(jìn)程,完成系統(tǒng)初始化。

Init進(jìn)程是所有用戶進(jìn)程的祖先進(jìn)程。

進(jìn)程的狀態(tài)標(biāo)記

狀態(tài)符號(hào)狀態(tài)說明
R(TASK_RUNNING),進(jìn)程正處于運(yùn)行狀態(tài)
S(TASK_INTERRUPTIBLE),進(jìn)程正處于睡眠狀態(tài)
D(TASK_UNINTERRUPTIBLE),進(jìn)程正處于IO等待的睡眠狀態(tài)
T(TASK_STOPPED),進(jìn)程正處于暫停狀態(tài)
Z(TASK_DEAD or EXIT_ZOMBIE),進(jìn)程正處于退出狀態(tài),或僵尸進(jìn)程

man ps命令顯示進(jìn)程相關(guān)的命令說明

后臺(tái)運(yùn)行一個(gè)python程序,打印該進(jìn)程狀態(tài) S狀態(tài),處于睡眠狀態(tài)
在這里插入圖片描述

??6.2、操作Linux進(jìn)程的相關(guān)命令

ps命令:

ps列出當(dāng)前的進(jìn)程

ps aux 打印進(jìn)程詳細(xì)信息

ps -u root 查看root用戶進(jìn)程

ps -aux | grep 'pyhton3'查看python3進(jìn)程。

ps -ef --forest可打印進(jìn)程父子狀態(tài)。

ps -aux --sort=pcpu按cpu頻率查看進(jìn)程 pmem 按內(nèi)存排序。

  • ps命令產(chǎn)用于顯示當(dāng)前進(jìn)程的狀態(tài)。

  • ps命令常配合aux參數(shù)或ef參數(shù)和grep命令檢索特定進(jìn)程。

top命令:

1、 2500毫秒刷新一次TOP內(nèi)容,總共5次,輸出內(nèi)容存放到performace.txt文件中

top -b -d 2.5 -n 5 > performace.txt
  • 1

  • 1

注:要將內(nèi)容輸出到文件中,必須使用-b,表示批處理選項(xiàng)

2、 TOP命令如何快速按%CPU、%MEM、TIME+列排序

 a) %CPU:使用大寫字母按鍵:P

 b) %MEM:使用大寫字母按鍵:M

 c) T IME+使用大寫字母按鍵: T1234512345

注:TOP默認(rèn)排序?yàn)榈剐?,如果確實(shí)需要升序排序,可以使用大寫字母按鍵:R

3、TOP命令中顯示其它列值、將兩列互換等

a). 選擇顯示列或隱藏列:使用小寫字母按鍵:f c). 交換列顯示順序:使用小寫字母按鍵: o b). 選擇需要排序的列:使用大寫字母按鍵:F
  • 1

  • 2

  • 3

  • 4

  • 5

  • 1

  • 2

  • 3

  • 4

  • 5

kill命令:

在這里插入圖片描述
數(shù)字表示信號(hào)的序號(hào),字符串表示信號(hào)名稱,傳送信號(hào)時(shí)可以使用信號(hào)序號(hào)也可以使用信號(hào)名稱。

◆傳送信號(hào)時(shí)使用kill命令,語(yǔ)法如下:

kill -信號(hào)序號(hào) PID,如:kill -9 1234

kill -信號(hào)名稱 PID,如:kill -SIGKILL 1234 或者 kill -KILL 1234

PID是指進(jìn)程號(hào),這樣該進(jìn)程會(huì)收到對(duì)應(yīng)的信號(hào),如果要對(duì)信號(hào)進(jìn)行特殊的處理可以自定義,否則會(huì)按照默認(rèn)的。

◆常用的信號(hào)

信號(hào)名稱信號(hào)序號(hào)說明
INT2按Ctrl-C鍵產(chǎn)生該信號(hào),中斷程序
TERM15kill命令默認(rèn)傳送該信號(hào)(即kill PID),終止程序
KILL9強(qiáng)制刪除進(jìn)程,一般kill PID無(wú)效時(shí),使用kill -9 PID強(qiáng)制結(jié)束進(jìn)程
TSTP20按Ctrl-C鍵產(chǎn)生該信號(hào),在終端中暫停該進(jìn)程。

??7、作業(yè)管理之進(jìn)程調(diào)度

進(jìn)程調(diào)度是指計(jì)算機(jī)通過決策哪個(gè)就緒進(jìn)程可以獲得CPU使用權(quán)。

  • 保留舊進(jìn)程的運(yùn)行信息,請(qǐng)出舊進(jìn)程(收拾包袱)

  • 選擇新進(jìn)程,準(zhǔn)備運(yùn)行環(huán)境并分配CPU(新進(jìn)駐)

進(jìn)程調(diào)度的三種機(jī)制 :

1、就緒隊(duì)列的排隊(duì)機(jī)制

將就緒進(jìn)程按照一定的方式排成隊(duì)列,以便調(diào)度程序可以最快找到就緒進(jìn)程。

2、選擇運(yùn)行進(jìn)程的委派機(jī)制

調(diào)度程序以一定的策略選擇就緒進(jìn)程,將CPU資源分配給它。

3、新老進(jìn)程的上下文切換機(jī)制

保存當(dāng)前進(jìn)程的上下文信息,裝入被委派執(zhí)行進(jìn)程的運(yùn)行上下文。

如果進(jìn)程調(diào)度時(shí)候,老進(jìn)程還沒執(zhí)行完,有兩種調(diào)度方式:
1、非搶占式的調(diào)度搶

處理器一旦分配給某個(gè)進(jìn)程,就讓該進(jìn)程一直使用下去,調(diào)度程序不以任何原因搶占正在被使用的處理器,直到進(jìn)程完成工作或因?yàn)镮O阻塞才會(huì)讓出處理器。

2、搶占式的調(diào)

允許調(diào)度程序以一定的策略暫停當(dāng)前運(yùn)行的進(jìn)程,保存好進(jìn)程的上下文信息,分配處理器給新進(jìn)程。


搶占式調(diào)度非搶占式調(diào)度
系統(tǒng)開銷頻繁切換、開銷大切換次數(shù)少、開銷小
公平性相對(duì)公平不公平
應(yīng)用通用系統(tǒng)專用系統(tǒng)

??7.1、進(jìn)程調(diào)度的算法

先來先服務(wù)調(diào)度算法

優(yōu)先取出隊(duì)列前面的進(jìn)程進(jìn)行調(diào)度。

短進(jìn)程優(yōu)先調(diào)度算法

調(diào)度程序優(yōu)先選擇就緒隊(duì)列中估計(jì)運(yùn)行時(shí)間最短的進(jìn)程,短進(jìn)程優(yōu)先調(diào)度算法不利于長(zhǎng)作業(yè)進(jìn)程的執(zhí)行。

高優(yōu)先權(quán)先調(diào)度算法

進(jìn)程附帶優(yōu)先權(quán),調(diào)度程序優(yōu)先選擇權(quán)重高的進(jìn)程,高優(yōu)先權(quán)優(yōu)先調(diào)度算法使得緊迫的任務(wù)可以優(yōu)先處理。

時(shí)間片輪轉(zhuǎn)調(diào)度算法

按先來先服務(wù)的原則排
列就緒進(jìn)程,每次從隊(duì)列頭部去除待執(zhí)行進(jìn)程,分配一個(gè)時(shí)間片執(zhí)行,是相對(duì)公平的調(diào)度算法,但不能保證及時(shí)響應(yīng)用戶。

??8、作業(yè)管理之死鎖

**死鎖:**死鎖是指兩個(gè)或兩個(gè)以上的線程在執(zhí)行過程中,由于競(jìng)爭(zhēng)資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。

??8.1、死鎖的產(chǎn)生

1、競(jìng)爭(zhēng)資源:共享資源數(shù)量不滿足各個(gè)進(jìn)程的需求,各個(gè)進(jìn)程之間發(fā)生資源進(jìn)程導(dǎo)致死鎖。

2、調(diào)用順序不當(dāng)。

死鎖產(chǎn)生的四個(gè)必要條件:

1、互斥條件

進(jìn)程對(duì)資源的使用時(shí)排他性的使用,某資源只能由一個(gè)進(jìn)程使用,其他進(jìn)程需要使用只能等待。

2、請(qǐng)求保持條件

進(jìn)程至少保持一個(gè)資源,又提出新的資源請(qǐng)求,新資源被占用,被阻塞的進(jìn)程不釋放自己保持的資源。

3、不可剝奪條件

進(jìn)程獲得的資源在未完成使用前不能被剝奪,獲得的資源只能由進(jìn)程自身釋放。

4、環(huán)路等待條件

發(fā)生死鎖時(shí),必然存在進(jìn)程-資源環(huán)形鏈。

??8.2、死鎖的處理

預(yù)防死鎖的方法

破壞四個(gè)必要條件之一

1、摒棄請(qǐng)求保持條件

系統(tǒng)規(guī)定進(jìn)程運(yùn)行之前,一次性申請(qǐng)所有需要的資源,進(jìn)程在運(yùn)行期間不會(huì)提出資源請(qǐng)求,從而摒棄請(qǐng)求保持條件。
2、摒棄不可剝奪條件

當(dāng)一個(gè)進(jìn)程請(qǐng)求新的資源得不到滿足時(shí),必須釋放占有的資源,進(jìn)程運(yùn)行時(shí)占有的資源可以被釋放,意味著可以被剝奪。

3、摒棄環(huán)路等待條件

可用資源線性排序,申請(qǐng)必須按照需要遞增申請(qǐng),線性申請(qǐng)不再形成環(huán)路,從而摒棄了環(huán)路等待條件。

銀行家算法
策略原理:客戶申請(qǐng)的貸款是有限的,每次申請(qǐng)需要申請(qǐng)最大資金量,銀行家在能夠滿足貸款時(shí),都應(yīng)該給用戶貸款,客戶在使用貸款后,能夠及時(shí)歸還貸款。

在這里插入圖片描述

??9、存儲(chǔ)管理之內(nèi)存分配與回收

早期計(jì)算機(jī)編程并不需要過多的存儲(chǔ)管理,隨著計(jì)算機(jī)和程序越來越復(fù)雜,存儲(chǔ)管理成為必要。

存儲(chǔ)管理的作用:

  • 確保計(jì)算機(jī)有足夠的內(nèi)存 處理數(shù)據(jù)。

  • 確保程序可以從可用內(nèi)存中獲取一部分內(nèi)存使用。

  • 確保程序可以歸還使用后的內(nèi)存以供其他程序使用。

??9.1、內(nèi)存分配的過程

單一連續(xù)分配是最簡(jiǎn)單的內(nèi)存分配方式,只能在單用戶、單進(jìn)程的操作系統(tǒng)中使用。

固定分區(qū)分配:支持多道程序的最簡(jiǎn)單存儲(chǔ)分配方式,內(nèi)存空間被劃分為若干固定大小的區(qū)域,每個(gè)分區(qū)只提供給一個(gè)程序使用,互不干擾。

**動(dòng)態(tài)分區(qū)分配:**根據(jù)進(jìn)程實(shí)際需要,動(dòng)態(tài)分配內(nèi)存空間,涉及相關(guān)數(shù)據(jù)結(jié)構(gòu)、分配算法。

動(dòng)態(tài)分區(qū)空閑表數(shù)據(jù)結(jié)構(gòu):將內(nèi)存分為若干個(gè)分區(qū),用一張表來表示分區(qū)使用情況:
在這里插入圖片描述

0表示沒有被占用,1表示被占用。

動(dòng)態(tài)分區(qū)空閑鏈數(shù)據(jù)結(jié)構(gòu): 通過鏈把未被使用的分區(qū)以節(jié)點(diǎn)的形式連接起來,同時(shí)相鄰的分區(qū)節(jié)點(diǎn)可以進(jìn)行合并,節(jié)點(diǎn)需記錄可存儲(chǔ)容量。
在這里插入圖片描述
動(dòng)態(tài)分區(qū)分配算法:

首次適應(yīng)算法(FF算法):分配內(nèi)存時(shí)從開始順序查找適合內(nèi)存區(qū),若沒有合適的空閑區(qū),則該次分配失敗。每次從頭部開始,使得頭部空間不斷被劃分。

最佳適應(yīng)算法(BF算法):最佳適應(yīng)算法要求空閑鏈表按照容量大小排序,遍歷空閑區(qū)鏈表找到最佳合適空閑區(qū)。
在這里插入圖片描述
快速適應(yīng)算法(QF算法):快速適應(yīng)算法要求有多個(gè)空閑區(qū)鏈表,每個(gè)空閑區(qū)鏈表存儲(chǔ)一種容量的空閑區(qū)。
在這里插入圖片描述

??9.2、內(nèi)存回收的過程


情況1情況2情況3情況4


空閑區(qū)1回收區(qū)空閑區(qū)1

回收區(qū)空閑區(qū)1回收區(qū)回收區(qū)

空閑區(qū)2

解決方案不需要新建空閑鏈表節(jié)點(diǎn),只需要把空閑區(qū)1的容量增大為空閑區(qū)即可將回收區(qū)與空閑區(qū)合并,新的空閑區(qū)使用回收區(qū)的地址將空閑區(qū)1、空閑區(qū)2和回收區(qū)合并,新的空閑區(qū)使用空閑區(qū)1的地址為回收區(qū)創(chuàng)建新的空閑節(jié)點(diǎn),插入到相應(yīng)的空閑區(qū)鏈表中去

??10、存存儲(chǔ)管理之段頁(yè)式存儲(chǔ)管理

??10.1、頁(yè)式存儲(chǔ)管理

頁(yè)面和字塊都是大小一樣的一塊內(nèi)存,字塊是相對(duì)物理設(shè)備的定義,頁(yè)面則是相對(duì)邏輯空間的定義。

概念: 將進(jìn)程邏輯空間等分成若干大小的頁(yè)面,相應(yīng)的把物理內(nèi)存空間分成與頁(yè)面大小的物理塊,以頁(yè)面為單位把進(jìn)程空間裝進(jìn)物理內(nèi)存中分散的物理塊。
在這里插入圖片描述
頁(yè)面大小應(yīng)該適用,過大難以分配,過小內(nèi)存碎片過多,頁(yè)面大小通常是512B~8K

頁(yè)表:記錄進(jìn)程邏輯空間與物理空間的映射

在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,可以支持非常大的邏輯地址空間(232~264),這樣,頁(yè)表就變得非常大,要占用非常大的內(nèi)存空間,如,具有32位邏輯地址空間的分頁(yè)系統(tǒng),規(guī)定頁(yè)面大小為4KB,則在每個(gè)進(jìn)程中的頁(yè)表項(xiàng)可達(dá)1M(220)個(gè),如果每個(gè)頁(yè)表項(xiàng)占用1Byte,故每個(gè)進(jìn)程僅僅頁(yè)表就要占用1MB的內(nèi)存空間。 32位系統(tǒng)進(jìn)程的尋址空間是4G,4G/4KB=220。

  • 將進(jìn)程邏輯空間等分成若干大小的頁(yè)面。

  • 相應(yīng)的把物理內(nèi)存空間分成與頁(yè)面大小的物理塊。

  • 以頁(yè)面為單位把進(jìn)程空間裝進(jìn)物理內(nèi)存中分散的物理塊。

但是如果有一段連續(xù)的邏輯分布在多個(gè)頁(yè)面中,將大大降低執(zhí)行效率。

??10.2、段式存儲(chǔ)管理

將進(jìn)程邏輯空間劃分成若干段(非等分),段的長(zhǎng)度由連續(xù)邏輯的長(zhǎng)度決定,主函數(shù)MAIN、子程序段X、子函數(shù)Y等。
在這里插入圖片描述
段表相比頁(yè)表多了段長(zhǎng),用來記錄邏輯長(zhǎng)度。

對(duì)比:

段氏存儲(chǔ)和頁(yè)式存儲(chǔ)都離散地管理了進(jìn)程的邏輯空間

  • 頁(yè)是物理單位,段是邏輯單位。

  • 分頁(yè)是為了合理利用空間,分段是滿足用戶要求。

  • 頁(yè)大小由硬件固定,段長(zhǎng)度可動(dòng)態(tài)變化。

  • 頁(yè)表信息是一維的,段表信息是二維的。

??10.3、段頁(yè)式存儲(chǔ)管理

分頁(yè)可以有效提高內(nèi)存利用率(雖然說存在頁(yè)內(nèi)碎片),分段可以更好滿足用戶需求,兩者結(jié)合,形成段頁(yè)式存儲(chǔ)管理。

先將邏輯空間按段式管理分成若干段,再把段內(nèi)空間按頁(yè)式管理等分成若干頁(yè)。
在這里插入圖片描述

??11、存儲(chǔ)管理之虛擬內(nèi)存

  • 有些進(jìn)程實(shí)際需要的內(nèi)存很大,超過物理內(nèi)存的容量。

  • 多道程序設(shè)計(jì),使得每個(gè)進(jìn)程可用物理內(nèi)存更加稀缺。

  • 不可能無(wú)限增加物理內(nèi)存,物理內(nèi)存總有不夠用的時(shí)候。

虛擬內(nèi)存是操作系統(tǒng)內(nèi)存管理的關(guān)鍵技術(shù),使得多道程序運(yùn)行和大程序運(yùn)行成為現(xiàn)實(shí),把程序使用內(nèi)存劃分,將不封暫時(shí)不使用的內(nèi)存放置在輔存。

程序的局部性原理指的是CPU訪問存儲(chǔ)器時(shí),無(wú)論是存取指令還是存取數(shù)據(jù),所訪問的存儲(chǔ)單元都趨于聚集在一個(gè)較小的連續(xù)區(qū)域中。

程序運(yùn)行時(shí),無(wú)需全部裝入內(nèi)存,裝載部分即可,如果訪問頁(yè)不在內(nèi)存,則發(fā)出缺頁(yè)中斷,發(fā)起頁(yè)面置換、從用戶層面看,程序擁有很大的空間,即是虛擬內(nèi)存。

虛擬內(nèi)存實(shí)際是對(duì)物理內(nèi)存的補(bǔ)充,速度接近于內(nèi)存,成本接近于輔存。

虛擬內(nèi)存的置換算法:先進(jìn)先出算法(FIFO)、最不經(jīng)常使用算法(LFU)、最近最少使用算法(LRU)。主存和輔存的替換。

在計(jì)算機(jī)組成原理中有提到這些算法,應(yīng)用于高速緩存與主存的替換。在這里將著重對(duì)比兩種替換而不是算法。

  • 替換策略發(fā)生在Cache-主存層次,主存-輔存層次。

  • Cache-主存層次的替換策略主要是為了解決速度問題。

  • 主存-輔存層次主要是為了解決容量問題

??12、Linux的存儲(chǔ)管理

??12.1、Buddy內(nèi)存管理算法

Buddy算法是經(jīng)典的內(nèi)存管理算法,算法基于計(jì)算機(jī)處理二進(jìn)制的優(yōu)勢(shì)具有極高的效率,算法主要是為了解決內(nèi)存外碎片的問題,實(shí)際上是將內(nèi)存外碎片問題轉(zhuǎn)移為了內(nèi)存內(nèi)碎片的問題。

頁(yè)內(nèi)碎片是已經(jīng)被分配出去(能明確指出屬于哪個(gè)進(jìn)程)的內(nèi)存空間大于請(qǐng)求所需的內(nèi)存空間,不能被利用的內(nèi)存空間就是內(nèi)部碎片。

頁(yè)外碎片是指還沒有分配出去(不屬于任何進(jìn)程),但是由于太小而無(wú)法分配給申請(qǐng)內(nèi)幕才能空間的新進(jìn)程的內(nèi)存空間塊。

該算法努力讓內(nèi)存分配與相鄰內(nèi)幕才能合并能快速進(jìn)行,內(nèi)存分配原則:

  • 向上取整為2的冪大小 70k→128k 129k→256k

伙伴系統(tǒng): '伙伴’指的是內(nèi)存的'伙伴’,一片連續(xù)內(nèi)存的'伙伴’是相鄰的另一片大小一樣的連續(xù)內(nèi)存。

假設(shè)存儲(chǔ)空間有1M大小,來分配100k的內(nèi)存:

1、100k向上取2的冪;

2、 查詢是否有128k的空閑內(nèi)存塊;

3、 沒有!查詢是否有256k空閑內(nèi)存塊;

4、沒有!查詢是否有512k空閑內(nèi)存塊;

5、沒有!查詢是否有1M的空閑內(nèi)存塊;

6、有,摘下1M空閑內(nèi)存塊,分配出去;

7、拆下512k放在512k的空閑鏈表,其余的分配出去;

8、拆下256k放在256k的空閑鏈表,其余的分配出去;

9、拆下128k的空閑鏈表,其余的分配出去;

10、分配完畢;

回收剛才分配的內(nèi)存:

1、判斷剛才分配的內(nèi)存伙伴在空閑鏈表上嗎?

2、 在!移除伙伴,合并為256k空閑內(nèi)存,判斷

3、 在!移除伙伴,合并為512k空閑內(nèi)存,判斷;

4、 在!移除伙伴,合并為1M空閑內(nèi)存;

5、插入1M空閑鏈表,回收完成;

??13、Linux交換空間

交換空間(Swap)是磁盤的一個(gè)分區(qū),Linux物理內(nèi)存滿時(shí),會(huì)把一些內(nèi)存交換至Swap空間,Swap空間是初始化系統(tǒng)時(shí)配置的。top命令可以查詢到:

  • 冷啟動(dòng)內(nèi)存依賴。

  • 系統(tǒng)睡眠依賴。

  • 大進(jìn)程空間依賴。

交換空間與虛擬內(nèi)存對(duì)比:

  • Swap空間存在于磁盤,虛擬內(nèi)存也存在于磁盤。

  • Swap空間與主存發(fā)生置換 ,虛擬內(nèi)存也是與主存發(fā)生置換。

  • Swap空間是操作系統(tǒng)概念,虛擬內(nèi)存是進(jìn)程概念。

  • Swap空間解決系統(tǒng)物理內(nèi)存不足的問題,虛擬內(nèi)存解決物理內(nèi)存不足的問題。

??14、操作系統(tǒng)的文件管理

??14.1、文件的邏輯結(jié)構(gòu)

在這里插入圖片描述
有結(jié)構(gòu)文件:有結(jié)構(gòu)內(nèi)容由定長(zhǎng)記錄和可變長(zhǎng)記錄組成,定長(zhǎng)記錄存儲(chǔ)格式、文件描述等結(jié)構(gòu)化數(shù)據(jù)項(xiàng),可變長(zhǎng)記錄存儲(chǔ)文件具體內(nèi)容:

比如png圖片文件,分為png文件標(biāo)記、png數(shù)據(jù)塊和文件結(jié)束標(biāo)記。定長(zhǎng)記錄存儲(chǔ)文件格式、文件描述等結(jié)構(gòu)化數(shù)據(jù)項(xiàng),如png文件標(biāo)記和文件結(jié)束標(biāo)記??勺冮L(zhǎng)記錄存儲(chǔ)文件具體內(nèi)容。

無(wú)結(jié)構(gòu)文件: 也稱為流式文件,文件內(nèi)容長(zhǎng)度以字節(jié)為單位,比如exe,dll,so文件等。

順序文件: 順序文件是指按順序存放在存儲(chǔ)介質(zhì)中的文件,磁帶的存儲(chǔ)特征使得磁帶文件只能存儲(chǔ)順序文件,順序文件是所有邏輯文件當(dāng)中存儲(chǔ)效率最高的。

索引文件: 可變長(zhǎng)文件不適合使用順序文件格式存儲(chǔ),索引文件是為了解決可變長(zhǎng)文件存儲(chǔ)而發(fā)明的一種文件格式,索引文件需要配合索引表完成存儲(chǔ)的操作。

??15、輔存的存儲(chǔ)空間分配

輔存的分配方式
在這里插入圖片描述
空閑表: 空閑盤區(qū)分分配與內(nèi)存分配類似,首次適應(yīng)算法、循環(huán)適應(yīng)算法等,回收過程也與內(nèi)存回收類似。

空閑鏈表: 空閑鏈表法把所有空閑盤區(qū)組成一個(gè)空閑鏈表,每個(gè)鏈表節(jié)點(diǎn)存儲(chǔ)空閑盤塊和空閑的數(shù)目。

位示圖: 每個(gè)盤塊有0/1比特位表示是否被占用。位示圖維護(hù)成本低,位示圖可以非常容易找到空閑盤塊,位示圖使用0/1比特位,占用空間很小。該方法在輔存中最為常用。

目錄管理
在這里插入圖片描述
任何文件或目錄都只有唯一路徑 例如 A/D/M

??16、Linux文件基本操作

??16.1、Linux目錄

Linux一切皆是文件
在這里插入圖片描述
絕對(duì)路徑 相對(duì)路徑

??16.2、Linux文件常用操作

創(chuàng)建文件 touch 文件名 創(chuàng)建并修改文件 vim 文件名

查看文件vim 也可以使用cat 文件名

刪除文件 rm 文件名 創(chuàng)建文件夾 mkdir名字 刪除文件夾 rm -r 名字

??16.3、Linux文件類型

Linux有這些文件類型:套接字(s)、普通文件(-)、目錄文件(d)、符號(hào)鏈接(l)、設(shè)備文件(b、c)、FIFO§。

通過ls -al可以查看文件屬性,首字母表示文件類型。其中b和c分別表示塊設(shè)備、字符設(shè)備。
在這里插入圖片描述

??17、Linux文件類型

??17.1、文件系統(tǒng)概覽

FAT、NTFS、EXT2/3/4

FAT(File Allocation Table),分為FAT16、FAT32等,微軟Dos/Windows使用的文件系統(tǒng),使用一張表來保存盤塊的信息。

NTFS(New Technology File System),WindowsNT環(huán)境的文件系統(tǒng),NTFS對(duì)FAT進(jìn)行了改進(jìn),取代了舊的文件系統(tǒng)。Windows、Linux、MacOS均可識(shí)別。

EXT(Extended file system),擴(kuò)展文件系統(tǒng)。Linux的文件系統(tǒng)。數(shù)字表示第幾代。Window不能識(shí)別。

??17.2、Ext文件系統(tǒng)

在這里插入圖片描述
Boot Sector:?jiǎn)?dòng)扇區(qū),安裝開機(jī)管理程序。Block Group:塊組,存儲(chǔ)數(shù)據(jù)的實(shí)際位置。

每一個(gè)Block Group有這些信息:
在這里插入圖片描述
Inode Table:存放文件Inode的地方,每一個(gè)文件(目錄)都有一個(gè)Inode,是每一個(gè)文件(目錄)的索引節(jié)點(diǎn),也是該文件唯一標(biāo)記。Inode存放了文件類型、文件權(quán)限、文件物理地址、文件長(zhǎng)度、文件連接計(jì)數(shù)、文件存取時(shí)間、文件狀態(tài)、索引節(jié)點(diǎn)編號(hào)、訪問計(jì)數(shù)、鏈接指針等等。

需要注意的是文件名不是存放在Inode節(jié)點(diǎn)上的,而是存放在目錄的Inode節(jié)點(diǎn),目的在于列出目錄文件的時(shí)候無(wú)需加載文件的Inode。

Inode bitmap,Inode的位示圖,記錄已分配的Inode和未分配的Inode。

Data block,存放文件內(nèi)容的地方,每個(gè)block都有唯一的編號(hào),文件的block記錄在文件的Inode上
Block bitmap,功能與Inode bitmap類似,記錄Data block的使用情況。

Superblock,記錄整個(gè)文件系統(tǒng)相關(guān)信息的地方,Block和Inode的使用情況,時(shí)間信息、控制信息等。

df -T 查看系統(tǒng)掛載的磁盤信息 dumpe2fs 設(shè)備名 查看其中的文件系統(tǒng)信息。

stat 文件名查看具體的文件信息。
在這里插入圖片描述

??18、操作系統(tǒng)的設(shè)備管理

??18.1、廣義的IO設(shè)備

對(duì)CPU而言,凡是對(duì)CPU進(jìn)行數(shù)據(jù)輸入的都是輸入設(shè)備,對(duì)CPU而言,凡是CPU進(jìn)行數(shù)據(jù)輸出的都是輸出設(shè)備。

可以分別按使用特性分類、按設(shè)備的共享屬性分類、按信息交換的單位分類、按傳輸速率分類。

使用特性分類:存儲(chǔ)設(shè)備(內(nèi)存、硬盤等)、交互IO設(shè)備(鍵盤、顯示器等)。

信息交換單位分配:塊設(shè)備(磁盤、SD卡)、字符設(shè)備(打印機(jī)、shell終端)。

共享屬性分類:共享設(shè)備、獨(dú)占設(shè)備、虛擬設(shè)備。

傳輸速率分類:低速設(shè)備、中速、高速。

??18.2、IO設(shè)備緩沖區(qū)

CPU與IO設(shè)備的速率不匹配問題,所以有個(gè)各個(gè)存儲(chǔ)器的層次結(jié)構(gòu)。而緩沖區(qū)也是為了解決這個(gè)問題,它可以減少CPU處理IO請(qǐng)求的頻率,提高CPU與IO設(shè)備之間的并行性。

可以把需要多次交互的請(qǐng)求放入一個(gè)緩沖區(qū),將多個(gè)請(qǐng)求寫入緩沖區(qū),減少交互次數(shù)。

緩沖池:專用緩沖區(qū)只適用于特定的IO進(jìn)程,當(dāng)這樣的IO進(jìn)程比較多時(shí),對(duì)內(nèi)存的消耗也很大,操作系統(tǒng)劃出可供多個(gè)進(jìn)程使用的公共緩沖區(qū),稱之為緩沖池。

??18.3、SPOOLing技術(shù)

是一種慢速字符設(shè)備如何與計(jì)算機(jī)主機(jī)交換信息的一種技術(shù),利用高速共享設(shè)備將低俗的獨(dú)享設(shè)備模擬為高速的共享設(shè)備。邏輯上,系統(tǒng)為每一個(gè)用戶都分配了一臺(tái)獨(dú)立的高速獨(dú)享設(shè)備,所以這是一種虛擬設(shè)備技術(shù)。

在這里插入圖片描述
假設(shè)有三個(gè)進(jìn)程要使用打印機(jī),同步調(diào)用的效率會(huì)比較低。從磁盤中劃出一部分空間叫輸出井,各個(gè)進(jìn)程將調(diào)用請(qǐng)求放入輸出井,由SPOOLing技術(shù)來完成輸出井到打印機(jī)的交互。

SPOOLing技術(shù)把同步調(diào)用的低速設(shè)備改為異步調(diào)用

總結(jié)起來該技術(shù)就是:

  • 在輸入、輸出之間增加了派對(duì)轉(zhuǎn)存儲(chǔ)環(huán)節(jié)(輸入井、輸出井)。

  • SPOOLing負(fù)責(zé)輸入(出)井與低速設(shè)備之間的調(diào)用。

  • 邏輯上,進(jìn)程直接與高速設(shè)備交互,減少了進(jìn)程等待時(shí)間。

??19、Linux文本編輯器及軟件安裝

Nano文本編輯器

復(fù)制、剪貼和粘貼

復(fù)制一整行:Alt+6

剪貼一整行:Ctrl+K

粘貼:Ctrl+U

如果需要復(fù)制/剪貼多行或者一行中的一部分,先將光標(biāo)移動(dòng)到需要復(fù)制/剪貼的文本的開頭,按Ctrl+6(或者Alt+A)做標(biāo)記,然后移動(dòng)光標(biāo)到 待復(fù)制/剪貼的文本末尾。這時(shí)選定的文本會(huì)反白,用Alt+6來復(fù)制,Ctrl+K來剪貼。若在選擇文本過程中要取消,只需要再按一次Ctrl+6。

搜索

按Ctrl+W,然后輸入你要搜索的關(guān)鍵字,回車確定。這將會(huì)定位到第一個(gè)匹配的文本,接著可以用Alt+W來定位到下一個(gè)匹配的文本。

保存

使用Ctrl+O來保存所做的修改

退出

按Ctrl+X

nano file

可以直接路徑,沒有該文件的話,就會(huì)創(chuàng)建一個(gè)再編輯。

配置nano編輯器

單個(gè)用戶配置:

一般通過/home/username路徑下的.nanorc文件修改。nano .nanorc
配置語(yǔ)言以set開頭:

# 相當(dāng)于命令后面加 -m 參數(shù) 鼠標(biāo)生效set mouse# 相當(dāng)于 -i 參數(shù) 自動(dòng)縮進(jìn)set autoindent# 激活職能home鍵 -A參數(shù)set smarthome123456123456

全局配置:

/etc/nanorc文件中修改(root用戶)sudo nano /etc/nanorc
  • 1

  • 2

  • 1

  • 2

配置終端:

單個(gè)用戶的終端配置文件/home/username/.bashrc

nano ~/.bashrc

bash其實(shí)是一種shell,shell用于解釋我們輸入終端的各種命令的,是用戶和操作系統(tǒng)之間的一個(gè)命令解釋器。

配置.bashrc文件可以修改終端的各種配置,如命令提示符樣式,創(chuàng)建命令別名

# 創(chuàng)建別名 alias xx='command'alias ll='ls -alF'alias la='ls -A'alias l='ls -CF'12341234

全局配置的路徑:/etc/bash.bashrc,但是家目錄下的優(yōu)先級(jí)高于系統(tǒng)的bash.bashrc文件。

profile配置文件
單個(gè)用戶:~/.profile,全局/etc/profile

bashrc應(yīng)用于圖形化終端,profile應(yīng)用于TTY1-TTY6這種需要用戶登錄的終端。profile文件會(huì)調(diào)用.bashrc。

在這里插入圖片描述
bashrc 和 profile二者修改后都是下次登陸生效,需要立即生效使用source命令:

source .bashrcsource .profile
  • 1

  • 2

  • 1

  • 2

??20、Ubuntu軟件倉(cāng)庫(kù)

對(duì)于ubuntu系統(tǒng),在全世界各地分布有軟件倉(cāng)庫(kù)。Linux的.deb軟件包相較于windows的exe安裝包文件,包含了依賴關(guān)系的管理,對(duì)于依賴的軟件會(huì)自動(dòng)下載。

管理軟件倉(cāng)庫(kù)

如果我們要切換軟件倉(cāng)庫(kù),可以通過編輯軟件倉(cāng)庫(kù)列表文件/etc/apt/sources.list(root模式)

一般來說,這個(gè)文件中有作用的行是由以下兩個(gè)指令開頭:

  • deb: 用于下載軟件的二進(jìn)制版本,大多數(shù)情況下我們用的是這個(gè)

  • deb-src: 用于下載軟件的源代碼

# 舉例其中一行deb http://cn.archive./ubuntu/ bionic universe1212

第二個(gè)是倉(cāng)庫(kù)地址,第三個(gè)bionic是Ubuntu版本代號(hào),第三個(gè)universe是軟件倉(cāng)庫(kù)的區(qū)域,也就是要查看的代碼倉(cāng)庫(kù)的不同分區(qū)。

Ubuntu圖形界面中software&update中可以直接切換軟件倉(cāng)庫(kù),更加方便。

??21、終端包管理工具

apt-get/apt管理包命令

aptitude:這個(gè)命令再卸載軟件時(shí)可以卸載不用的依賴

sudo apt update更新軟件包緩存;sudo apt-cache search搜索軟件包;sudo apt install安裝軟件包;
sudo apt upgrade升級(jí)所有已安裝軟件包;sudo apt autoremove

dpkg命令時(shí)apt-get和aptitude兩個(gè)命令的后端(backend)命令

依賴鏈:dpkg-->apt-get,aptitude-->Ubuntu Software

使用dpkg可以安裝本地的軟件包:sudo dpkg -i *.deb,卸載:sudo dpkg -r 包名

??22、閱讀手冊(cè)

man命令

例如man ls,會(huì)出現(xiàn)ls命令的使用說明。手冊(cè)的各部分區(qū)域說明:

NAME

命令的全稱

SYNOPSIS

概要,使用此命令的方法

ls [OPTION]... [FILE]...
在這里插入圖片描述
粗體:原封不動(dòng)輸入。

下劃線:用實(shí)際內(nèi)容替代。

[-hvc]中括號(hào)內(nèi)為可選參數(shù)。

a|b輸入a或b選項(xiàng)。

OPTION參數(shù),省略號(hào)表示可輸入多個(gè)參數(shù)。

DESCRIPTION

列出所有參數(shù)和用法

其他區(qū)域:AUTHOR, REPROTIONG BUGS, COPYRIGHT, SEE ALSO

apropos查找命令

apropos命令后面添加關(guān)鍵字即可(根據(jù)手冊(cè)中的關(guān)鍵字)

例如需要查找控制音量的方法 apropos sound
在這里插入圖片描述

??23、其他查閱手冊(cè)的方法

很多命令都支持-h參數(shù)

比man命令的內(nèi)容稍顯簡(jiǎn)便

whatis命令

man的精簡(jiǎn)版,顯示man的NAME區(qū)域

文件查找命令

locate命令

查找速度極快,查找包含關(guān)鍵字的文件。

locate xxx

會(huì)查找并列出xxx(目錄或文件名包含xxx)所在的所有目錄。

缺陷:如果是剛新建的文件locate是查不到的,因?yàn)閘ocate不是查找硬盤,是在數(shù)據(jù)庫(kù)(包含文件的列表和文件的位置)中查找記錄。對(duì)于剛創(chuàng)建的文件,沒有更新進(jìn)數(shù)據(jù)庫(kù)(一般24小時(shí)自動(dòng)更新)

當(dāng)然也可以用updatedb命令強(qiáng)制系統(tǒng)立即更新數(shù)據(jù)庫(kù) sudo updatedb

find命令深入查找

遍歷實(shí)際的硬盤的文件,還可以對(duì)查找的文件進(jìn)行操作。 查找文件要完全對(duì)應(yīng)關(guān)鍵字,但是可以用正則匹配 功能強(qiáng)大。

find 默認(rèn)當(dāng)前子目錄查找,也可以指定目錄查找;用文件名、創(chuàng)建時(shí)間等查找;最后可以對(duì)找到的文件進(jìn)行操作。

例如:find -name 'new_file'根據(jù)名字查找當(dāng)前目錄的文件 ; find /var/log -name 'syslog'查找其他目錄的文件;

根據(jù)文件大小查找

find /var -size +10M查找/var目錄下大于10m的文件。

根據(jù)文件的最近訪問時(shí)間查找

find -name '*.txt' -atime -7查找7天內(nèi)訪問的txt文件。

僅查找目錄或文件

find -name 'file1' -type d查找名為file1的目錄

操作查找結(jié)果

格式化輸出:find -name 'file1' -printf '%p - %u\n'將查找到的文件格式化輸出為文件名 - 用戶名的形式。

刪除操作:xxx -delete

調(diào)用其他命令:

加上-exec參數(shù)之后就可以接其他命令了,十分強(qiáng)大

# 將/var目錄下的所有txt文件修改權(quán)限為600find /var -name '*.txt' -exec chmod 600 {} \;
  • 1

  • 2

  • 1

  • 2

大括號(hào)表示剛查找到的文件,\;是exec的結(jié)尾。

-exec參數(shù)換成-ok參數(shù)效果一樣,但是會(huì)對(duì)每個(gè)文件都做確認(rèn)提示!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多