自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux中4個簡單的找出進(jìn)程ID(PID)方法

系統(tǒng) Linux
每個人都知道 PID,究竟什么是 PID?為什么你想要 PID?你打算用 PID 做什么?你腦子里有同樣的問題嗎?如果是這樣,你就找對地方了解這些細(xì)節(jié)了。

[[220478]]

每個人都知道 PID,究竟什么是 PID?為什么你想要 PID?你打算用 PID 做什么?你腦子里有同樣的問題嗎?如果是這樣,你就找對地方了解這些細(xì)節(jié)了。

我們查詢 PID 主要是用來殺死一個沒有響應(yīng)的程序,它類似于 Windows 任務(wù)管理器一樣。 Linux GUI 也提供相同的功能,但 CLI 是執(zhí)行 kill 操作的有效方法。

 

什么是進(jìn)程 ID?

PID 代表進(jìn)程標(biāo)識號process identification,它在大多數(shù)操作系統(tǒng)內(nèi)核(如 Linux、Unix、macOS 和 Windows)中使用。它是在操作系統(tǒng)中創(chuàng)建時自動分配給每個進(jìn)程的唯一標(biāo)識號。一個進(jìn)程是一個正在運(yùn)行的程序?qū)嵗?/p>

建議閱讀: 如何查看 Apache Web 服務(wù)器在 Linux 中的運(yùn)行時間

除了 init 進(jìn)程外其他所有的進(jìn)程 ID 每次都會改變,因?yàn)?init 始終是系統(tǒng)上的***個進(jìn)程,并且是所有其他進(jìn)程的父進(jìn)程。它的 PID 是 1。

PID 默認(rèn)的***值是 32768??梢栽谀愕南到y(tǒng)上運(yùn)行 cat /proc/sys/kernel/pid_max 來驗(yàn)證。在 32 位系統(tǒng)上,32768 是***值,但是我們可以在 64 位系統(tǒng)上將其設(shè)置為*** 222(約 4 百萬)內(nèi)的任何值。

你可能會問,為什么我們需要這么多的 PID?因?yàn)槲覀儾荒芰⒓粗赜?PID,這就是為什么。另外為了防止可能的錯誤。

系統(tǒng)正在運(yùn)行的進(jìn)程的 PID 可以通過使用 pidofpgrep、pspstree 命令找到。

 

方法 1:使用 pidof 命令

pidof 用于查找正在運(yùn)行的程序的進(jìn)程 ID。它在標(biāo)準(zhǔn)輸出上打印這些 id。為了演示,我們將在 Debian 9(stretch)系統(tǒng)中找出 Apache2 的進(jìn)程 ID。

  1. # pidof apache2
  2. 3754 2594 2365 2364 2363 2362 2361

從上面的輸出中,你可能會遇到難以識別進(jìn)程 ID 的問題,因?yàn)樗ㄟ^進(jìn)程名稱顯示了所有的 PID(包括父進(jìn)程和子進(jìn)程)。因此,我們需要找出父 PID(PPID),這是我們要查找的。它可能是***個數(shù)字。在本例中,它是 3754,并按降序排列。

 

方法 2:使用 pgrep 命令

pgrep 遍歷當(dāng)前正在運(yùn)行的進(jìn)程,并將符合選擇條件的進(jìn)程 ID 列到標(biāo)準(zhǔn)輸出中。

  1. # pgrep apache2
  2. 2361
  3. 2362
  4. 2363
  5. 2364
  6. 2365
  7. 2594
  8. 3754

這也與上面的輸出類似,但是它將結(jié)果從小到大排序,這清楚地說明父 PID 是***一個。在本例中,它是 3754。

注意: 如果你有多個進(jìn)程的進(jìn)程 ID,那么在使用 pidofpgrep 識別父進(jìn)程 ID 時就可能不會很順利。

 

方法 3:使用 pstree 命令

pstree 將運(yùn)行的進(jìn)程顯示為一棵樹。樹的根是某個 pid,如果省略了 pid 參數(shù),那么就是 init。如果在 pstree 命令中指定了用戶名,則顯示相應(yīng)用戶擁有的所有進(jìn)程。

pstree 會將相同的分支放在方括號中,并添加重復(fù)計數(shù)的前綴來可視化地合并到一起。

  1. # pstree -p | grep "apache2"
  2. |- apache2(3754) -|-apache2(2361)
  3. | |-apache2(2362)
  4. | |-apache2(2363)
  5. | |-apache2(2364)
  6. | |-apache2(2365)
  7. | `-apache2(2594)

要單獨(dú)獲取父進(jìn)程,請使用以下格式。

  1. # pstree -p | grep "apache2" | head -1
  2. |- apache2(3754) -|-apache2(2361)

pstree 命令非常簡單,因?yàn)樗謩e隔離了父進(jìn)程和子進(jìn)程,但這在使用 pidofpgrep 時命令不容易做到。

 

方法 4:使用 ps 命令

ps 顯示活動進(jìn)程的選擇信息。它顯示進(jìn)程 ID(pid=PID)、與進(jìn)程關(guān)聯(lián)的終端(tname=TTY)、以 [DD-]hh:mm:ss 格式(time=TIME)顯示的累計 CPU 時間、以及執(zhí)行名(ucmd = CMD)。輸出默認(rèn)是未排序的。

  1. # ps aux | grep "apache2"
  2. www-data 2361 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start
  3. www-data 2362 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start
  4. www-data 2363 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start
  5. www-data 2364 0.0 0.4 302652 9732 ? S 06:25 0:00 /usr/sbin/apache2 -k start
  6. www-data 2365 0.0 0.4 302652 8400 ? S 06:25 0:00 /usr/sbin/apache2 -k start
  7. www-data 2594 0.0 0.4 302652 8400 ? S 06:55 0:00 /usr/sbin/apache2 -k start
  8. root 3754 0.0 1.4 302580 29324 ? Ss Dec11 0:23 /usr/sbin/apache2 -k start
  9. root 5648 0.0 0.0 12784 940 pts/0 S+ 21:32 0:00 grep apache2

從上面的輸出中,我們可以根據(jù)進(jìn)程的啟動日期輕松地識別父進(jìn)程 ID(PPID)。在此例中,apache2 啟動于 Dec 11,它是父進(jìn)程,其他的是子進(jìn)程。apache2 的 PID 是 3754。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2019-11-06 15:58:54

Linux內(nèi)存消耗進(jìn)程

2019-12-16 09:10:38

Linux中央處理器進(jìn)程

2019-12-16 11:00:04

LinuxCPU進(jìn)程

2019-12-16 10:43:38

Linux內(nèi)存消耗進(jìn)程

2010-03-05 13:31:02

Linux進(jìn)程文件路徑

2010-06-11 13:15:51

2015-09-29 09:34:53

LinuxCPU內(nèi)核

2017-01-13 15:29:06

Linux二進(jìn)制命令方法

2021-03-08 08:55:41

Linux內(nèi)存命令

2010-06-04 14:31:59

Linux 查看進(jìn)程

2012-08-07 11:28:13

卸載linux

2010-06-28 14:52:30

cron進(jìn)程

2020-10-10 11:02:09

Linux 系統(tǒng) 數(shù)據(jù)

2009-06-17 09:06:59

Unix系統(tǒng)資源進(jìn)程

2010-06-13 15:10:19

Linux 查看進(jìn)程

2010-03-02 09:51:22

Linux進(jìn)程操作命令

2012-08-13 10:16:34

IBMdW

2019-08-23 08:54:32

LinuxMySQLBSD

2019-06-04 11:17:39

Windows Linux命令

2015-11-03 14:56:11

內(nèi)置模塊信息Linux
點(diǎn)贊
收藏

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