久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

一篇文章全面了解 Linux 進(jìn)程

 ccg_hz 2017-04-27

一篇文章全面了解 Linux 進(jìn)程

在這篇指南中,我們會(huì)逐步對(duì)進(jìn)程做基本的了解,,然后簡(jiǎn)要看看如何用特定命令管理 Linux 進(jìn)程,。 -- Aaron Kili

本文導(dǎo)航
  • -進(jìn)程的類(lèi)型 …… 03%

  • -什么是守護(hù)進(jìn)程(daemon) …… 06%

  • -在 Linux 中創(chuàng)建進(jìn)程 …… 10%

  • -fork() 方式 …… 11%

  • -system() 方式 …… 14%

  • -exec() 方式 …… 15%

  • -Linux 如何識(shí)別進(jìn)程? …… 17%

  • -init 進(jìn)程 …… 20%

  • -查找進(jìn)程 ID …… 23%

  • -在 Linux 中啟動(dòng)進(jìn)程 …… 28%

  • -Linux 后臺(tái)任務(wù) …… 31%

  • -Linux 中進(jìn)程的狀態(tài) …… 41%

  • -如何在 Linux 中查看活躍進(jìn)程 …… 48%

  • -1. ps 命令 …… 50%

  • -2. top - 系統(tǒng)監(jiān)控工具 …… 52%

  • -3. glances - 系統(tǒng)監(jiān)控工具 …… 56%

  • -如何在 Linux 中控制進(jìn)程 …… 62%

  • -給進(jìn)程發(fā)送信號(hào) …… 70%

  • -更改 Linux 進(jìn)程優(yōu)先級(jí) …… 82%

編譯自: http://www./linux-process-management/

作者: Aaron Kili

譯者: ictlyh

在這篇指南中,,我們會(huì)逐步對(duì)進(jìn)程做基本的了解,,然后簡(jiǎn)要看看如何用特定命令管理 Linux 進(jìn)程[1]。

進(jìn)程process是指正在執(zhí)行的程序,;是程序正在運(yùn)行的一個(gè)實(shí)例,。它由程序指令,和從文件,、其它程序中讀取的數(shù)據(jù)或系統(tǒng)用戶(hù)的輸入組成,。

進(jìn)程的類(lèi)型

在 Linux 中主要有兩種類(lèi)型的進(jìn)程:

  • 前臺(tái)進(jìn)程(也稱(chēng)為交互式進(jìn)程) - 這些進(jìn)程由終端會(huì)話(huà)初始化和控制。換句話(huà)說(shuō),,需要有一個(gè)連接到系統(tǒng)中的用戶(hù)來(lái)啟動(dòng)這樣的進(jìn)程,;它們不是作為系統(tǒng)功能/服務(wù)的一部分自動(dòng)啟動(dòng)。

  • 后臺(tái)進(jìn)程(也稱(chēng)為非交互式/自動(dòng)進(jìn)程) - 這些進(jìn)程沒(méi)有連接到終端,;它們不需要任何用戶(hù)輸入,。

什么是守護(hù)進(jìn)程daemon

這是后臺(tái)進(jìn)程的特殊類(lèi)型,它們?cè)谙到y(tǒng)啟動(dòng)時(shí)啟動(dòng),,并作為服務(wù)一直運(yùn)行,;它們不會(huì)死亡,。它們自發(fā)地作為系統(tǒng)任務(wù)啟動(dòng)(作為服務(wù)運(yùn)行)。但是,,它們能被用戶(hù)通過(guò) init 進(jìn)程控制,。

一篇文章全面了解 Linux 進(jìn)程

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

在 Linux 中創(chuàng)建進(jìn)程

(LCTT 譯注:此節(jié)原文不確,根據(jù)譯者理解重新提供)

在 Linux 中創(chuàng)建進(jìn)程有三種方式:

fork() 方式

使用 fork() 函數(shù)以父進(jìn)程為藍(lán)本復(fù)制一個(gè)進(jìn)程,,其 PID號(hào)與父進(jìn)程 PID 號(hào)不同,。在 Linux 環(huán)境下,fork() 是以寫(xiě)復(fù)制實(shí)現(xiàn)的,,新的子進(jìn)程的環(huán)境和父進(jìn)程一樣,,只有內(nèi)存與父進(jìn)程不同,其他與父進(jìn)程共享,,只有在父進(jìn)程或者子進(jìn)程進(jìn)行了修改后,,才重新生成一份。

system() 方式

system() 函數(shù)會(huì)調(diào)用 /bin/sh –c command 來(lái)執(zhí)行特定的命令,,并且阻塞當(dāng)前進(jìn)程的執(zhí)行,,直到 command 命令執(zhí)行完畢。新的子進(jìn)程會(huì)有新的 PID,。

exec() 方式

exec() 方式有若干種不同的函數(shù),,與之前的 fork() 和 system() 函數(shù)不同,exec() 方式會(huì)用新進(jìn)程代替原有的進(jìn)程,,系統(tǒng)會(huì)從新的進(jìn)程運(yùn)行,,新的進(jìn)程的 PID 值會(huì)與原來(lái)的進(jìn)程的 PID 值相同。

Linux 如何識(shí)別進(jìn)程,?

由于 Linux 是一個(gè)多用戶(hù)系統(tǒng),,意味著不同的用戶(hù)可以在系統(tǒng)上運(yùn)行各種各樣的程序,內(nèi)核必須唯一標(biāo)識(shí)程序運(yùn)行的每個(gè)實(shí)例,。

程序由它的進(jìn)程 ID(PID)和它父進(jìn)程的進(jìn)程 ID(PPID)識(shí)別,,因此進(jìn)程可以被分類(lèi)為:

  • 父進(jìn)程 - 這些是在運(yùn)行時(shí)創(chuàng)建其它進(jìn)程的進(jìn)程。

  • 子進(jìn)程 - 這些是在運(yùn)行時(shí)由其它進(jìn)程創(chuàng)建的進(jìn)程,。

init 進(jìn)程

init 進(jìn)程是系統(tǒng)中所有進(jìn)程的父進(jìn)程,,它是啟動(dòng) Linux 系統(tǒng)[2]后第一個(gè)運(yùn)行的程序;它管理著系統(tǒng)上的所有其它進(jìn)程,。它由內(nèi)核自身啟動(dòng),,因此理論上說(shuō)它沒(méi)有父進(jìn)程。

init 進(jìn)程的進(jìn)程 ID 總是為 1,。它是所有孤兒進(jìn)程的收養(yǎng)父母,。(它會(huì)收養(yǎng)所有孤兒進(jìn)程)。

查找進(jìn)程 ID

你可以用 pidof 命令查找某個(gè)進(jìn)程的進(jìn)程 ID:

# pidof systemd

# pidof top

# pidof httpd

一篇文章全面了解 Linux 進(jìn)程

查找 Linux 進(jìn)程 ID

要查找當(dāng)前 shell 的進(jìn)程 ID 以及它父進(jìn)程的進(jìn)程 ID,,可以運(yùn)行:

$ echo $$

$ echo $PPID

一篇文章全面了解 Linux 進(jìn)程

查找 Linux 父進(jìn)程 ID

在 Linux 中啟動(dòng)進(jìn)程

每次你運(yùn)行一個(gè)命令或程序(例如 cloudcmd - CloudCommander),,它就會(huì)在系統(tǒng)中啟動(dòng)一個(gè)進(jìn)程,。你可以按照下面的方式啟動(dòng)一個(gè)前臺(tái)(交互式)進(jìn)程,它會(huì)被連接到終端,,用戶(hù)可以發(fā)送輸入給它:

# cloudcmd

一篇文章全面了解 Linux 進(jìn)程

啟動(dòng) Linux 交互進(jìn)程

Linux 后臺(tái)任務(wù)

要在后臺(tái)(非交互式)啟動(dòng)一個(gè)進(jìn)程,,使用 & 符號(hào),此時(shí),,該進(jìn)程不會(huì)從用戶(hù)中讀取輸入,,直到它被移到前臺(tái)。

# cloudcmd &

# jobs

一篇文章全面了解 Linux 進(jìn)程

在后臺(tái)啟動(dòng) Linux 進(jìn)程

你也可以使用 Ctrl + Z 暫停執(zhí)行一個(gè)程序并把它發(fā)送到后臺(tái),,它會(huì)給進(jìn)程發(fā)送 SIGSTOP 信號(hào),,從而暫停它的執(zhí)行;它就會(huì)變?yōu)榭臻e:

# tar -cf backup.tar /backups/* ### 按下 Ctrl+Z

# jobs

要在后臺(tái)繼續(xù)運(yùn)行上面被暫停的命令,,使用 bg 命令:

# bg

要把后臺(tái)進(jìn)程發(fā)送到前臺(tái),,使用 fg 命令以及任務(wù)的 ID,類(lèi)似:

# jobs

# fg %1

一篇文章全面了解 Linux 進(jìn)程

Linux 后臺(tái)進(jìn)程任務(wù)

你也可能想要閱讀:如何在后臺(tái)啟動(dòng) Linux 命令以及在終端分離(Detach)進(jìn)程[3]

Linux 中進(jìn)程的狀態(tài)

在執(zhí)行過(guò)程中,,取決于它的環(huán)境一個(gè)進(jìn)程會(huì)從一個(gè)狀態(tài)轉(zhuǎn)變到另一個(gè)狀態(tài),。在 Linux 中,一個(gè)進(jìn)程有下面的可能狀態(tài):

  • Running - 此時(shí)它正在運(yùn)行(它是系統(tǒng)中的當(dāng)前進(jìn)程)或準(zhǔn)備運(yùn)行(它正在等待分配 CPU 單元),。

  • Waiting - 在這個(gè)狀態(tài),,進(jìn)程正在等待某個(gè)事件的發(fā)生或者系統(tǒng)資源。另外,,內(nèi)核也會(huì)區(qū)分兩種不同類(lèi)型的等待進(jìn)程;

    可中斷等待進(jìn)程interruptible waiting processes

    - 可以被信號(hào)中斷,,以及

    不可中斷等待進(jìn)程uninterruptible waiting processes

    - 正在等待硬件條件,,不能被任何事件/信號(hào)中斷。

  • Stopped - 在這個(gè)狀態(tài),,進(jìn)程已經(jīng)被停止了,,通常是由于收到了一個(gè)信號(hào)。例如,,正在被調(diào)試的進(jìn)程,。

  • Zombie - 該進(jìn)程已經(jīng)死亡,它已經(jīng)停止了但是

    進(jìn)程表process table

    中仍然有它的條目,。

如何在 Linux 中查看活躍進(jìn)程

有很多 Linux 工具可以用于查看/列出系統(tǒng)中正在運(yùn)行的進(jìn)程,,兩個(gè)傳統(tǒng)眾所周知的是 ps[4] 和 top[5] 命令:

1. ps 命令

它顯示被選中的系統(tǒng)中活躍進(jìn)程的信息,如下圖所示:

# ps

# ps -e | head

一篇文章全面了解 Linux 進(jìn)程

列出 Linux 活躍進(jìn)程

2. top - 系統(tǒng)監(jiān)控工具

top 是一個(gè)強(qiáng)大的工具,,它能給你提供 運(yùn)行系統(tǒng)的動(dòng)態(tài)實(shí)時(shí)視圖,,如下面截圖所示:

# top

一篇文章全面了解 Linux 進(jìn)程

列出 Linux 正在運(yùn)行的程序

閱讀這篇文章獲取更多 top 使用事例:Linux 中 12 個(gè) top 命令實(shí)例[6]

3. glances - 系統(tǒng)監(jiān)控工具

glances 是一個(gè)相對(duì)比較新的系統(tǒng)監(jiān)控工具,它有一些比較高級(jí)的功能:

# glances

一篇文章全面了解 Linux 進(jìn)程

Glances – Linux 進(jìn)程監(jiān)控

要獲取完整使用指南,,請(qǐng)閱讀:Glances - Linux 的一個(gè)高級(jí)實(shí)時(shí)系統(tǒng)監(jiān)控工具[7]

還有很多你可以用來(lái)列出活躍進(jìn)程的其它有用的 Linux 系統(tǒng)監(jiān)視工具,,打開(kāi)下面的鏈接了解更多關(guān)于它們的信息:

  1. 監(jiān)控 Linux 性能的 20 個(gè)命令行工具[8]

  2. 13 個(gè)有用的 Linux 監(jiān)控工具[9]

如何在 Linux 中控制進(jìn)程

Linux 也有一些命令用于控制進(jìn)程,,例如 kill、pkill,、pgrep 和 killall,,下面是一些如何使用它們的基本事例:

$ pgrep -u tecmint top

$ kill 2308

$ pgrep -u tecmint top

$ pgrep -u tecmint glances

$ pkill glances

$ pgrep -u tecmint glances

一篇文章全面了解 Linux 進(jìn)程

控制 Linux 進(jìn)程

想要深入了解如何使用這些命令,在 Linux 中殺死/終止活躍進(jìn)程,,可以點(diǎn)擊下面的鏈接:

  1. 終止 Linux 進(jìn)程的 Kill,、Pkill 和 Killall 命令指南[10]

  2. 如何在 Linux 中查找并殺死進(jìn)程[11]

注意當(dāng)你系統(tǒng)僵死freeze時(shí)你可以使用它們殺死 Linux 中的不響應(yīng)程序[12]。

給進(jìn)程發(fā)送信號(hào)

Linux 中控制進(jìn)程的基本方法是給它們發(fā)送信號(hào),。你可以發(fā)送很多信號(hào)給一個(gè)進(jìn)程,,運(yùn)行下面的命令可以查看所有信號(hào):

$ kill -l

一篇文章全面了解 Linux 進(jìn)程

列出所有 Linux 信號(hào)

要給一個(gè)進(jìn)程發(fā)送信號(hào),可以使用我們之前提到的 kill,、pkill 或 pgrep 命令,。但只有被編程為能識(shí)別這些信號(hào)時(shí)程序才能響應(yīng)這些信號(hào)。

大部分信號(hào)都是系統(tǒng)內(nèi)部使用,,或者給程序員編寫(xiě)代碼時(shí)使用,。下面是一些對(duì)系統(tǒng)用戶(hù)非常有用的信號(hào):

  • SIGHUP 1 - 當(dāng)控制它的終端被被關(guān)閉時(shí)給進(jìn)程發(fā)送該信號(hào)。

  • SIGINT 2 - 當(dāng)用戶(hù)使用 Ctrl+C 中斷進(jìn)程時(shí)控制它的終端給進(jìn)程發(fā)送這個(gè)信號(hào),。

  • SIGQUIT 3 - 當(dāng)用戶(hù)發(fā)送退出信號(hào) Ctrl+D 時(shí)給進(jìn)程發(fā)送該信號(hào),。

  • SIGKILL 9 - 這個(gè)信號(hào)會(huì)馬上中斷(殺死)進(jìn)程,進(jìn)程不會(huì)進(jìn)行清理操作,。

  • SIGTERM 15 - 這是一個(gè)程序終止信號(hào)(kill 默認(rèn)發(fā)送這個(gè)信號(hào)),。

  • SIGTSTP 20 - 它的控制終端發(fā)送這個(gè)信號(hào)給進(jìn)程要求它停止(終端停止);通過(guò)用戶(hù)按 Ctrl+Z 觸發(fā),。

下面是當(dāng) Firefox 應(yīng)用程序僵死時(shí)通過(guò)它的 PID 殺死它的 kill 命令事例:

$ pidof firefox

$ kill 9 2687

$ kill -KILL 2687

$ kill -SIGKILL 2687

使用它的名稱(chēng)殺死應(yīng)用,,可以像下面這樣使用 pkill 或 killall:

$ pkill firefox

$ killall firefox

更改 Linux 進(jìn)程優(yōu)先級(jí)

在 Linux 系統(tǒng)中,所有活躍進(jìn)程都有一個(gè)優(yōu)先級(jí)以及 nice 值,。有比點(diǎn)優(yōu)先級(jí)進(jìn)程有更高優(yōu)先級(jí)的進(jìn)程一般會(huì)獲得更多的 CPU 時(shí)間,。

但是,有 root 權(quán)限的系統(tǒng)用戶(hù)可以使用 nice 和 renice 命令影響(更改)優(yōu)先級(jí),。

在 top 命令的輸出中,, NI 顯示了進(jìn)程的 nice 值:

$ top

一篇文章全面了解 Linux 進(jìn)程

列出 Linux 正在運(yùn)行的進(jìn)程

使用 nice 命令為一個(gè)進(jìn)程設(shè)置 nice 值。記住一個(gè)普通用戶(hù)可以給他擁有的進(jìn)程設(shè)置 0 到 20 的 nice 值,。

只有 root 用戶(hù)可以使用負(fù)的 nice 值,。

要重新設(shè)置一個(gè)進(jìn)程的優(yōu)先級(jí),像下面這樣使用 renice 命令:

$ renice +8 2687

$ renice +8 2103

閱讀我們其它如何管理和控制 Linux 進(jìn)程的有用文章,。

  1. Linux 進(jìn)程管理:?jiǎn)?dòng),、停止以及中間過(guò)程[13]

  2. 使用 ‘top’ 命令 Batch 模式查找內(nèi)存使用最高的 15 個(gè)進(jìn)程[14]

  3. 在 Linux 中查找內(nèi)存和 CPU 使用率最高的進(jìn)程[15]

  4. 在 Linux 中如何使用進(jìn)程 ID 查找進(jìn)程名稱(chēng)[16]

就是這些!如果你有任何問(wèn)題或者想法,通過(guò)下面的反饋框和我們分享吧,。

(題圖:Pixabay,,CC0)


作者簡(jiǎn)介:

Aaron Kili 是一個(gè) Linux 和 F.O.S.S(Free and Open-Source Software) 愛(ài)好者,一個(gè) Linux 系統(tǒng)管理員,、web 開(kāi)發(fā)員,,現(xiàn)在也是 TecMint 的內(nèi)容創(chuàng)建者,他喜歡和電腦一起工作,,他相信知識(shí)共享,。


via: http://www./linux-process-management/

作者:Aaron Kili[17] 譯者:ictlyh 校對(duì):wxy

本文由 LCTT 原創(chuàng)編譯,Linux中國(guó) 榮譽(yù)推出

  • [1]: 管理 Linux 進(jìn)程 - http://www./dstat-monitor-linux-server-performance-process-memory-network/

  • [2]: 啟動(dòng) Linux 系統(tǒng) - http://www./linux-boot-process/

  • [3]: 如何在后臺(tái)啟動(dòng) Linux 命令以及在終端分離(Detach)進(jìn)程 - http://www./run-linux-command-process-in-background-detach-process/

  • [4]: ps - /tag-ps.html

  • [5]: top - /tag-top.html

  • [6]: Linux 中 12 個(gè) top 命令實(shí)例 - http://www./12-top-command-examples-in-linux/

  • [7]: Glances - Linux 的一個(gè)高級(jí)實(shí)時(shí)系統(tǒng)監(jiān)控工具 - https:///article-6882-1.html

  • [8]: 監(jiān)控 Linux 性能的 20 個(gè)命令行工具 - http://www./command-line-tools-to-monitor-linux-performance/

  • [9]: 13 個(gè)有用的 Linux 監(jiān)控工具 - http://www./linux-performance-monitoring-tools/

  • [10]: 終止 Linux 進(jìn)程的 Kill,、Pkill 和 Killall 命令指南 - http://www./how-to-kill-a-process-in-linux/

  • [11]: 如何在 Linux 中查找并殺死進(jìn)程 - http://www./find-and-kill-running-processes-pid-in-linux/

  • [12]: Linux 中的不響應(yīng)程序 - http://www./kill-processes-unresponsive-programs-in-ubuntu/

  • [13]: Linux 進(jìn)程管理:?jiǎn)?dòng),、停止以及中間過(guò)程 - http://www./rhcsa-exam-boot-process-and-process-management/

  • [14]: 使用 ‘top’ 命令 Batch 模式查找內(nèi)存使用最高的 15 個(gè)進(jìn)程 - http://www./find-processes-by-memory-usage-top-batch-mode/

  • [15]: 在 Linux 中查找內(nèi)存和 CPU 使用率最高的進(jìn)程 - http://www./find-linux-processes-memory-ram-cpu-usage/

  • [16]: 在 Linux 中如何使用進(jìn)程 ID 查找進(jìn)程名稱(chēng) - http://www./find-process-name-pid-number-linux/

  • [17]: Aaron Kili - http://www./author/aaronkili/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(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)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多