国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【看表情包學(xué)Linux】進(jìn)程優(yōu)先級(jí) | 查看系統(tǒng)進(jìn)程 | 優(yōu)先級(jí)修改 | 進(jìn)程的切換 | 競(jìng)爭(zhēng)性與獨(dú)立性 | 并行并發(fā)的概念 | 環(huán)境變量

這篇具有很好參考價(jià)值的文章主要介紹了【看表情包學(xué)Linux】進(jìn)程優(yōu)先級(jí) | 查看系統(tǒng)進(jìn)程 | 優(yōu)先級(jí)修改 | 進(jìn)程的切換 | 競(jìng)爭(zhēng)性與獨(dú)立性 | 并行并發(fā)的概念 | 環(huán)境變量。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux???爆笑教程????《看表情包學(xué)Linux》???猛戳訂閱????

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

?? 寫在前面:我們先講解進(jìn)程的優(yōu)先級(jí),探討為什么會(huì)存在優(yōu)先級(jí),以及如何查看系統(tǒng)進(jìn)程、進(jìn)程優(yōu)先級(jí)的修改。然后講解進(jìn)程的切換,首次介紹進(jìn)程的競(jìng)爭(zhēng)性、獨(dú)立性,以及并行和并發(fā)的概念,在通過(guò)講解進(jìn)程搶占引出可見寄存器與不可見寄存器。最后我們講解環(huán)境變量,介紹環(huán)境變量 PATH,并且做一個(gè) "讓自己的可執(zhí)行程序不帶路徑也能執(zhí)行"的實(shí)踐,講解環(huán)境變量的到如何刪除,最后再講幾個(gè)常見的環(huán)境變量。

???linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux???本篇博客全站熱榜排名:13


?Ⅰ. 進(jìn)程優(yōu)先級(jí)(Process Priority)

0x00 引入:什么是優(yōu)先級(jí)?

我們先思考思考?權(quán)限 是什么?權(quán)限的本質(zhì)是談?wù)?"能" 還是?"不能" 的問(wèn)題。

那什么是?優(yōu)先級(jí)???jī)?yōu)先級(jí)是進(jìn)程獲取資源的先后順序!

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

CPU 資源分配的先后順序,就是指進(jìn)程的優(yōu)先權(quán)(priority)

優(yōu)先權(quán)高的進(jìn)程有優(yōu)先執(zhí)行權(quán)利。配置進(jìn)程優(yōu)先權(quán)對(duì)多任務(wù)環(huán)境的 Linux 很有用,可以改善系統(tǒng)性能,還可以把進(jìn)程運(yùn)行到指定的 CPU 上,這樣一來(lái)就可以把不重要的進(jìn)程安排到某個(gè) CPU,可以大大改善系統(tǒng)整體性能。

0x02 為什么會(huì)存在優(yōu)先級(jí)?

我們不妨先思考下我們?nèi)粘I钪信抨?duì)的本質(zhì),排隊(duì)的本質(zhì)可以說(shuō)是 "確定優(yōu)先級(jí)" ,

而插隊(duì)行為就是更改優(yōu)先級(jí)。因?yàn)榕抨?duì)造就了優(yōu)先級(jí),那我們?yōu)槭裁匆抨?duì)?

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?? 可以不排隊(duì)嗎?可以,結(jié)果就是大家一窩蜂搶唄,全部用搶的。

"無(wú)理由暴力搶占式,優(yōu)勝劣汰,我擠死你"

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

(前后時(shí)間來(lái)確認(rèn)先后順序)???(誰(shuí)能擠誰(shuí)能撞誰(shuí)就排到前面)

現(xiàn)實(shí)生活中一旦出現(xiàn)了搶,就難免會(huì)引發(fā)爭(zhēng)執(zhí)。

在比如說(shuō)食堂買飯如果大家都不排隊(duì),如果你就是擠不過(guò)別人,就會(huì)一直買不到,

你就每次都要餓肚子,這在操作系統(tǒng)中叫做 "饑餓問(wèn)題" 。

所以,排隊(duì)主要是換了一種競(jìng)爭(zhēng)方式,不以那么殘酷的方式競(jìng)爭(zhēng),讓進(jìn)程都能 井然有序 。

我們之所以要排隊(duì),其實(shí)最主要的原因是因?yàn)橘Y源不夠!

如果資源是無(wú)限的,就像希爾伯特旅館一樣,該旅館擁有無(wú)限多的房間,那也不需要排隊(duì)的了。

200 名學(xué)生要去食堂吃飯,但窗口就 20 個(gè),當(dāng)然需要排隊(duì)。如果窗口有 200 個(gè),理論上不用排。

因?yàn)?系統(tǒng)里面永遠(yuǎn)都是進(jìn)程占大多數(shù),資源是少數(shù)。?這就導(dǎo)致了進(jìn)程競(jìng)爭(zhēng)資源是常態(tài)!

排隊(duì)和進(jìn)程資源競(jìng)爭(zhēng)都是一定要確認(rèn)先后的,它們的本質(zhì)都是 確認(rèn)優(yōu)先級(jí) 。

本章我們要講的是 Linux 的進(jìn)程優(yōu)先級(jí),Linux 下的優(yōu)先級(jí)有很多方式,包括設(shè)置和修改。

我們不建議修改優(yōu)先級(jí),如果你不懂調(diào)度器的調(diào)度算法,你隨便修改優(yōu)先級(jí)其實(shí)就是變相地 "插隊(duì)" 了。你可以讓你的進(jìn)程盡快地得到了某種 CPU 資源或其它資源,凡是可能會(huì)打破調(diào)度器的平衡。其實(shí)你在用戶層再怎么設(shè)置,也不會(huì)對(duì)調(diào)度器的調(diào)度策略產(chǎn)生什么影響。

再加上設(shè)置優(yōu)先級(jí)沒(méi)有什么意義,所以本章我們就不去講解了。

0x03 查看系統(tǒng)進(jìn)程:ps -l

?? 查看系統(tǒng)進(jìn)程:在 Linux 或者 Unix 系統(tǒng)中,輸入? ps -l? 命令則會(huì)輸出內(nèi)容:

$ ps -l    # 查看進(jìn)程的優(yōu)先級(jí)

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

我們寫一個(gè)簡(jiǎn)單的 Hello 程序,令其每隔一秒發(fā)送一次 Hello

#include <stdio.h>
#include <unistd.h>

int main(void) {
    while (1) {
        sleep(1);
        printf("Hello!\n");
    }
}

我們把它運(yùn)行起來(lái),此時(shí)我們使用? ps -l? ?查看:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

因?yàn)? ps -l??只能顯示當(dāng)前終端下進(jìn)程的相關(guān)信息,我們可以使用給它加上 ??選項(xiàng):

$ ps -la   

?linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

此時(shí)我們的進(jìn)程 process 就顯示出來(lái)了,我們重點(diǎn)關(guān)注???和???列。

?Linux 中的進(jìn)程優(yōu)先級(jí)由兩部分組成:linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

  • ?:優(yōu)先級(jí) (priority),默認(rèn)進(jìn)程優(yōu)先級(jí)為??。
  • ?:nice 值 (nice value) ,進(jìn)程優(yōu)先級(jí)的修正屬性,取值區(qū)間為???,默認(rèn)值為???。

?? 注意:數(shù)字越小,表示優(yōu)先級(jí)越高;數(shù)字越大,優(yōu)先級(jí)越低。(Linux 下)

優(yōu)先級(jí)的部分我們?cè)?task_struct 中也是可以找到的。
它的優(yōu)先級(jí)和我們上一章講的進(jìn)程狀態(tài)一樣,也是個(gè)整數(shù),在 task_struct 中表示:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

0x04 進(jìn)程優(yōu)先級(jí)的修改

要更該進(jìn)程的優(yōu)先級(jí),需要更改的是??,而非???。

因?yàn)?nice 值是進(jìn)程優(yōu)先級(jí)的修正數(shù)據(jù),所以一個(gè)進(jìn)程不管是在啟動(dòng)前還是在運(yùn)行中,想要修改優(yōu)先級(jí),都是通過(guò)修改它的 nice 值來(lái)達(dá)到目的。

其實(shí),我們系統(tǒng)中是存在???nice? 命令的,對(duì)應(yīng)的還有???renice??。

$ nice  
$ renice

它們可以讓我們?cè)趩?dòng)一個(gè)進(jìn)程時(shí)直接指定優(yōu)先級(jí),或者啟動(dòng)中或啟動(dòng)前設(shè)置優(yōu)先級(jí)。

感興趣可以自行查閱,我們還是主要學(xué)習(xí)如何使用 ??top? 命令去修改:

$ top

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

進(jìn)入 top 后我們鍵入???,此時(shí)會(huì)發(fā)出詢問(wèn):PID to renice [default pid=]

在后面輸入我們要修改的進(jìn)程的???即可,我們剛才進(jìn)程的???是??:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

然后會(huì)詢問(wèn):PID to renice [default pid=1]?,問(wèn)你要設(shè)置哪個(gè)進(jìn)程的??:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

這里居然提示??Failed??修改失敗了!Permission denied (么得權(quán)限) !

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux??因?yàn)槲覀儎偛耪f(shuō)過(guò):

"一個(gè)進(jìn)程的優(yōu)先級(jí)不能輕易被修改,因?yàn)闀?huì)打破調(diào)度器的平衡"

如果你執(zhí)意修改,你須具備 ???超級(jí)用戶 的權(quán)限 ——???!這里我們?sudo top?就行:

$ sudo top

?linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

?linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux??找到了找到了,我們繼續(xù),我們繼續(xù)!

我們剛才將 nice 值修改為?-20,現(xiàn)在???優(yōu)先級(jí)變成 60 了。

值得強(qiáng)調(diào)的是,Linux 不允許用戶無(wú)節(jié)制地設(shè)置優(yōu)先級(jí),設(shè)置的優(yōu)先級(jí)范圍不能逾過(guò)下列區(qū)間:

?

其取值范圍是???至??,一共 40 個(gè)可設(shè)置級(jí)別。

??值越小越快被執(zhí)行,Linux 的優(yōu)先級(jí)是這樣設(shè)置的:

prio = prio_old + nice;

所以,只需要改 nice 優(yōu)先級(jí)就能變化。

?? 注意:每次設(shè)置優(yōu)先級(jí),這個(gè) old 優(yōu)先級(jí)都會(huì)被恢復(fù)成為 80 (跟上一次沒(méi)關(guān)系)

Ⅱ. 進(jìn)程的切換(Process Switch)

0x00 競(jìng)爭(zhēng)與獨(dú)立

競(jìng)爭(zhēng)性:僧多粥少!系統(tǒng)進(jìn)程數(shù)目眾多,而 CPU 資源只有少量,甚至一個(gè),所以進(jìn)程之間是具有競(jìng)爭(zhēng)屬性的。為了高效的完成任務(wù)、更合理競(jìng)爭(zhēng)相關(guān)資源,便具有了優(yōu)先級(jí)。

獨(dú)立性:多進(jìn)程運(yùn)行,需要獨(dú)享各種資源,多進(jìn)程運(yùn)行期間互不干擾。

進(jìn)程運(yùn)行具有獨(dú)立性,不會(huì)因?yàn)橐粋€(gè)進(jìn)程掛掉或者異常而導(dǎo)致其它進(jìn)程出現(xiàn)問(wèn)題!

內(nèi)核結(jié)構(gòu) + 代碼和數(shù)據(jù)

? 思考:那么操作系統(tǒng)是如何做到進(jìn)程具有獨(dú)立性的呢?

(我們將在后續(xù)講解進(jìn)程地址空間時(shí)揭曉)

0x01 并行和并發(fā)

并行:多個(gè)進(jìn)程在多個(gè) CPU 下分割,同時(shí)進(jìn)行運(yùn)行,我們稱之為并行。
并發(fā):多個(gè)進(jìn)程在單個(gè) CPU 下采用進(jìn)程切換的方式,在一段時(shí)間內(nèi),讓多個(gè)進(jìn)程都得以推進(jìn),稱之為并發(fā)。

下面我們來(lái)理解一下并行與并發(fā)。

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

一般服務(wù)器都是雙 CPU 的,所以雙 CPU 的系統(tǒng)是存在的,就會(huì)存在多個(gè)進(jìn)程同時(shí)在跑的情況。

如果存在多個(gè) CPU 的情況,任何一個(gè)時(shí)刻,都有可能有兩個(gè)進(jìn)程在同時(shí)被運(yùn)行 —— 并行?。

但我們大家接觸的、用的筆記本電腦基本都是單核的,單 CPU 的任何時(shí)刻只允許一個(gè)進(jìn)程運(yùn)行。

我的電腦是單 CPU 的,但是我的電腦中有各種進(jìn)程都可以在跑???怎么肥事啊?

它是怎么做到的呢?

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

不要認(rèn)為進(jìn)程一旦占有 CPU,就會(huì)一直執(zhí)行到結(jié)束,才會(huì)釋放 CPU 資源。

所以一直讓它跑,直到進(jìn)程執(zhí)行完,是不存在的,我們遇到的大部分操作系統(tǒng)都是 分時(shí) 的!

操作系統(tǒng)會(huì)給每一個(gè)進(jìn)程,在一次調(diào)度周期中,賦予一個(gè) 時(shí)間片 的概念。

例:一秒鐘之內(nèi)每一個(gè)進(jìn)程至少要被調(diào)度20次,每一次調(diào)度就是自己代碼得以推進(jìn)的時(shí)候。

在一個(gè)時(shí)間段內(nèi),多個(gè)進(jìn)程都會(huì)通過(guò) "切換交叉" 的方式,當(dāng)多個(gè)進(jìn)程的代碼,在一段時(shí)間內(nèi)都得到推進(jìn) ——??并發(fā)。

0x02 進(jìn)程搶占

? 思考:OS 就是簡(jiǎn)單的根據(jù)隊(duì)列來(lái)進(jìn)行前后調(diào)度的嗎?有沒(méi)有可能突然來(lái)了一個(gè)優(yōu)先級(jí)更高的進(jìn)程?

搶占式內(nèi)核!我們現(xiàn)在的計(jì)算機(jī)基本都是支持 搶占 的。正在運(yùn)行的低優(yōu)先級(jí)進(jìn)程,可能正在享受著它的時(shí)間片、推進(jìn)著代碼,但是如果來(lái)了優(yōu)先級(jí)更高的進(jìn)程,我們的調(diào)度器會(huì)直接把對(duì)應(yīng)的進(jìn)程從 CPU 上剝離,放上優(yōu)先級(jí)更高的進(jìn)程,這個(gè)操作就叫做 進(jìn)程搶占。

了解

a. 不允許不同優(yōu)先級(jí)的進(jìn)程存在的?
b. 相同優(yōu)先級(jí)的進(jìn)程,是可能存在多個(gè)的

task_struct* queue[5];

根據(jù)不同的優(yōu)先級(jí),將特定的進(jìn)程放入不同的隊(duì)列中!這其實(shí)就是一張簡(jiǎn)單的哈希表,后面列入的都是隊(duì)列,其原理是通過(guò)哈希根據(jù)不同的哈希值確定隊(duì)列的優(yōu)先級(jí),每一種優(yōu)先級(jí) Linux 都會(huì)維護(hù)一個(gè)隊(duì)列。

舉個(gè)最簡(jiǎn)單的例子,下面的 z 是如何得到已經(jīng)釋放的臨時(shí)變量 a 的數(shù)據(jù)的?

int func() {
    int a = 10 + 20;
    return a;
}

int z = func();

寄存器功不可沒(méi),拷貝一份到寄存器里去,然后再??給 z 變量。

CPU 內(nèi)的寄存器是:可以臨時(shí)地存儲(chǔ)數(shù)據(jù)

寄存器分為 可見寄存器 不可見寄存器 。

當(dāng)進(jìn)程在被執(zhí)行的過(guò)程中,一定會(huì)存在大量的臨時(shí)數(shù)據(jù),會(huì)暫存在 CPU 內(nèi)的寄存器中。

寄存器上數(shù)據(jù)的重要性:

我們把進(jìn)程在運(yùn)行中產(chǎn)生的各種寄存器數(shù)據(jù),我們叫進(jìn)程的硬件上下文數(shù)據(jù)。

  • 當(dāng)進(jìn)程被剝離:需要保存上下文數(shù)據(jù)
  • 當(dāng)進(jìn)程恢復(fù)時(shí):需要將曾經(jīng)保存的上下文數(shù)據(jù)恢復(fù)到寄存器中。

上下文在哪里保存?task_struct?!

?? 注意事項(xiàng):要準(zhǔn)確區(qū)分,"寄存器" 和 "寄存器里的數(shù)據(jù)" 的區(qū)別。

  • 寄存器只有一套,但是寄存器里的數(shù)據(jù)有多份。

Ⅲ. 環(huán)境變量(Environment Var)

0x00 引入:思考一個(gè)問(wèn)題

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

? 思考:為什么我們的代碼運(yùn)行要帶路徑,而系統(tǒng)的指令不用帶路徑?

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

如果我們直接輸入我們的可執(zhí)行程序,會(huì)顯示?bash: process: command not found?

我們說(shuō)過(guò),執(zhí)行系統(tǒng)的指令實(shí)際上也是程序,系統(tǒng)的指令你也是可以帶上路徑的:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

其實(shí),我們可以通過(guò)它的報(bào)錯(cuò) "command not found" 發(fā)現(xiàn)些什么!

要執(zhí)行一個(gè)可執(zhí)行程序,前提是要先找到它。

現(xiàn)在我們的問(wèn)題就可以轉(zhuǎn)化成:為什么系統(tǒng)的命令能找到,而我們自己的程序找不到?

?? 真相

系統(tǒng)中是存在相關(guān)的?環(huán)境變量,保存了程序的搜索路徑的!

為什么我們的代碼運(yùn)行要帶路徑,而系統(tǒng)的指令不用帶?其本質(zhì)是由環(huán)境變量 ?引起的!

0x01 環(huán)境變量 PATH?

我們可以通過(guò)?env 指令查看環(huán)境變量:

$ env

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

這些變量每一個(gè)都有它特殊的用途,系統(tǒng)中搜索可執(zhí)行程序的環(huán)境變量叫做?。

我們可以通過(guò) grep?去抓一下:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

如何查看環(huán)境變量的內(nèi)容?我們可以使用 echo??去顯示:

$ echo $PATH

?在??前加上 $ 符即可打印出環(huán)境變量:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

環(huán)境變量??中會(huì)承載多種路徑,中間用冒號(hào) ( : ) 作為分隔符。

我們?cè)賵?zhí)行某一個(gè)程序時(shí),比如執(zhí)行 ls?時(shí),我們的系統(tǒng)識(shí)別到?ls?的輸入時(shí),會(huì)在上面路徑中逐個(gè)搜索,只要在特定的路徑下找到了?ls,就會(huì)執(zhí)行特定路徑下的?ls?并停止搜索。

換言之,?就提供了環(huán)境變量,可執(zhí)行程序搜索的路徑。

我們的?ls?在? usr/bin? 路徑下,這說(shuō)明當(dāng)前的?ls?在??中是可以被找到的,

所以執(zhí)行?ls?的時(shí)侯自然可以不帶路徑,所以我們自己的 ?process?不帶路徑自然就不能執(zhí)行。

因?yàn)楫?dāng)前的 ?process?所在的路徑并沒(méi)有這里的環(huán)境變量,程序在搜索的時(shí)侯找了路徑也沒(méi)有找到你這個(gè)可執(zhí)行程序,搜索完找不到,自然就報(bào) "command not found" 了。

0x02 實(shí)踐:讓自己的可執(zhí)行程序不帶路徑也能執(zhí)行

那我現(xiàn)在就想讓我的可執(zhí)行程序 process?不帶路徑直接執(zhí)行起來(lái),可以嗎?

可以!我們先講述一種簡(jiǎn)單粗暴的方式,直接把我們的可執(zhí)行程序 cp?拷貝到系統(tǒng)的路徑中:

$ sudo cp process /usr/bin/

既然系統(tǒng)的所有命令都在?usr/bin 路徑下,那我們把我們的?process 拷進(jìn)去就行了。

實(shí)際上,剛才那個(gè)操作我們可以稱之為 "軟件被安裝到系統(tǒng)上",但是我們不建議你去自己安裝。

也更不建議你將你的指令拷貝到 Linux 系統(tǒng)路徑下,因?yàn)檫@會(huì)污染 Linux 下的命令池。

經(jīng)常這么干時(shí)間久了你可能都忘了這個(gè)是干什么的,半年之后:

"誒!我這系統(tǒng)里怎么還有個(gè) process?"

可能就分不清是你寫的還是系統(tǒng)的了,所以我們不建議這么做!

更好的方式是將?process 所處的路徑也添加到環(huán)境變量中。

前置:在 Linux 命令行中,我們也是可以定義變量的,命令行變量分為兩種:

  • 普通變量
  • 環(huán)境變量(具備全局屬性)

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

命令行上直接寫,變量名等于值,你所定義的這個(gè)變量?,就是 本地變量。

(我們這里先對(duì)本地變量做一個(gè)小小的理解,稍后我們還會(huì)講解的)

用系統(tǒng)查看環(huán)境變量的命令 env?去查看一下這個(gè)本地變量,會(huì)發(fā)現(xiàn)根本找不到,

因?yàn)樗灰原h(huán)境變量的形式存在,但是它是存在的!

如果你想讓一個(gè)變量變成環(huán)境變量,你可以通過(guò) export 導(dǎo)出一個(gè)在系統(tǒng)中可以查看的環(huán)境變量:

$ export []=[]

通過(guò) env 并 grep 一下這個(gè)變量,我們就能找到我們導(dǎo)出的環(huán)境變量了:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

(至于環(huán)境變量和本地變量之間的差別,我們稍后再講)

現(xiàn)在我們知道該如何導(dǎo)環(huán)境變量了,現(xiàn)在我想執(zhí)行我的程序不想再帶路徑該怎么辦呢?

?? 操作演示:下面我們來(lái)做個(gè)好玩的:

把我們的環(huán)境變量,當(dāng)前路徑導(dǎo)入到??路徑中看看會(huì)發(fā)生什么:

$ export PATH=[路徑]

這么一導(dǎo)之后,我們發(fā)現(xiàn)我們的?process 可以跟系統(tǒng)指令一樣不帶路徑直接執(zhí)行了:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

但是好像我們的系統(tǒng)指令全都寄了?。?!

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?啊這,怎么會(huì)這樣呢?!

因?yàn)槟惆??里的環(huán)境變量都搞沒(méi)了,只剩你自己的路徑了,所以這些指令自然都找不到了。

出現(xiàn)了你剛才自己可執(zhí)行程序不帶路徑后 Enter 的報(bào)錯(cuò) "command not found" 。

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?這……難道環(huán)境污染了(緊張)?我的要服務(wù)器壞掉了(害怕)?

不用擔(dān)心!在命令行上設(shè)置的環(huán)境變量是具有臨時(shí)性的,只在你登陸期間有效。

你剛才的修改只是在內(nèi)存中的修改,不會(huì)修改系統(tǒng)當(dāng)中的相關(guān)配置文件。

所以你只需要關(guān)掉重開就行了,隨便搞,不會(huì)影響。

如果你想讓你的環(huán)境變量設(shè)置永久有效的話,是需要更改配置文件的,該配置文件在系統(tǒng)當(dāng)中,跟云服務(wù)器沒(méi)有關(guān)系。

那我們?cè)撛趺醋瞿???lái),這么做:

$ export PATH=$PATH:[路徑]

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

0x03 環(huán)境變量的導(dǎo)入和解除

剛才我們通過(guò) export 去導(dǎo)入變量,如果想取消一個(gè)變量,就可以使用 unset 來(lái)取消變量設(shè)置:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

此時(shí)我們使用?unset 環(huán)境變量,就可以解除 foo:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

" 這些東西實(shí)際上都是 shell 命令,export 是導(dǎo)出,unset 是取消 "

0x04 介紹幾個(gè)常見的環(huán)境變量

剛才我們介紹了環(huán)境變量?,它是用來(lái)指定命令的搜索路徑的。?

下面我們來(lái)詳細(xì)介紹一下常見的環(huán)境變量,剛才我們就是用?env 指令去查看環(huán)境變量的:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

我們能看到有很多環(huán)境變量,比如下面這個(gè)??就是表示 "對(duì)應(yīng)這臺(tái)主機(jī)的主機(jī)名" 。

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

我們同樣也是可以通過(guò)?echo?指令帶上 $ 去查看環(huán)境變量:

echo $HOSTNAME

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

再比如?,它可以告訴你你的 shell 在哪里,通常是 /bin/bash?

echo $SHELL

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

得益于 Linux 存在歷史命令的記錄功能,我們可以在 Xshell 里 ↑ ↓ 顯出歷史命令,就像這樣:?

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

"總不能一直記吧?肯定是有個(gè)指令記錄的閾值的!"

沒(méi)錯(cuò)!Linux 最多允許你記錄的歷史命令條數(shù)是 3000。

而我們接下來(lái)要介紹的???(History Size),就是定義一共記錄多少歷史指令的環(huán)境變量:

$ echo $HISTSIZE

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

順便一提,我們可以通過(guò) history?命令令去查看我們歷史敲過(guò)的所有命令:

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?再來(lái)!我們?cè)僬f(shuō)幾個(gè) ~

我們一般是通過(guò)?whoami 指令去查看當(dāng)前是誰(shuí)正在使用系統(tǒng)的,而??就記錄了當(dāng)前誰(shuí)在用。

$ echo $USER

???????linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

不知道大家有沒(méi)有關(guān)注過(guò),每次登陸服務(wù)器默認(rèn)所處的路徑?就是默認(rèn)所處的工作目錄。

root 用戶的工作目錄和普通用戶的工作目錄不同,那 Linux 是如何知道的呢??

:指定用戶的主工作目錄(即用戶登陸到 Linux 系統(tǒng)中時(shí),默認(rèn)的目錄)

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux

當(dāng)然還有很多,比如??記錄了誰(shuí)登的服務(wù)器、地址、端口號(hào)等。

(環(huán)境變量實(shí)在多,全部講完不太現(xiàn)實(shí),上面我們講的都是一些常用的,歡迎補(bǔ)充)

0x05 尾記

命令行中啟動(dòng)的進(jìn)程,父進(jìn)程全部都是 bash 。

環(huán)境變量具有全局屬性,環(huán)境變量是會(huì)被子進(jìn)程繼承下去的。

所謂的本地變量,本質(zhì)就是在 bash 內(nèi)部定義的變量,不會(huì)被子進(jìn)程繼承下去。

Linux 下大部分命令都是通過(guò)子進(jìn)程的方式執(zhí)行的,但是還有一部分命令不通過(guò)子進(jìn)程的方式執(zhí)行,而是由 bash 自己執(zhí)行(調(diào)用自己的對(duì)應(yīng)的函數(shù)來(lái)完成特定的功能,比如 cd 命令),我們把這種命令叫做 內(nèi)建命令

linux表情包,看表情包學(xué)Linux,服務(wù)器,運(yùn)維,linux?

?? [ 筆者 ]? ?王亦優(yōu)
?? [ 更新 ]? ?2023.2.10
? [ 勘誤 ]?? /* 暫無(wú) */
?? [ 聲明 ]? ?由于作者水平有限,本文有錯(cuò)誤和不準(zhǔn)確之處在所難免,
              本人也很想知道這些錯(cuò)誤,懇望讀者批評(píng)指正!

?? 參考資料?

C++reference[EB/OL]. []. http://www.cplusplus.com/reference/.

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

比特科技. Linux[EB/OL]. 2021[2021.8.31?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-803076.html

到了這里,關(guān)于【看表情包學(xué)Linux】進(jìn)程優(yōu)先級(jí) | 查看系統(tǒng)進(jìn)程 | 優(yōu)先級(jí)修改 | 進(jìn)程的切換 | 競(jìng)爭(zhēng)性與獨(dú)立性 | 并行并發(fā)的概念 | 環(huán)境變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級(jí)

    Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級(jí)

    ??北塵_ :個(gè)人主頁(yè) ??個(gè)人專欄 :《Linux操作系統(tǒng)》《經(jīng)典算法試題 》《C++》 《數(shù)據(jù)結(jié)構(gòu)與算法》 ??走在路上,不忘來(lái)時(shí)的初心 為了弄明白正在運(yùn)行的進(jìn)程是什么意思,我們需要知道進(jìn)程的不同狀態(tài)。一個(gè)進(jìn)程可以有幾個(gè)狀態(tài)(在 Linux內(nèi)核里,進(jìn)程有時(shí)候也叫做任務(wù))

    2024年02月05日
    瀏覽(23)
  • 【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級(jí)和進(jìn)程切換

    【Linux】進(jìn)程狀態(tài)、進(jìn)程優(yōu)先級(jí)和進(jìn)程切換

    作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):了解馮諾依曼體系結(jié)構(gòu)與操作系統(tǒng),掌握Linux的進(jìn)程 毒雞湯:一花凋零荒蕪不了整個(gè)春天,一次挫折也荒廢不了整個(gè)人生。 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲??

    2024年02月04日
    瀏覽(22)
  • 【Linux】進(jìn)程周邊003之進(jìn)程優(yōu)先級(jí)

    【Linux】進(jìn)程周邊003之進(jìn)程優(yōu)先級(jí)

    ? ?? 樊梓慕: 個(gè)人主頁(yè) ??? 個(gè)人專欄: 《C語(yǔ)言》 《數(shù)據(jù)結(jié)構(gòu)》 《藍(lán)橋杯試題》 《LeetCode刷題筆記》 《實(shí)訓(xùn)項(xiàng)目》 《C++》 《Linux》 ?? 每一個(gè)不曾起舞的日子,都是對(duì)生命的辜負(fù) 目錄 前言 1.基本概念 2.PRI與NI 3.利用top命令更改已存在進(jìn)程的nice值 4.通過(guò)renice命令更改進(jìn)程

    2024年02月03日
    瀏覽(20)
  • 【Linux】進(jìn)程優(yōu)先級(jí) && 進(jìn)程切換 && 環(huán)境變量

    【Linux】進(jìn)程優(yōu)先級(jí) && 進(jìn)程切換 && 環(huán)境變量

    目錄 一、進(jìn)程優(yōu)先級(jí) ?1、優(yōu)先級(jí)概念 ?2、優(yōu)先級(jí)特點(diǎn) ?3、修改Linux下的優(yōu)先級(jí) 二、進(jìn)程切換 ?1、進(jìn)程特性 ?2、進(jìn)程切換 三、環(huán)境變量 ?1、基本概念 ?2、常見環(huán)境變量 ?3、查看環(huán)境變量方法 ?4、PATH環(huán)境變量 ?5、和環(huán)境變量相關(guān)的命令 ?6、環(huán)境變量的組織方式 ?7、通過(guò)

    2024年02月11日
    瀏覽(34)
  • Linux_進(jìn)程的優(yōu)先級(jí)&&環(huán)境變量&&上下文切換&&優(yōu)先級(jí)隊(duì)列

    Linux_進(jìn)程的優(yōu)先級(jí)&&環(huán)境變量&&上下文切換&&優(yōu)先級(jí)隊(duì)列

    什么是優(yōu)先級(jí)? 指定一個(gè)進(jìn)程獲取某種資源的先后順序 本質(zhì)是進(jìn)程獲取cpu資源的優(yōu)先順序 為什么要有優(yōu)先級(jí) 進(jìn)程訪問(wèn)的資源(CPU)是有限的 操作系統(tǒng)關(guān)于調(diào)度和優(yōu)先級(jí)的原則:分時(shí)操作系統(tǒng),基本的公平,如果進(jìn)程因?yàn)殚L(zhǎng)時(shí)間不被調(diào)整,就造成了饑餓問(wèn)題 Linux的優(yōu)先級(jí)特

    2024年04月09日
    瀏覽(22)
  • Linux--進(jìn)程狀態(tài)與優(yōu)先級(jí)

    Linux--進(jìn)程狀態(tài)與優(yōu)先級(jí)

    進(jìn)程指的是程序在執(zhí)行過(guò)程中的活動(dòng)。進(jìn)程是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位 。 進(jìn)程可以看作是程序的一次執(zhí)行實(shí)體,它包含了程序代碼、數(shù)據(jù)以及相關(guān)的執(zhí)行上下文信息。操作系統(tǒng)通過(guò)創(chuàng)建、調(diào)度和管理多個(gè)進(jìn)程來(lái)實(shí)現(xiàn)對(duì)計(jì)算機(jī)系統(tǒng)資源的有效利用。 每個(gè)進(jìn)程都

    2024年02月01日
    瀏覽(26)
  • 【Linux】進(jìn)程優(yōu)先級(jí) + 環(huán)境變量

    【Linux】進(jìn)程優(yōu)先級(jí) + 環(huán)境變量

    在學(xué)完進(jìn)程狀態(tài)之后,本章我們將來(lái)學(xué)習(xí)一下環(huán)境變量,還有進(jìn)程優(yōu)先級(jí)等??????…… 本文實(shí)驗(yàn)系統(tǒng): CentOS 7.6 ~ 優(yōu)先級(jí)是權(quán)限嗎? 在之前我們講解過(guò)什么是權(quán)限:?? 傳送門 我們這里講的優(yōu)先級(jí)并不是權(quán)限,那么優(yōu)先級(jí)到底是什么呢? 如果我們說(shuō)權(quán)限是能不能的問(wèn)題的

    2024年02月05日
    瀏覽(27)
  • Linux進(jìn)程狀態(tài)及優(yōu)先級(jí)

    Linux進(jìn)程狀態(tài)及優(yōu)先級(jí)

    本文已收錄至《Linux知識(shí)與編程》專欄! 作者:ARMCSKGT 演示環(huán)境:CentOS 7 操作系統(tǒng)想管理好進(jìn)程并不簡(jiǎn)單,對(duì)于Linux系統(tǒng)將進(jìn)程分為不同的狀態(tài)進(jìn)行管理;例如運(yùn)行,阻塞,休眠狀態(tài)等等,每一種狀態(tài)都有不同的效果,這樣才能發(fā)揮他的全部功效,且進(jìn)程之間也有優(yōu)先級(jí),本

    2024年02月03日
    瀏覽(17)
  • 【Linux】詳談進(jìn)程優(yōu)先級(jí)&&進(jìn)程調(diào)度與切換

    【Linux】詳談進(jìn)程優(yōu)先級(jí)&&進(jìn)程調(diào)度與切換

    ???????? 進(jìn)程要訪問(wèn)某種資源,進(jìn)程通過(guò)一定的方式排隊(duì),確認(rèn)享受資源的優(yōu)先順序。計(jì)算機(jī)中資源過(guò)少,所以進(jìn)程訪問(wèn)某種資源時(shí)需要排隊(duì)。 ???????? 進(jìn)程的優(yōu)先級(jí)其實(shí)就是PCB中的一個(gè)整形變量(int PRI)。Linux中進(jìn)程的默認(rèn)優(yōu)先級(jí)是80,這個(gè)默認(rèn)優(yōu)先級(jí)是可以被修改

    2024年03月22日
    瀏覽(24)
  • 【Linux】進(jìn)程狀態(tài)|優(yōu)先級(jí)|進(jìn)程切換|環(huán)境變量

    【Linux】進(jìn)程狀態(tài)|優(yōu)先級(jí)|進(jìn)程切換|環(huán)境變量

    ?? 運(yùn)行隊(duì)列: 進(jìn)程是如何在CPU上運(yùn)行的:CPU在內(nèi)核上維護(hù)了一個(gè)運(yùn)行隊(duì)列,進(jìn)行進(jìn)程的管理。讓進(jìn)程進(jìn)入隊(duì)列,本質(zhì)就是將該進(jìn)程的task_struct 結(jié)構(gòu)體對(duì)象放入運(yùn)行隊(duì)列之中。這個(gè)隊(duì)列在內(nèi)存中,由操作系統(tǒng)自己維護(hù)。 ?? 運(yùn)行狀態(tài): 運(yùn)行狀態(tài) 進(jìn)程PCB在運(yùn)行隊(duì)列里就是運(yùn)行

    2024年02月02日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包