偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在 Linux 上使用 kill 和 killall 命令來管理進程

系統(tǒng) Linux
了解如何使用 ps、kill 和 killall 命令來終止進程并回收系統(tǒng)資源。

[[388614]]

了解如何使用 ps、kill 和 killall 命令來終止進程并回收系統(tǒng)資源。

在 Linux 中,每個程序和守護程序daemon都是一個“進程process”。 大多數(shù)進程代表一個正在運行的程序。而另外一些程序可以派生出其他進程,比如說它會偵聽某些事件的發(fā)生,然后對其做出響應(yīng)。并且每個進程都需要一定的內(nèi)存和處理能力。你運行的進程越多,所需的內(nèi)存和 CPU 使用周期就越多。在老式電腦(例如我使用了 7 年的筆記本電腦)或輕量級計算機(例如樹莓派)上,如果你關(guān)注過后臺運行的進程,就能充分利用你的系統(tǒng)。

你可以使用 ps 命令來查看正在運行的進程。你通常會使用 ps 命令的參數(shù)來顯示出更多的輸出信息。我喜歡使用 -e 參數(shù)來查看每個正在運行的進程,以及 -f 參數(shù)來獲得每個進程的全部細節(jié)。以下是一些例子:

  1. $ ps
  2. PID TTY TIME CMD
  3. 88000 pts/0 00:00:00 bash
  4. 88052 pts/0 00:00:00 ps
  5. 88053 pts/0 00:00:00 head
  1. $ ps -e | head
  2. PID TTY TIME CMD
  3. 1 ? 00:00:50 systemd
  4. 2 ? 00:00:00 kthreadd
  5. 3 ? 00:00:00 rcu_gp
  6. 4 ? 00:00:00 rcu_par_gp
  7. 6 ? 00:00:02 kworker/0:0H-events_highpri
  8. 9 ? 00:00:00 mm_percpu_wq
  9. 10 ? 00:00:01 ksoftirqd/0
  10. 11 ? 00:00:12 rcu_sched
  11. 12 ? 00:00:00 migration/0
  1. $ ps -ef | head
  2. UID PID PPID C STIME TTY TIME CMD
  3. root 1 0 0 13:51 ? 00:00:50 /usr/lib/systemd/systemd --switched-root --system --deserialize 36
  4. root 2 0 0 13:51 ? 00:00:00 [kthreadd]
  5. root 3 2 0 13:51 ? 00:00:00 [rcu_gp]
  6. root 4 2 0 13:51 ? 00:00:00 [rcu_par_gp]
  7. root 6 2 0 13:51 ? 00:00:02 [kworker/0:0H-kblockd]
  8. root 9 2 0 13:51 ? 00:00:00 [mm_percpu_wq]
  9. root 10 2 0 13:51 ? 00:00:01 [ksoftirqd/0]
  10. root 11 2 0 13:51 ? 00:00:12 [rcu_sched]
  11. root 12 2 0 13:51 ? 00:00:00 [migration/0]

最后的例子顯示最多的細節(jié)。在每一行,UID(用戶 ID)顯示了該進程的所有者。PID(進程 ID)代表每個進程的數(shù)字 ID,而 PPID(父進程 ID)表示其父進程的數(shù)字 ID。在任何 Unix 系統(tǒng)中,進程是從 1 開始編號,是內(nèi)核啟動后運行的第一個進程。在這里,systemd 是第一個進程,它催生了 kthreadd,而 kthreadd 還創(chuàng)建了其他進程,包括 rcu_gp、rcu_par_gp 等一系列進程。

使用 kill 命令來管理進程

系統(tǒng)會處理大多數(shù)后臺進程,所以你不需要操心這些進程。你只需要關(guān)注那些你所運行的應(yīng)用創(chuàng)建的進程。雖然許多應(yīng)用一次只運行一個進程(如音樂播放器、終端模擬器或游戲等),但其他應(yīng)用則可能創(chuàng)建后臺進程。其中一些應(yīng)用可能當(dāng)你退出后還在后臺運行,以便下次你使用的時候能快速啟動。

當(dāng)我運行 Chromium(作為谷歌 Chrome 瀏覽器所基于的開源項目)時,進程管理便成了問題。 Chromium 在我的筆記本電腦上運行非常吃力,并產(chǎn)生了許多額外的進程?,F(xiàn)在我僅打開五個選項卡,就能看到這些 Chromium 進程:

  1. $ ps -ef | fgrep chromium
  2. jhall 66221 [...] /usr/lib64/chromium-browser/chromium-browser [...]
  3. jhall 66230 [...] /usr/lib64/chromium-browser/chromium-browser [...]
  4. [...]
  5. jhall 66861 [...] /usr/lib64/chromium-browser/chromium-browser [...]
  6. jhall 67329 65132 0 15:45 pts/0 00:00:00 grep -F chromium

我已經(jīng)省略一些行,其中有 20 個 Chromium 進程和一個正在搜索 “chromium" 字符的 grep 進程。

  1. $ ps -ef | fgrep chromium | wc -l
  2. 21

但是在我退出 Chromium 之后,這些進程仍舊運行。如何關(guān)閉它們并回收這些進程占用的內(nèi)存和 CPU 呢?

kill 命令能讓你終止一個進程。在最簡單的情況下,你告訴 kill 命令終止你想終止的進程的 PID。例如,要終止這些進程,我需要對 20 個 Chromium 進程 ID 都執(zhí)行 kill 命令。一種方法是使用命令行獲取 Chromium 的 PID,而另一種方法針對該列表運行 kill

  1. $ ps -ef | fgrep /usr/lib64/chromium-browser/chromium-browser | awk '{print $2}'
  2. 66221
  3. 66230
  4. 66239
  5. 66257
  6. 66262
  7. 66283
  8. 66284
  9. 66285
  10. 66324
  11. 66337
  12. 66360
  13. 66370
  14. 66386
  15. 66402
  16. 66503
  17. 66539
  18. 66595
  19. 66734
  20. 66848
  21. 66861
  22. 69702
  23.  
  24. $ ps -ef | fgrep /usr/lib64/chromium-browser/chromium-browser | awk '{print $2}' > /tmp/pids
  25. $ kill $(cat /tmp/pids)

最后兩行是關(guān)鍵。第一個命令行為 Chromium 瀏覽器生成一個進程 ID 列表。第二個命令行針對該進程 ID 列表運行 kill 命令。

介紹 killall 命令

一次終止多個進程有個更簡單方法,使用 killall 命令。你或許可以根據(jù)名稱猜測出,killall 會終止所有與該名字匹配的進程。這意味著我們可以使用此命令來停止所有流氓 Chromium 進程。這很簡單:

  1. $ killall /usr/lib64/chromium-browser/chromium-browser

但是要小心使用 killall。該命令能夠終止與你所給出名稱相匹配的所有進程。這就是為什么我喜歡先使用 ps -ef 命令來檢查我正在運行的進程,然后針對要停止的命令的準(zhǔn)確路徑運行 killall。

你也可以使用 -i 或 --interactive 參數(shù),來讓 killkill 在停止每個進程之前提示你。

killall 還支持使用 -o 或 --older-than 參數(shù)來查找比特定時間更早的進程。例如,如果你發(fā)現(xiàn)了一組已經(jīng)運行了好幾天的惡意進程,這將會很有幫助。又或是,你可以查找比特定時間更晚的進程,例如你最近啟動的失控進程。使用 -y 或 --young-than 參數(shù)來查找這些進程。

其他管理進程的方式

進程管理是系統(tǒng)維護重要的一部分。在我作為 Unix 和 Linux 系統(tǒng)管理員的早期職業(yè)生涯中,殺死非法作業(yè)的能力是保持系統(tǒng)正常運行的關(guān)鍵。在如今,你可能不需要親手在 Linux 上的終止流氓進程,但是知道 kill 和 killall 能夠在最終出現(xiàn)問題時為你提供幫助。

你也能尋找其他方式來管理進程。在我這個案例中,我并不需要在我退出瀏覽器后,使用 kill 或 killall 來終止后臺 Chromium 進程。在 Chromium 中有個簡單設(shè)置就可以進行控制: 

Chromium background processes setting

不過,始終關(guān)注系統(tǒng)上正在運行哪些進程,并且在需要的時候進行干預(yù)是一個明智之舉。 

 

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

2021-10-11 10:33:02

Linux jps命令Java

2019-04-19 14:00:55

Linuxkillall命令

2010-06-07 12:51:51

Linux 查看進程

2020-04-10 09:56:12

at命令Linux安排任務(wù)

2021-12-12 09:19:16

find命令Linux

2009-10-27 08:57:50

linux殺死進程

2019-10-15 13:29:24

LinuxLinux命令

2021-12-09 09:27:22

MacOSHomebrew包管理器

2018-02-26 08:14:20

LinuxDocker容器

2010-06-10 17:34:22

Linux 查看進程

2009-05-26 12:14:59

Linuxkill終止命令

2021-09-10 10:35:25

Linuxstat命令文件系統(tǒng)

2021-09-17 10:51:01

Linuxlspci命令

2023-10-15 14:53:22

Arch LinuxYay

2018-11-06 09:24:55

LinuxLutries命令

2010-06-04 14:49:15

Linux 查看進程

2010-02-25 10:28:43

Linux進程管理

2009-03-05 09:43:32

Linux系統(tǒng)進程管理命令

2019-12-05 10:30:17

LinuxMultitail

2011-03-22 10:06:27

LinuxZFS
點贊
收藏

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