① linux中怎麼終止正在運行的後台程序
xkill應用程序可以幫助你快速殺死你的桌面上的任何圖形窗口。
1、通過按下Ctrl + Alt + Esc鍵可激活此快捷方式。您的游標會變成一個X.點擊窗口與xkill功能來確定哪些進程與該窗口關聯,然後立即殺掉該進程。該窗口將瞬間關閉。
② 如何查找和殺掉Linux中的僵屍進程
Linux 系統中,進程就是一個程序的運行實例。它可能運行在前端(比如有交互的進程),也可能運行在後端(比如無交互或自動運行的進程)。它可能是一個父進程(運行期間創建了其他進程),也可能是一個子進程(由其他進程所創建)。
在 Linux 系統中,除 PID 為 0 的第一個 init 進程(或 systemd )外,其餘進程都有父進程。進程也可以擁有自己的子進程。
你可以通過使用 pstree 命令 來查看進程的樹型結構,你可以清晰的看到各個進程的「家族樹」。
在 Linux 系統中,正常情況下,子進程死亡後其父進程會接收到通知進行一些例如釋放內存之類的清理操作。但是,如果父進程未收到通知察覺子進程死亡,那麼子進程就進入了「僵死」狀態。
這就是僵死進程產生的原因。
僵屍進程並不可怕,少量的僵屍進程對系統影響並不大。但如果系統的內存已經所剩不多或者有太多的僵屍進程在耗掉內存,問題會變得糟糕。
同樣,大部分 Linux 系統進程最大 PID 設置為 32768,如果過多僵屍進程導致其他重要任務沒有 PID 可用,那麼你的系統會發生崩潰。
特別當存在一個編碼糟糕的程序開始大量產生僵屍進程的時候,這種情況經常發生。在這種情況下,我們就需要找到並殺死僵屍進程。
在linux系統中,進程有如下幾種狀態,它們隨時可能處於以上狀態中的一種:
我們可以在命令終端中通過 top命令 來查看系統進程和它的當前狀態。
命令如下:
如上面截圖中看到的,其中共有 250 個任務(進程),其中 1 個處在 「運行中running」 狀態,248 個進程處於 「休眠sleep」 狀態,還有一個處於 「僵屍zombie」 狀態。
現在問題進入下一步,如何殺死 「僵屍」 進程?
僵屍進程對系統來說就是已經死亡的進程,那麼如何殺掉一個已經死亡的進程呢?
方法很簡單,我們只需要通過如下ps命令就可以列舉僵屍進程,得到它們的進程 ID。
ps ux 命令輸出的第 8 列顯示了進程狀態。上述命令將會列印所有處在 Z+ 狀態(表示僵屍狀態)的進程。
確認了進程 ID 後,我們可以得到它的父進程 ID:
你也可以將上述兩個命令結合在一起,直接得到僵屍進程的 PID 及其父進程的 PID:
通過以上命令都可以找到僵屍進程,然後你就可以通過 kill命 令殺掉了。
或者通過如下命令查看僵屍進程:
該命令輸出結果上你可以直接看出其父進程ID,這時候你直接使用kill命令殺掉即可。
再次運行 ps 命令或 top 命令,你可以驗證僵屍進程是否已經被殺死。
通過本文你將認識 Linux 系統中的僵屍進程以及明白了其產生的主要原因。同時,你也能學會如何查找僵屍僵屍進程並殺掉僵屍進程。
當然你也可以自己別寫腳本設置成定時運行任務自動來替你做這些工作。
③ Linux進程突然被殺掉(OOM killer),查看系統日誌
一個命令:
這個命令需要用戶處於root許可權才能看,執行之後可以看到:
簡單說一下:
total-vm就是進程使用的虛擬內存大小,其中部分內容映射到RAM本身,也就是主存,被分配和使用也就成了RSS。
部分RSS在實際內存塊裡面分配,成了anon-rss,叫做匿名內存。還有映射到設備和文件的RSS內存卡,叫做file-rss。
比如說:
你用vim指令打開一個巨大的文件,那麼file-rss將會很高。
如果你用malloc()動態分配很大部分的內存,並且真的使用了它,那麼anon-rss也會很高。
但是!!如果你使用malloc()分配了大量的內存,但是不去用它!那麼total-vm將會變得更高,但是因為內存過量使用,不會使用真正的內存,那麼rss值會很低。
可以看到上述信息,發現進程被殺掉了。
那麼殺掉它的原因是什麼呢?
首先確定,當報出OOM的時候,系統的內存已經不足了,於是linux會決定殺掉進程,但是linux採用的策略並非是殺掉最佔用內存的進程(Android是這樣)。
linux會給每個進程評分:oom_score
根據這個評分去kill,決定這個分數的因素除了內存佔用大小之外,還有內存增加的速率,比如說kylin,當執行Task構建Cube的時候,內存的佔用會突然爆發式增長!發現這時候的分數老高了!然後就把它kill了。
http://www.wowotech.net/memory_management/oom.html
https://stackoverflow.com/questions/18845857/what-does-anon-rss-and-total-vm-mean
④ 如何殺掉 linux 系統中某一指定進程
Linux中殺掉一個進程可以用kill和killall命令,killall命令用命令名字來殺死指定進程,而kill命令則是用進程PID來殺死進程。
killall命令,顧名思義就是殺死所有以某個命令啟動的所有進程,用killall命令殺死進程的命令是這樣的(這里是殺死以httpd命令啟動的所有進程):
killall -9 httpd
-9參數表示強制終止進程。
最常用的是用kill命令結束進程,但是kill命令需要用進程的PID作為參數。如何知道指定進程的PID呢?如果是通過進程命令名字查看對應PID,可以通過ps或pstree命令看到它的PID;如果是通過網路監聽埠號查看進程,需要用netstat命令看看埠號對應的進程的PID。
ps命令用於查看系統所有進程,而pstree命令以樹狀顯示進程之間的關系,有助於判斷要殺死哪個進程。記住在它們顯示的結果中記下需要結束的進程PID。ps命令的常用用法是:
ps aux
-a參數表示不與終端有關的進程也顯示出來。
pstree命令的常見用法是:
pstree -Aup
-p參數表示列出進程PID。
netstat命令可以查看監聽埠的進程是哪個,常用的方式是:netstat -tlnp
這條命令的意思是列出系統裡面監聽網路連接的埠號和相應的進程PID。
參數說明:
-t:表示列出TCP連接(也可以加上-u參數表示同時列出UDP網路連接)
-l:表示列出正在網路監聽的服務
關鍵是下面兩個參數:
-n:表示以埠號來顯示
-p:表示列出進程PID
Local Address這一列下面就有埠號,可以看到它對應的PID是多少,還有Program name那一列是進程名字。同樣是要記下需要結束的進程的PID。
知道了指定進程的PID後,就可以用kill命令結束進程了:
kill -9 PID號碼
或者kill -2 PID號碼
-9參數是強制結束進程,而-2參數是相當於用鍵盤組合鍵Ctrl+C的方式正常結束進程。
⑤ linux殺死進程怎麼一下子全部殺死
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
⑥ Linux終止前台進程的命令
1、首先,連接相應linux主機,進入到linux命令行狀態下,等待輸入shell指令。
⑦ linux用什麼命令結束後台進程
結束進程方式:kill+進程編號、kill -s 9 進程編號強制結束。
1、先啟動一個進程作為測試使用,如圖:
⑧ 4-7 Linux 強殺進程 --- kill (kill -9 實驗)
kill -9 PID —— 強制殺死一個笑唯進程。
1、kill -9 殺死後台運行的進程。
紅色下劃線:sleep 10000 & —— 後台運行延時 10000 秒的命令,進程 ID 為1317。
黃色下劃線:ps —— 列出 1317 sleep 命令的進程。
(PID:進程 ID、PGID:線程組 ID、SID:會話 ID、TTY:進程運行的終端,標識那個終端控制。(pts遠程終端、tty系統終端)、TIME:進程運行的時間 和 CMD:命令的名稱和參數)。
jobs -l —— 列出後台運行的命令,1317 sleep 命令正在後台運行。
藍色下劃線:kill -9 1317—— 殺死 1317 進程。
綠色方框:ps 查詢進程,1317 sleep進程已經被殺死(Killed)。jobs -l 已經沒有後台運行的1317 sleep 命令。
2、kill -9 終止掛起的進程。
紅色下劃線:執行 sleep 10000 後 ctrl + z 掛起。
黃色下劃線:ps -j 查看進程,有 1342 sleep 的進碧行程。jobs -l 查看後台,1342 sleep 的狀態是 stopped 暫停狀態。
藍色下劃線:kill -9 殺死 1342 進程。此時系統沒悔升嘩有反饋信息。
綠色下劃線:ps -j 查看進程,1342 sleep 已經被殺死(Killed)。jobs -l 查看後台,已經沒有了 1342 sleep。
從實驗上看:
1、後台命令運行時(Running),執行 kill -9 可以強殺進程。
2、掛起命令,處於暫停狀態時(Stopped),執行 kill -9 後通過 ps 查詢進程, 可以看到進程已經被殺死。jobs 也查不到有後台命令。(這里和 kill -2、kill -15 不一樣。kill -2、kill -15 在掛起命令,處於暫停狀態時(Stopped)時執行,通過 ps 還可以查詢到進程,jobs 也可以查詢到後台仍有處於暫停狀態的命令。)
⑨ linux停止進程
在linux系統中停止進程需要以下三個步驟,下面具體介紹以下: