成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于Linux進(jìn)程你所需要知道的一切

系統(tǒng) Linux
在這篇指南中,我們會逐步對進(jìn)程做基本的了解,然后簡要看看如何用特定命令管理 Linux 進(jìn)程。

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

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

進(jìn)程的類型

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

  • 前臺進(jìn)程(也稱為交互式進(jìn)程) - 這些進(jìn)程由終端會話初始化和控制。換句話說,需要有一個連接到系統(tǒng)中的用戶來啟動這樣的進(jìn)程;它們不是作為系統(tǒng)功能/服務(wù)的一部分自動啟動。
  • 后臺進(jìn)程(也稱為非交互式/自動進(jìn)程) - 這些進(jìn)程沒有連接到終端;它們不需要任何用戶輸入。

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

這是后臺進(jìn)程的特殊類型,它們在系統(tǒng)啟動時啟動,并作為服務(wù)一直運行;它們不會死亡。它們自發(fā)地作為系統(tǒng)任務(wù)啟動(作為服務(wù)運行)。但是,它們能被用戶通過 init 進(jìn)程控制。

關(guā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ù)制一個進(jìn)程,其 PID號與父進(jìn)程 PID 號不同。在 Linux 環(huán)境下,fork() 是以寫復(fù)制實現(xiàn)的,新的子進(jìn)程的環(huán)境和父進(jìn)程一樣,只有內(nèi)存與父進(jìn)程不同,其他與父進(jìn)程共享,只有在父進(jìn)程或者子進(jìn)程進(jìn)行了修改后,才重新生成一份。

system() 方式

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

exec() 方式

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

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

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

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

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

init 進(jìn)程

init 進(jìn)程是系統(tǒng)中所有進(jìn)程的父進(jìn)程,它是啟動 Linux 系統(tǒng)后***個運行的程序;它管理著系統(tǒng)上的所有其它進(jìn)程。它由內(nèi)核自身啟動,因此理論上說它沒有父進(jìn)程。

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

查找進(jìn)程 ID

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

  1. # pidof systemd 
  2. # pidof top 
  3. # pidof httpd 

 關(guān)于Linux進(jìn)程你所需要知道的一切
查找 Linux 進(jìn)程 ID

 

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

  1. $ echo $$ 
  2. $ echo $PPID 

 關(guān)于Linux進(jìn)程你所需要知道的一切
查找 Linux 父進(jìn)程 ID

 

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

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

  1. # cloudcmd 

 關(guān)于Linux進(jìn)程你所需要知道的一切
啟動 Linux 交互進(jìn)程

 

Linux 后臺任務(wù)

要在后臺(非交互式)啟動一個進(jìn)程,使用 & 符號,此時,該進(jìn)程不會從用戶中讀取輸入,直到它被移到前臺。

  1. # cloudcmd & 
  2. # jobs 

 關(guān)于Linux進(jìn)程你所需要知道的一切
在后臺啟動 Linux 進(jìn)程

 

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

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

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

  1. # bg 

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

  1. # jobs 
  2. # fg %1 

 關(guān)于Linux進(jìn)程你所需要知道的一切
Linux 后臺進(jìn)程任務(wù)

 

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

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

  • Running - 此時它正在運行(它是系統(tǒng)中的當(dāng)前進(jìn)程)或準(zhǔn)備運行(它正在等待分配 CPU 單元)。
  • Waiting - 在這個狀態(tài),進(jìn)程正在等待某個事件的發(fā)生或者系統(tǒng)資源。另外,內(nèi)核也會區(qū)分兩種不同類型的等待進(jìn)程;可中斷等待進(jìn)程(interruptible waiting processes) - 可以被信號中斷,以及不可中斷等待進(jìn)程(uninterruptible waiting processes)- 正在等待硬件條件,不能被任何事件/信號中斷。
  • Stopped - 在這個狀態(tài),進(jìn)程已經(jīng)被停止了,通常是由于收到了一個信號。例如,正在被調(diào)試的進(jìn)程。
  • Zombie - 該進(jìn)程已經(jīng)死亡,它已經(jīng)停止了但是進(jìn)程表(process table)中仍然有它的條目。

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

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

1. ps 命令

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

  1. # ps  
  2. # ps -e | head  

 關(guān)于Linux進(jìn)程你所需要知道的一切
列出 Linux 活躍進(jìn)程

 

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

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

  1. top 

 關(guān)于Linux進(jìn)程你所需要知道的一切
列出 Linux 正在運行的程序

 

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

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

  1. # glances 

 關(guān)于Linux進(jìn)程你所需要知道的一切
Glances – Linux 進(jìn)程監(jiān)控

 

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

  1. 監(jiān)控 Linux 性能的 20 個命令行工具
  2. 13 個有用的 Linux 監(jiān)控工具

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

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

  1. $ pgrep -u tecmint top 
  2. $ kill 2308 
  3. $ pgrep -u tecmint top 
  4. $ pgrep -u tecmint glances 
  5. $ pkill glances 
  6. $ pgrep -u tecmint glances 

 關(guān)于Linux進(jìn)程你所需要知道的一切
控制 Linux 進(jìn)程

 

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

  1. 終止 Linux 進(jìn)程的 Kill、Pkill 和 Killall 命令指南
  2. 如何在 Linux 中查找并殺死進(jìn)程

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

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

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

  1. $ kill -l 

 關(guān)于Linux進(jìn)程你所需要知道的一切
列出所有 Linux 信號

 

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

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

  • SIGHUP 1 - 當(dāng)控制它的終端被被關(guān)閉時給進(jìn)程發(fā)送該信號。
  • SIGINT 2 - 當(dāng)用戶使用 Ctrl+C 中斷進(jìn)程時控制它的終端給進(jìn)程發(fā)送這個信號。
  • SIGQUIT 3 - 當(dāng)用戶發(fā)送退出信號 Ctrl+D 時給進(jìn)程發(fā)送該信號。
  • SIGKILL 9 - 這個信號會馬上中斷(殺死)進(jìn)程,進(jìn)程不會進(jìn)行清理操作。
  • SIGTERM 15 - 這是一個程序終止信號(kill 默認(rèn)發(fā)送這個信號)。
  • SIGTSTP 20 - 它的控制終端發(fā)送這個信號給進(jìn)程要求它停止(終端停止);通過用戶按 Ctrl+Z 觸發(fā)。

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

  1. $ pidof firefox 
  2. $ kill 9 2687 
  3. 或 
  4. $ kill -KILL 2687 
  5. 或 
  6. $ kill -SIGKILL 2687   

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

  1. $ pkill firefox 
  2. $ killall firefox  

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

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

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

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

  1. top 

 關(guān)于Linux進(jìn)程你所需要知道的一切
列出 Linux 正在運行的進(jìn)程

 

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

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

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

  1. $ renice +8 2687$ renice +8 2103 

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

作者簡介:

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

 

責(zé)任編輯:未麗燕 來源: Linux中國
相關(guān)推薦

2016-02-29 09:37:44

5G

2023-02-10 08:44:05

KafkaLinkedIn模式

2022-08-27 12:15:51

Linux Mint操作系統(tǒng)

2022-09-01 15:26:45

物聯(lián)網(wǎng)人工智能傳感器

2018-06-15 23:00:56

2022-04-24 09:00:00

滲透測試安全數(shù)字時代

2022-12-30 11:24:21

2022-07-15 14:58:26

數(shù)據(jù)分析人工智能IT

2019-05-22 15:10:43

2022-11-28 00:07:47

2020-12-22 11:04:05

人工智能AI機(jī)器學(xué)習(xí)

2023-02-07 08:26:23

LinuxInode

2022-12-29 11:42:27

2023-10-12 07:06:32

2020-11-17 10:38:40

云計算工具技術(shù)

2023-10-12 09:42:44

2023-02-27 15:47:31

2021-12-29 14:24:12

物聯(lián)網(wǎng)IoT5G

2022-07-06 10:07:21

物聯(lián)網(wǎng)IoT

2023-09-11 07:36:35

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲日韩中文字幕一区 | 成人免费视频网 | 在线国产中文字幕 | 草草草草视频 | 国产一区二区三区在线 | 国产欧美一区二区三区国产幕精品 | 日韩精品一区二区三区中文在线 | 看羞羞视频免费 | 一区二区三区免费在线观看 | 中文字幕一区在线观看视频 | 国产在线精品一区 | 成人福利网 | 欧美精品中文字幕久久二区 | 一区二区久久电影 | 精品国产乱码久久久久久丨区2区 | 日韩av.com | 日韩福利电影 | 色婷婷久久久亚洲一区二区三区 | 国产精品不卡 | 狠狠av| 福利一区视频 | 男女啪啪高潮无遮挡免费动态 | 欧美精品一区二区在线观看 | 天天操天天摸天天爽 | 久久成人综合 | 精品国产乱码久久久久久蜜臀 | 久久精品亚洲欧美日韩精品中文字幕 | 涩涩视频在线观看免费 | 精产国产伦理一二三区 | 99只有精品 | 成人精品视频在线观看 | 女生羞羞网站 | 国产日韩亚洲欧美 | 成人在线一区二区 | 欧美综合国产精品久久丁香 | 国产精品片aa在线观看 | 亚洲精品久久久久久久久久久 | 成人av鲁丝片一区二区小说 | 天天在线操 | 91免费福利视频 | 欧美日韩视频在线第一区 |