站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        linux中進程什么意思

        進程是運行在Linux中的程序的一個實例,是管理事務(wù)的基本單元;進程擁有自己獨立的處理環(huán)境和系統(tǒng)資源。進程的狀態(tài)是變化的,其包括進程的創(chuàng)建、調(diào)度和消亡。

        linux中進程什么意思

        本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

        進程是運行在 Linux 中的程序的一個實例。

        在 Linux 系統(tǒng)中,操作系統(tǒng)是通過進程去完成一個一個的任務(wù),進程是管理事務(wù)的基本單元。進程擁有自己獨立的處理環(huán)境(如:當前需要用到哪些環(huán)境變量,程序運行的目錄在哪,當前是哪個用戶在運行此程序等)和系統(tǒng)資源(如:處理器 CPU 占用率、存儲器、I/O設(shè)備、數(shù)據(jù)、程序)。

        當你在 Linux 系統(tǒng)中執(zhí)行一個程序時,系統(tǒng)會為這個程序創(chuàng)建特定的環(huán)境。這個環(huán)境包含系統(tǒng)運行這個程序所需的任何東西。

        每當你在 Linux 中執(zhí)行一個命令,它都會創(chuàng)建,或啟動一個新的進程。比如,當你嘗試運行命令“l(fā)s -l”來列出目錄的內(nèi)容時,你就啟動了一個進程。如果有兩個終端窗口顯示在屏幕上,那么你可能運行了兩次同樣的終端程序,這時會有兩個終端進程。

        每個終端窗口可能都運行了一個 Shell,每個運行的 Shell 都分別是一個進程。當你從 Shell 調(diào)用一個命令時,對應(yīng)的程序就會在一個新進程中執(zhí)行,當這個程序的進程執(zhí)行完成后,Shell 的進程將恢復(fù)運行。

        操作系統(tǒng)通過被稱為 PID 或進程 ID 的數(shù)字編碼來追蹤進程。系統(tǒng)中的每一個進程都有一個唯一的 PID。

        現(xiàn)在我們通過一個實例來了解 Linux 中的進程。我們在 Shell 命令行下執(zhí)行如下命令:

        $ sleep 10 & [1] 3324

        因為程序會等待 10 秒,所以我們快速地在當前 Shell 上查找任何進程名為 sleep 的進程:

        $ ps -ef | grep sleep mozhiyan  3324  5712  cons1  17:11:46  /usr/bin/sleep

        我們看到進程名為 /usr/bin/sleep 的進程正運行在系統(tǒng)中(其 PID 與我們在上一命令中得到的 PID 相同)。

        現(xiàn)在,我們嘗試并行地從 3 個不同的終端窗口運行上述的 sleep 命令,上述命令的輸出將類似如下所示:

        $ ps -ef | grep sleep mozhiyan  896   5712  cons1  17:16:51  /usr/bin/sleep mozhiyan  5924  5712  cons1  17:16:52  /usr/bin/sleep mozhiyan  2424  5712  cons1  17:16:50  /usr/bin/sleep

        我們看到 sleep 程序的每一個實例都創(chuàng)建了一個單獨的進程。

        每個 Linux 進程還有另一個 ID 號碼,即父進程的 ID(ppid)。系統(tǒng)中的每一個用戶進程都有一個父進程。

        命令“ps -f”就會列出進程的 PID 和 PPID。此命令的輸出類似如下所示:

        $ ps -f    UID     PID   PPID    TTY       STIME      COMMAND mozhiyan  4124   228    cons0    21:37:09   /usr/bin/ps mozhiyan   228   1      cons0    21:32:23   /usr/bin/bash

        你在 Shell 命令行提示符下運行的命令都把當前 Shell 的進程作為父進程。例如,你在 Shell 命令行提示符下輸入 ls 命令,Shell 將執(zhí)行 ls 命令,此時 Linux 內(nèi)核會復(fù)制 Shell 的內(nèi)存頁,然后執(zhí)行 ls 命令。

        在 Unix 中,每一個進程是使用 fork 和 exec 方法創(chuàng)建的。然而,這種方法會導(dǎo)致系統(tǒng)資源的損耗。

        在 Linux 中,fork 方法是使用寫時拷貝內(nèi)存頁實現(xiàn)的,所以它導(dǎo)致的僅是時間和復(fù)制父進程的內(nèi)存頁表所需的內(nèi)存的損失,并且會為子進程創(chuàng)建一個唯一的任務(wù)結(jié)構(gòu)。

        寫時拷貝模式在創(chuàng)建新進程時避免了創(chuàng)建不必要的結(jié)構(gòu)拷貝。例如,用戶在 Shell 命令行提示符下輸出 ls 命令,Linux 內(nèi)核將會創(chuàng)建一個 Shell 的子進程,即 Shell 的進程是父進程,而 ls 命令的進程是子進程,ls 命令的進程會指向與此 Shell 相同的內(nèi)存頁,然后子進程使用寫時拷貝技術(shù)執(zhí)行 ls 命令。

        進程的狀態(tài)

        每個 Linux 進程都有它自己的生命周期,比如,創(chuàng)建、執(zhí)行、結(jié)束和清除。每個進程也都有各自的狀態(tài),顯示進程中當前正發(fā)生什么。進程的狀態(tài)是變化的,其包括進程的創(chuàng)建、調(diào)度和消亡。

        進程可以有如下幾種狀態(tài):

        • D(不可中斷休眠狀態(tài))——進程正在休眠并且不能恢復(fù),直到一個事件發(fā)生為止。

        • R(運行狀態(tài))——進程正在運行。

        • S(休眠狀態(tài))——進程沒有在運行,而在等待一個事件或是信號。

        • T(停止狀態(tài))——進程被信號停止,比如,信號 SIGINT 或 SIGSTOP。

        • Z(僵死狀態(tài))——標記為 <defunct> 的進程是僵死的進程,它們之所以殘留是因為它們的父進程適當?shù)劁N毀它們。如果父進程退出,這些進程將被 init 進程銷毀。

        若要查看指定進程的狀態(tài),可以使用如下命令:

        ps -C processName -o pid=,cmd,stat

        例如:

        $ ps -C sleep -o pid=,cmd,stat       CMD       STAT 9434 sleep 20    S

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲精品高清无码视频| 精品三级AV无码一区| 久久精品人人做人人妻人人玩| 国产免费久久精品丫丫| 久久99精品久久久久久| 久久久久无码精品国产不卡| 亚洲精品97久久中文字幕无码| 国产亚洲色婷婷久久99精品91| 日本久久久精品中文字幕| 国产精品9999久久久久| 亚洲欧美精品一区久久中文字幕| 精品国产青草久久久久福利| 四虎在线精品视频一二区| 国产精品国产三级专区第1集| 国产精品免费看久久久| 乱色精品无码一区二区国产盗| 亚洲国产婷婷综合在线精品| 婷婷国产成人精品一区二| 免费人欧美日韩在线精品 | 无码人妻丰满熟妇精品区| 久久无码人妻精品一区二区三区| 国产乱人伦偷精品视频| 国产高清日韩精品欧美激情| 一级成人精品h| 亚洲精品高清久久| 亚洲综合一区二区精品导航| 91精品国产品国语在线不卡 | www国产精品| 国产高清在线精品二区一| 99精品国产一区二区三区| 久久91综合国产91久久精品| 热re99久久精品国产99热| 国产精品毛片无码| 久久精品国产黑森林| 欧美日韩国产中文精品字幕自在自线| 欧美午夜精品一区二区三区91 | 国语自产精品视频在线观看| 精品久久久久久国产免费了| 人妻少妇精品系列| 亚洲AV日韩精品久久久久久久| 精品日韩亚洲AV无码一区二区三区|