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

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

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

[[388614]]

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

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

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

  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]

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

使用 kill 命令來管理進程

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

當我運行 Chromium(作為谷歌 Chrome 瀏覽器所基于的開源項目)時,進程管理便成了問題。 Chromium 在我的筆記本電腦上運行非常吃力,并產生了許多額外的進程。現在我僅打開五個選項卡,就能看到這些 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

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

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

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

kill 命令能讓你終止一個進程。在最簡單的情況下,你告訴 kill 命令終止你想終止的進程的 PID。例如,要終止這些進程,我需要對 20 個 Chromium 進程 ID 都執行 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)

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

介紹 killall 命令

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

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

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

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

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

其他管理進程的方式

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

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

Chromium background processes setting

不過,始終關注系統上正在運行哪些進程,并且在需要的時候進行干預是一個明智之舉。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

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安排任務

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命令文件系統

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系統進程管理命令

2019-12-05 10:30:17

LinuxMultitail

2011-03-22 10:06:27

LinuxZFS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲深夜福利 | 久久y| 精品视频免费 | 午夜影院网站 | a毛片| 久久91精品久久久久久9鸭 | 久久久欧洲 | 天天操天天天 | 精品无码久久久久国产 | 久久久久久免费毛片精品 | 国产成人免费视频网站视频社区 | 性一交一乱一透一a级 | 亚洲区一区二 | 欧美黄色绿像 | 久久久久久国产精品 | 一级黄色片在线看 | 欧美性一级 | 四季久久免费一区二区三区四区 | 精品国产一区二区三区久久久四川 | 亚洲视频一区在线播放 | 在线国产视频 | 亚洲a视频 | 成人国产免费视频 | 成人一级片在线观看 | 亚洲精品一二三 | 亚洲国产欧美国产综合一区 | 福利社午夜影院 | 久久久av| 911影院| 欧美一级www片免费观看 | 日韩精品无码一区二区三区 | 在线国产视频 | 国产在线精品一区二区三区 | 超碰在线播 | 91视频在线观看免费 | 黄色大片免费网站 | 国产精品美女久久久久久久网站 | 91精品国产综合久久香蕉麻豆 | 国产日韩欧美在线 | 亚洲欧美一区在线 | 少妇一级淫片aaaaaaaaa |