前言
前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的一些知識,也學(xué)習(xí)了一些Linux的基本操作,也了解并學(xué)習(xí)了有關(guān)Linux開發(fā)工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代碼也相信大家都掌握的不錯(cuò),上一篇文章我們了解了關(guān)于進(jìn)程的基本概念,今天博主帶大家了解一下 —— 進(jìn)程優(yōu)先級以及環(huán)境變量, 下面話不多說坐穩(wěn)扶好咱們要開車了?。。??
一、進(jìn)程優(yōu)先級
1. 優(yōu)先級概念
進(jìn)程優(yōu)先級(Process Priority)是操作系統(tǒng)用來決定進(jìn)程獲取CPU資源的順序的一種機(jī)制。一般來說,進(jìn)程優(yōu)先級較高的進(jìn)程會獲得更多的CPU時(shí)間片,從而更頻繁地執(zhí)行。進(jìn)程優(yōu)先級的設(shè)置通常由操作系統(tǒng)或系統(tǒng)管理員來決定,而不是由普通用戶來指定。進(jìn)程優(yōu)先級的目的是根據(jù)進(jìn)程的重要性或性能需求來分配系統(tǒng)資源,以實(shí)現(xiàn)對系統(tǒng)資源的合理分配和性能調(diào)整。較高優(yōu)先級的進(jìn)程通常會被更快地響應(yīng)和執(zhí)行,而較低優(yōu)先級的進(jìn)程則可能會被抑制或推遲。
2. Linux查看系統(tǒng)進(jìn)程
在linux系統(tǒng)中,用ps –l命令則會類似輸出以下幾個(gè)內(nèi)容:
我們很容易注意到其中的幾個(gè)重要信息,有下:
- UID : 代表執(zhí)行者的身份。
- PID : 代表這個(gè)進(jìn)程的代號。
- PPID :代表這個(gè)進(jìn)程是由哪個(gè)進(jìn)程發(fā)展衍生而來的,亦即父進(jìn)程的代號。
- PRI :代表這個(gè)進(jìn)程可被執(zhí)行的優(yōu)先級,其值越小越早被執(zhí)行。
- NI :代表這個(gè)進(jìn)程的nice值。
3. PRI(Priority)和NI(Nice)
PRI是指進(jìn)程的實(shí)際優(yōu)先級(Priority)。在Unix/Linux系統(tǒng)中,PRI是一個(gè)整數(shù)值,代表了進(jìn)程在調(diào)度時(shí)的優(yōu)先級。較低的PRI值表示較高的優(yōu)先級,而較高的PRI值表示較低的優(yōu)先級。系統(tǒng)中的PRI值范圍可以是不固定的,具體取決于操作系統(tǒng)的實(shí)現(xiàn)。
NI是指進(jìn)程的Nice值(Nice Value)。Nice值是Unix/Linux系統(tǒng)中用于調(diào)整進(jìn)程優(yōu)先級的參數(shù)。Nice值的范圍通常是從-20到19,其中-20是最高優(yōu)先級,19是最低優(yōu)先級。與PRI不同的是,較低的NI值表示較低的優(yōu)先級,而較高的NI值表示較高的優(yōu)先級。
PRI和NI之間存在一個(gè)簡單的轉(zhuǎn)換關(guān)系。通常,PRI = 20 + NI,即PRI值等于20加上Nice值。因此,通過修改NI值,可以間接地修改進(jìn)程的PRI值,從而調(diào)整進(jìn)程的優(yōu)先級。
可以使用nice命令來設(shè)置進(jìn)程的Nice值。例如,使用以下命令可以將進(jìn)程的Nice值設(shè)置為10:
nice -n 10 command
其中,command是要執(zhí)行的命令或程序。
除了使用nice命令外,還可以使用renice命令來修改已經(jīng)運(yùn)行的進(jìn)程的Nice值。例如,使用以下命令可以將進(jìn)程的Nice值修改為5:
renice -n 5 -p pid
其中,pid是要修改Nice值的進(jìn)程的進(jìn)程ID。
????注意:只有具有足夠權(quán)限的用戶才能修改進(jìn)程的NI值,一般需要管理員或具有特殊權(quán)限的用戶才能進(jìn)行修改。
二、環(huán)境變量
1. 概念
環(huán)境變量是操作系統(tǒng)中用于存儲和管理系統(tǒng)級別的配置信息的一種機(jī)制。它們是由操作系統(tǒng)或應(yīng)用程序設(shè)置的鍵值對,用于指定特定應(yīng)用程序或整個(gè)系統(tǒng)在運(yùn)行時(shí)的行為。環(huán)境變量通常包含一些重要的配置信息,如路徑、語言、時(shí)區(qū)等。通過設(shè)置和讀取環(huán)境變量,可以在不修改應(yīng)用程序本身的情況下,對其進(jìn)行配置和定制。應(yīng)用程序可以使用環(huán)境變量來獲取配置參數(shù)或根據(jù)不同的環(huán)境執(zhí)行不同的操作。
在不同的操作系統(tǒng)中,設(shè)置和讀取環(huán)境變量的方法可能會有所不同。例如,在Unix和Linux系統(tǒng)中,可以使用"export"命令設(shè)置環(huán)境變量,通過"$"符號引用環(huán)境變量的值。
2. 查看環(huán)境變量方法
在Linux下,可以使用以下方法來查看環(huán)境變量:
-
使用"printenv"命令:
在終端中輸入"printenv"命令,將顯示當(dāng)前會話中的所有環(huán)境變量及其對應(yīng)的值。 -
使用"echo"命令:
可以使用"echo"命令來顯示單個(gè)環(huán)境變量的值。例如,要查看"PATH"環(huán)境變量的值,可以輸入以下命令:
echo $PATH
類似地,可以將"$"符號后面的部分替換為所需的環(huán)境變量名稱。
-
使用"env"命令:
"env"命令可以顯示當(dāng)前會話中的環(huán)境變量和其值。在終端中輸入"env"命令即可顯示所有環(huán)境變量。 -
查看特定配置文件:
根據(jù)不同的Linux發(fā)行版,可能會有不同的配置文件保存環(huán)境變量。在常見的發(fā)行版如Ubuntu和CentOS中,可以查看"/etc/environment"文件來獲取全局環(huán)境變量的值。
注意:這些方法都是在終端中查看當(dāng)前會話中的環(huán)境變量。如果您希望查看永久環(huán)境變量(即在每次登錄時(shí)都生效的環(huán)境變量),則可以查看用戶的bash配置文件,如~ /.bashrc或~/.bash_profile中的設(shè)置。
3. 環(huán)境變量的組織方式
每個(gè)程序都會收到一張環(huán)境表,環(huán)境表是一個(gè)字符指針數(shù)組,每個(gè)指針指向一個(gè)以’\0’結(jié)尾的環(huán)境字符串。
4.通過代碼獲取環(huán)境變量
- 命令行第三個(gè)參數(shù)
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for(; env[i]; i++)
{
printf("%s\n", env[i]);
}
return 0;
}
- 通過第三方變量environ獲取
#include <stdio.h>
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++)
{
printf("%s\n", environ[i]);
}
return 0;
}
libc中定義的全局變量environ指向環(huán)境變量表,environ沒有包含在任何頭文件中,所以在使用時(shí) 要用extern聲明。
5. 環(huán)境變量的特點(diǎn)
-
全局性:Linux環(huán)境變量是在整個(gè)操作系統(tǒng)級別定義和生效的。它們對所有用戶和進(jìn)程都是全局可見的,因此可以在系統(tǒng)中的任何位置和任何進(jìn)程中使用和訪問。
-
動(dòng)態(tài)性:Linux環(huán)境變量可以在運(yùn)行時(shí)動(dòng)態(tài)地進(jìn)行修改、添加或刪除。這意味著可以根據(jù)需要更改環(huán)境變量的值,而無需重新編譯或重啟程序。
-
字符串格式:Linux環(huán)境變量的值通常以字符串的形式表示。這使得環(huán)境變量非常適合存儲配置信息、路徑、用戶名等文本數(shù)據(jù)。
-
持久性:Linux環(huán)境變量可以在系統(tǒng)啟動(dòng)時(shí)由各種不同的方式進(jìn)行設(shè)置。例如,在
/etc/profile
、~/.bashrc
或/etc/environment
等文件中設(shè)置環(huán)境變量,使其在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載。 -
繼承性:Linux環(huán)境變量可以被派生進(jìn)程繼承。這意味著當(dāng)創(chuàng)建子進(jìn)程時(shí),子進(jìn)程會繼承父進(jìn)程的環(huán)境變量。這種特性使得環(huán)境變量可以在整個(gè)進(jìn)程樹中自動(dòng)傳遞并共享。
-
臨時(shí)性:Linux環(huán)境變量可以在當(dāng)前的終端會話中設(shè)置,并在會話結(jié)束后自動(dòng)消失。這對于臨時(shí)設(shè)置和調(diào)試非常有用。
-
SHELL變量和環(huán)境變量:在Linux中,有些特殊的環(huán)境變量被稱為SHELL變量,用于控制和配置當(dāng)前的Shell環(huán)境。這些變量在當(dāng)前Shell中起作用,而不會傳遞給其他進(jìn)程。
總結(jié)
一、進(jìn)程優(yōu)先級:
- 優(yōu)先級概念:進(jìn)程優(yōu)先級決定了進(jìn)程在系統(tǒng)資源分配和競爭中的優(yōu)先級別。優(yōu)先級較高的進(jìn)程會在資源有限時(shí)獲得更多的處理時(shí)間和資源。
- Linux查看系統(tǒng)進(jìn)程:通過命令行工具如
top
、ps
等可以實(shí)時(shí)查看系統(tǒng)中運(yùn)行的進(jìn)程以及它們的優(yōu)先級信息。 - PRI(Priority)和NI(Nice):在Linux中,進(jìn)程的優(yōu)先級主要通過PRI和NI來表示。PRI的范圍是-20(最高優(yōu)先級)到+19(最低優(yōu)先級),而NI的范圍是-20到+19,它們之間存在一定的關(guān)系。較小的PRI值表示較高的優(yōu)先級。
二、環(huán)境變量:
環(huán)境變量在Linux系統(tǒng)中具有重要作用,用于存儲和傳遞配置信息、路徑、用戶名等。具體內(nèi)容如下:
- 概念:環(huán)境變量是在操作系統(tǒng)層面上定義和生效的全局變量,它們可以在系統(tǒng)中的任何位置和任何進(jìn)程中使用和訪問。
- 查看環(huán)境變量方法:使用
printenv
或echo
命令可以在終端中查看當(dāng)前環(huán)境變量的值,或者通過env
命令列出所有環(huán)境變量。 - 環(huán)境變量的組織方式:環(huán)境變量以key-value的形式存儲,其中key是變量名,value是變量的值。多個(gè)環(huán)境變量以列表或配置文件的形式進(jìn)行組織。
- 通過代碼獲取環(huán)境變量:可以使用編程語言提供的函數(shù)如
getenv
來獲取指定環(huán)境變量的值,然后在代碼中進(jìn)行使用。 - 環(huán)境變量的特點(diǎn):環(huán)境變量具有全局性、動(dòng)態(tài)性、文本格式等特點(diǎn)。它們可以全局共享、動(dòng)態(tài)修改,適應(yīng)不同的環(huán)境和配置需求。
溫馨提示
感謝您對博主文章的關(guān)注與支持!如果您喜歡這篇文章,可以點(diǎn)贊、評論和分享給您的同學(xué),這將對我提供巨大的鼓勵(lì)和支持。另外,我計(jì)劃在未來的更新中持續(xù)探討與本文相關(guān)的內(nèi)容。我會為您帶來更多關(guān)于Linux以及C++編程技術(shù)問題的深入解析、應(yīng)用案例和趣味玩法等。如果感興趣的話可以關(guān)注博主的更新,不要錯(cuò)過任何精彩內(nèi)容!文章來源:http://www.zghlxwxcb.cn/news/detail-699987.html
再次感謝您的支持和關(guān)注。我們期待與您建立更緊密的互動(dòng),共同探索Linux、C++、算法和編程的奧秘。祝您生活愉快,排便順暢!文章來源地址http://www.zghlxwxcb.cn/news/detail-699987.html
到了這里,關(guān)于【探索Linux】—— 強(qiáng)大的命令行工具 P.8(進(jìn)程優(yōu)先級、環(huán)境變量)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!