最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux中的進(jìn)程狀態(tài)和優(yōu)先級

 更新時間:2023年09月15日 10:06:04   作者:格式化、、  
這篇文章主要介紹了Linux中的進(jìn)程狀態(tài)和優(yōu)先級方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

本篇文章進(jìn)行操作系統(tǒng)中進(jìn)程狀態(tài)的學(xué)習(xí)!??!

1、進(jìn)程狀態(tài)

1.1、概念

在學(xué)習(xí)OS中的進(jìn)程狀態(tài)時,書上的描述為了在Linux、Windows、Android中都能說的通,往往加深了理解的難度

我們可以先學(xué)習(xí)具體的Linux進(jìn)程狀態(tài),然后再介紹然后再介紹OS學(xué)科的狀態(tài)如何理解

操作系統(tǒng)是計算機(jī)中的一門“哲學(xué)”,要考慮很多情況

貼幾張不同的進(jìn)程狀態(tài)圖

1.2、具體的進(jìn)程狀態(tài)

1. 具體的進(jìn)程狀態(tài)可以分為四種:

運(yùn)行態(tài):進(jìn)程只要被加載到運(yùn)行隊列中

如何理解進(jìn)程被加載到運(yùn)行隊列中?

運(yùn)行隊列也是一個對象,也可以通過描述再組織進(jìn)行管理

運(yùn)行隊列的屬性其中有PCB指針,可以通過隊列的性質(zhì)或復(fù)雜的數(shù)據(jù)結(jié)構(gòu)進(jìn)行管理

調(diào)度器的主要作用是在就緒隊列中選擇優(yōu)先級最高的任務(wù)運(yùn)行,如果優(yōu)先級最高的任務(wù)不止一個,則選擇隊頭的任務(wù)運(yùn)行

當(dāng)運(yùn)行隊列中的進(jìn)程被調(diào)度時,CPU會執(zhí)行該進(jìn)程的代碼

在這里插入圖片描述

2. 終止態(tài):進(jìn)程已經(jīng)終止,但還存在,只是永遠(yuǎn)不運(yùn)行了,隨時等待被釋放

進(jìn)程都已經(jīng)終止了,為什么不立刻釋放資源,而要維護(hù)一個終止態(tài)呢?

因為釋放進(jìn)程的資源需要時間

CPU不可能一直盯著這個進(jìn)程,可能還會在做其他事情,所以要維護(hù)一個終止態(tài)

例子:比如你去吃飯,吃完后,叫老板結(jié)賬,老板可能沒回應(yīng)你,他可能在給別人點餐

3. 阻塞態(tài):進(jìn)程在等待某種資源時(非CPU資源),資源沒有就緒的時候,該進(jìn)程會到對應(yīng)的資源等待隊列中進(jìn)行排隊,該進(jìn)程的代碼并沒有運(yùn)行,就叫做"阻塞態(tài)"

一個進(jìn)程在被CPU執(zhí)行的時候,用的不僅僅是CPU的資源

進(jìn)程可能申請更多的資源,如:磁盤、網(wǎng)卡、顯卡、顯示器資源和聲卡資源等等…

申請對應(yīng)的資源無法滿足時,是需要排隊的,比如:CPU資源在運(yùn)行隊列中排隊

申請其他慢設(shè)備的資源在對應(yīng)的隊列中進(jìn)行排隊

4. 掛起態(tài):當(dāng)內(nèi)存不足時,OS會將短期內(nèi)不會被調(diào)度的進(jìn)程的數(shù)據(jù)和代碼挪動到磁盤中的swap分區(qū),當(dāng)內(nèi)存足夠時,會重新加載到內(nèi)存中

1.3、Linux進(jìn)程狀態(tài)

Linux內(nèi)核源代碼中的狀態(tài)

/*
* The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
static const char * const task_state_array[] = 
{
	"R (running)", /* 0 */
	"S (sleeping)", /* 1 */
	"D (disk sleep)", /* 2 */
	"T (stopped)", /* 4 */
	"t (tracing stop)", /* 8 */
	"X (dead)", /* 16 */
	"Z (zombie)", /* 32 */
};

1.3.1、R運(yùn)行狀態(tài)(運(yùn)行態(tài))

R (running)運(yùn)行狀態(tài):進(jìn)程是在運(yùn)行中或在運(yùn)行隊列中

-

R狀態(tài)一般是看不出來的,因為CPU的運(yùn)算速度非???,當(dāng)你運(yùn)行程序時,CPU就已經(jīng)執(zhí)行結(jié)束

比如在死循環(huán)中打印hello world,進(jìn)程狀態(tài)一般為"S",因為CPU太快了

CPU一般在等待顯示器資源就緒,所以狀態(tài)一直為S

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << "hello world!!!" << endl;
        sleep(3);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

通過不斷刷新ps指令來查看進(jìn)程狀態(tài)的變化:while :; do ps ajx | head -1 && ps ajx | grep ‘test’ | grep -v grep; sleep 2; echo “#############################################”; done

可以通過不斷的死循環(huán)來讓CPU一直不斷的工作,因為死循環(huán)沒有訪問外設(shè)資源

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

1.3.2、S/D睡眠狀態(tài)(阻塞態(tài))

S (sleeping)睡眠狀態(tài):意味著進(jìn)程在等待事件完成

這里的睡眠也叫做:可中斷睡眠(淺睡眠),因為它可以通過指令進(jìn)行中斷

可以使用 kill 【-9】 【進(jìn)程PID】進(jìn)行中斷

睡眠狀態(tài)是:該進(jìn)程申請的資源已經(jīng)被其他進(jìn)程使用,該進(jìn)程在對應(yīng)的“資源等待隊列中進(jìn)行等待,進(jìn)程中的代碼沒有執(zhí)行

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << "hello world!!!" << endl;
        sleep(3);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

D磁盤休眠狀態(tài)(Disk sleep)

D狀態(tài)也叫不可中斷睡眠狀態(tài)(uninterruptible sleep),在這個狀態(tài)的進(jìn)程通常會等待IO的結(jié)束

D狀態(tài)不能通過指令進(jìn)行中斷,必須等它由D狀態(tài)變成S狀態(tài)時才能殺死

經(jīng)過上圖可以發(fā)現(xiàn),如果堆磁盤進(jìn)行讀寫時,發(fā)生中斷,會導(dǎo)致嚴(yán)重的問題

所以才有了D狀態(tài),D狀態(tài)就算是OS也不能對其進(jìn)行釋放

D狀態(tài)不好模擬,但可以使用"dd指令"進(jìn)行模擬

1.3.3、T/t停止?fàn)顟B(tài)

T停止?fàn)顟B(tài)(stopped):

可以通過發(fā)送 SIGSTOP 信號或快捷鍵【ctrl+z】給進(jìn)程來停止(T)進(jìn)程

這個被暫停的進(jìn)程可以通過發(fā)送 SIGCONT 信號讓進(jìn)程繼續(xù)運(yùn)行

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << getpid() << endl;
        sleep(2);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

可以通過kill 【-19】 【進(jìn)程PID】將指定進(jìn)程發(fā)生停止運(yùn)行信號

kill 【-18】【進(jìn)程PID】可以恢復(fù)重新運(yùn)行

還有一種t (tracing stop)狀態(tài):針對gdb調(diào)試的狀態(tài)

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << getpid() << endl;
        sleep(2);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test -g
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ make
g++ test.cpp -o test -g
[lyh_sky@localhost lesson11]$ gdb test

1.3.3、X死亡狀態(tài)

X死亡狀態(tài)(dead):這個狀態(tài)只是一個返回狀態(tài),你不會在任務(wù)列表里看到這個狀態(tài)

1.3.4、Z(zombie)僵尸進(jìn)程

概念:

注意:僵尸進(jìn)程是不能被殺死的,因為已經(jīng)是僵尸了,不能再死第二次!?。?/p>

當(dāng)一個進(jìn)程退出的時候,一般不會直接進(jìn)入X狀態(tài)(死亡,資源可以立馬被會回收),而是進(jìn)入Z狀態(tài)

僵死狀態(tài)(Zombies)是一個比較特殊的狀態(tài)。當(dāng)進(jìn)程退出并且父進(jìn)程(使用wait()系統(tǒng)調(diào)用)沒有讀取到子進(jìn)程退出的返回代碼時就會產(chǎn)生僵死(尸)進(jìn)程

僵死進(jìn)程會以終止?fàn)顟B(tài)保持在進(jìn)程表中,并且會一直在等待父進(jìn)程讀取退出狀態(tài)代碼

只要子進(jìn)程退出,父進(jìn)程還在運(yùn)行,但父進(jìn)程沒有讀取子進(jìn)程狀態(tài),子進(jìn)程進(jìn)入Z狀態(tài)

進(jìn)程被創(chuàng)建出來是因為用戶有任務(wù)要交給它執(zhí)行,當(dāng)進(jìn)程退出的時候,我們不知道這個進(jìn)程完成的怎么樣了,一般需要將進(jìn)程的執(zhí)行結(jié)果告知給父進(jìn)程和OS

模擬Z狀態(tài):創(chuàng)建子進(jìn)程,子進(jìn)程退出,父進(jìn)程不退出(還在運(yùn)行),子進(jìn)程退出之后的狀態(tài)就是Z

[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    pid_t id = fork();
    int cnt = 3;
    if (id == 0)
    {
        while (cnt)
        {
            cout << "我是子進(jìn)程,我還有" << cnt-- << "秒時間結(jié)束" << endl;
            sleep(1);
        }
        cout << "進(jìn)入僵尸狀態(tài)" << endl;
        // 結(jié)束子進(jìn)程,并且返回0
        exit(0);
    }
    else
    {
        while (1)
        {}
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test -g
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

僵尸進(jìn)程危害:

如果沒有人回收子進(jìn)程的僵尸,該狀態(tài)會一直被維!該進(jìn)程的相關(guān)資源(task_struct)不會被釋放

那一個父進(jìn)程創(chuàng)建了很多子進(jìn)程,就是不回收,就會造成內(nèi)存資源的浪費(fèi)!因為數(shù)據(jù)結(jié)構(gòu)對象本身就要占用內(nèi)存,想想C中定義一個結(jié)構(gòu)體變量,是要在內(nèi)存的某個位置進(jìn)行開辟空間!

這樣就會造成內(nèi)存泄漏?。?!

2、孤兒進(jìn)程

init進(jìn)程:它是內(nèi)核啟動的第一個用戶級進(jìn)程

父進(jìn)程如果提前退出,那么子進(jìn)程后退出,進(jìn)入Z之后,那該如何處理呢?

父進(jìn)程先退出,子進(jìn)程就稱之為“孤兒進(jìn)程”

孤兒進(jìn)程被1號init進(jìn)程領(lǐng)養(yǎng),當(dāng)然要有init進(jìn)程回收嘍

[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    pid_t id = fork();
    int cnt = 3;
    if (id != 0)
    {
        while (cnt)
        {
            cout << "我是父進(jìn)程,我還有" << cnt-- << "秒時間結(jié)束" << endl;
            sleep(1);
        }
        cout << "父進(jìn)程退出" << endl;
        exit(0);
    }
    else
    {
        while (1)
        {}
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test -g
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

3、Linux進(jìn)程優(yōu)先級 

3.1、優(yōu)先級概念

進(jìn)程優(yōu)先級和權(quán)限的區(qū)別?

進(jìn)程優(yōu)先級是:進(jìn)程獲取外設(shè)資源的先后順序問題

權(quán)限是:擁有者、所屬組和other是否可以進(jìn)行讀寫執(zhí)行操作

它們的區(qū)別是:在學(xué)校中,我們?nèi)コ燥?,食堂分教師和學(xué)生,我們不能去教師食堂打飯,這就是權(quán)限。我們打飯時,需要排隊,排在前面可以先打到飯,后面的也一樣可以打到飯,這就是優(yōu)先級

概念:

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)對多任務(wù)環(huán)境的linux很有用,可以改善系統(tǒng)性能

還可以把進(jìn)程運(yùn)行到指定的CPU上,這樣一來,把不重要的進(jìn)程安排到某個CPU,可以大大改善系統(tǒng)整體性能

為什么要存在進(jìn)程優(yōu)先級呢???

排隊的本質(zhì)就是確認(rèn)進(jìn)程的優(yōu)先級

內(nèi)存里面永遠(yuǎn)都是進(jìn)程占大多數(shù),而資源是少數(shù)(外設(shè):磁盤、網(wǎng)卡、顯卡…)

進(jìn)程競爭資源是常態(tài),OS要確認(rèn)進(jìn)程的先后循序,不然就亂套了

3.2、Linux下進(jìn)程優(yōu)先級的操作

使用【ps -al】指令查看進(jìn)程更多的屬性(包含進(jìn)程優(yōu)先級):

top指令

進(jìn)入top后按“r”–>輸入進(jìn)程PID–>輸入nice值

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << "hello world!!!" << endl;
        sleep(2);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test -g
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

我們很容易注意到其中的幾個重要信息,有下:

  • UID : 代表執(zhí)行者的身份
  • PID : 代表這個進(jìn)程的代號
  • PPID :代表這個進(jìn)程是由哪個進(jìn)程發(fā)展衍生而來的,亦即父進(jìn)程的代號
  • PRI :代表這個進(jìn)程可被執(zhí)行的優(yōu)先級,其值越小越早被執(zhí)行
  • NI :代表這個進(jìn)程的nice值

3.3、PRI 和 NI

PRI也還是比較好理解的,即進(jìn)程的優(yōu)先級,或者通俗點說就是程序被CPU執(zhí)行的先后順序,此值越小進(jìn)程的優(yōu)先級別越高

NI就是nice值,其表示進(jìn)程可被執(zhí)行的優(yōu)先級的修正數(shù)值

PRI值越小越快被執(zhí)行,那么加入nice值后,將會使得PRI變?yōu)椋?PRI(new) = PRI(old) + nice

當(dāng)nice值為負(fù)值的時候,那么該程序?qū)?yōu)先級值將變小,即其優(yōu)先級會變高,則其越快被執(zhí)行

調(diào)整進(jìn)程優(yōu)先級,在Linux下,就是調(diào)整進(jìn)程nice值

nice其取值范圍是-20至19,一共40個級別,調(diào)整NI時,會重新變成初始值80,然后+NI值

例如PRI:70 NI:-10,把NI更改成10時,PRI = 80 + 10 = 90

在root用戶下,使用top指令修改進(jìn)程優(yōu)先級:

[lyh_sky@localhost lesson11]$ ls
makefile  test  test.cpp
[lyh_sky@localhost lesson11]$ cat test.cpp 
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sys/types.h>
using namespace std;
int main()
{
    while (1)
    {
        cout << "hello world!!!" << endl;
        cout << "我的pid是: " << getpid() << endl;
        sleep(2);
    }
    return 0;
}
[lyh_sky@localhost lesson11]$ cat makefile 
test:test.cpp
	g++ test.cpp -o test -g
.PHONY:clean
clean:
	rm -rf test
[lyh_sky@localhost lesson11]$ ./test 

進(jìn)入top指令后輸入r,然后回車,然后輸入需要修改進(jìn)程優(yōu)先級的pid

輸入pid后回車,接著輸入NI值,就能修改進(jìn)程優(yōu)先級了

3.4、PRI vs NI

需要強(qiáng)調(diào)一點的是,進(jìn)程的nice值不是進(jìn)程的優(yōu)先級,他們不是一個概念,但是進(jìn)程nice值會影響到進(jìn)程的優(yōu)先級變化

可以理解nice值是進(jìn)程優(yōu)先級的修正修正數(shù)據(jù)

4、其他概念

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

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

比如:我們在下載東西時,同時打開瀏覽器進(jìn)行瀏覽,當(dāng)瀏覽器掛掉了,是不會影響下載的,反之下載掛掉了,也不會影響瀏覽器

進(jìn)程具有獨立性,不會因為一個進(jìn)程掛斷或者出現(xiàn)異常,而導(dǎo)致其他進(jìn)程出現(xiàn)問題

3. 并行:多個進(jìn)程在多個CPU下,分別同時進(jìn)行運(yùn)行,這稱之為并行

4. 并發(fā):多個進(jìn)程在一個CPU下采用進(jìn)程切換的方式,在一段時間之內(nèi),讓多個進(jìn)程都得以推進(jìn),稱之為并發(fā)

操作系統(tǒng),就是簡單的根據(jù)隊列來進(jìn)行先后調(diào)度的嗎?有沒有可能突然來了一個優(yōu)先級更高的進(jìn)程?

操作系統(tǒng)中有二種內(nèi)核,分為“搶占式內(nèi)核”和“非搶占式內(nèi)核”

當(dāng)正在運(yùn)行的低優(yōu)先級進(jìn)程,如果來了一個優(yōu)先級更高的進(jìn)程,調(diào)度器會直接把正在執(zhí)行的進(jìn)程從CPU上剝離,放上優(yōu)先級更高的進(jìn)程,這就是“進(jìn)程搶占”(搶占式內(nèi)核)

5. 進(jìn)程上下文:進(jìn)程在運(yùn)行中產(chǎn)生的各種寄存器數(shù)據(jù),就叫做進(jìn)程的硬件上下文數(shù)據(jù)

當(dāng)進(jìn)程被剝離:需要保存上下文數(shù)據(jù)

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

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • linux 用戶和組命令整理及詳細(xì)介紹

    linux 用戶和組命令整理及詳細(xì)介紹

    這篇文章主要介紹了linux 用戶和組命令整理及詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Linux使用waitpid回收多個子進(jìn)程的方法小結(jié)

    Linux使用waitpid回收多個子進(jìn)程的方法小結(jié)

    在Unix/Linux系統(tǒng)中,創(chuàng)建子進(jìn)程后,父進(jìn)程需要負(fù)責(zé)回收這些子進(jìn)程的資源,否則會導(dǎo)致"僵尸進(jìn)程"的產(chǎn)生,本文將詳細(xì)介紹如何使用waitpid系統(tǒng)調(diào)用有效地回收多個子進(jìn)程,需要的朋友可以參考下
    2025-11-11
  • Linux如何查看操作系統(tǒng)版本號

    Linux如何查看操作系統(tǒng)版本號

    文章介紹了在Linux主機(jī)上查看操作系統(tǒng)版本號的幾種方法,包括使用`cat /etc/redhat-release`、`uname -a`、`rpm -qa | grep lsb`和`lsb_release -a`等命令,這些方法適用于不同的Linux發(fā)行版,如CentOS、Ubuntu等
    2024-11-11
  • CentOS 8.0.1905 安裝 ZABBIX4.4版本 (已驗證)

    CentOS 8.0.1905 安裝 ZABBIX4.4版本 (已驗證)

    目前CentOS8.0.1905正式發(fā)布,這篇文章主要介紹了CentOS 8.0.1905 安裝 ZABBIX4.4 (已驗證),需要的朋友可以參考下
    2019-10-10
  • Linux程序運(yùn)行找不到動態(tài)庫.so文件的解決

    Linux程序運(yùn)行找不到動態(tài)庫.so文件的解決

    這篇文章主要介紹了Linux程序運(yùn)行找不到動態(tài)庫.so文件的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Apache中解決動態(tài)地址跳轉(zhuǎn)死循環(huán)的方法

    Apache中解決動態(tài)地址跳轉(zhuǎn)死循環(huán)的方法

    這篇文章主要介紹了Apache中解決動態(tài)地址跳轉(zhuǎn)死循環(huán)的方法,另外作者還提出了盡量使用偽靜態(tài)的建議,需要的朋友可以參考下
    2015-07-07
  • centOS7下載MySQL8版本方式

    centOS7下載MySQL8版本方式

    文章詳細(xì)介紹了在Linux系統(tǒng)上下載、安裝和配置MySQL的步驟,包括使用wget下載MySQL安裝包、安裝MariaDB、初始化MySQL、啟動MySQL、查看運(yùn)行狀態(tài)、修改root密碼、遠(yuǎn)程授權(quán)和防火墻配置等,適合初學(xué)者參考和實踐
    2026-03-03
  • 解決阿里云ssh遠(yuǎn)程連接短時間就會斷掉的問題

    解決阿里云ssh遠(yuǎn)程連接短時間就會斷掉的問題

    這篇文章主要介紹了阿里云ssh遠(yuǎn)程連接短時間就會斷掉的解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • apache虛擬主機(jī)配置的三種方式(小結(jié))

    apache虛擬主機(jī)配置的三種方式(小結(jié))

    本文主要介紹了apache虛擬主機(jī)配置的三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 可怕的萬圣節(jié) Linux 命令

    可怕的萬圣節(jié) Linux 命令

    crypt 不是一個地窖,也不是垃圾文件的埋葬坑,而是一個加密文件內(nèi)容的命令。下面通過本文給大家介紹可怕的萬圣節(jié) Linux 命令,感興趣的朋友跟隨小編一起看看吧
    2018-10-10

最新評論

洞口县| 特克斯县| 诏安县| 彭山县| 泗洪县| 会昌县| 巴南区| 宝应县| 铜川市| 芷江| 夏津县| 铜梁县| 大兴区| 大埔区| 舒兰市| 玉山县| 昭平县| 屏东县| 罗山县| 黄冈市| 颍上县| 平邑县| 永福县| 年辖:市辖区| 平泉县| 长白| 中江县| 彭泽县| 东辽县| 阿克苏市| 五家渠市| 邯郸市| 讷河市| 抚远县| 苏尼特左旗| 汾阳市| 新沂市| 宜都市| 桑日县| 从江县| 白朗县|