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

殺死僵尸進(jìn)程,你需要這些神奇高效的Linux命令行

系統(tǒng) Linux
Linux 高手,其實(shí)都是玩兒命令行很熟練的人。

 Linux 高手,其實(shí)都是玩兒命令行很熟練的人。

[[258095]]

命令行的學(xué)習(xí)捷徑

 

Linux 命令有許多強(qiáng)大的功能:從簡(jiǎn)單的磁盤操作、文件存取,到進(jìn)行復(fù)雜的多媒體圖像和流媒體文件的制作,都離不開(kāi)命令行。

在 Linux 的學(xué)習(xí)中,新手都會(huì)遇到這么一個(gè)問(wèn)題:自己對(duì)系統(tǒng)的每個(gè)命令都很熟悉,但是在系統(tǒng)出現(xiàn)故障的時(shí)候,就無(wú)從下手了。

 

說(shuō)到底,就是學(xué)習(xí)的理論知識(shí)沒(méi)有很好地與系統(tǒng)實(shí)際操作相結(jié)合。

5 大系統(tǒng)運(yùn)維狀態(tài)

 

對(duì)運(yùn)維來(lái)說(shuō),查看系統(tǒng)運(yùn)行狀態(tài)是最基礎(chǔ)的工作之一。

要了解 CPU、內(nèi)存、進(jìn)程、磁盤、網(wǎng)絡(luò),這五大運(yùn)維系統(tǒng)的運(yùn)行狀態(tài),需要掌握的運(yùn)維命令有 ls、ps、free、top、uptime、ifconfig、su/sudo、dmesg、iostat、vmstat、sar、htop、iotop、smem 等命令。

這些命令有的非常簡(jiǎn)單,不做過(guò)多介紹,重點(diǎn)介紹幾個(gè)高效、神奇的命令,它能幫助我們快速了解系統(tǒng)運(yùn)行狀態(tài),絕對(duì)是運(yùn)維神器。

典型 Linux 命令行

 

Linux 使用到了虛擬內(nèi)存,因此要準(zhǔn)確的計(jì)算一個(gè)進(jìn)程實(shí)際使用的物理內(nèi)存就不是那么簡(jiǎn)單。

Smem 是一款命令行下的內(nèi)存使用情況報(bào)告工具,它能夠給用戶提供 Linux 系統(tǒng)下的內(nèi)存使用的多種報(bào)告。

內(nèi)存狀態(tài)檢測(cè)工具

 

要安裝 smem 這個(gè)工具,需要在系統(tǒng)上安裝EPEL軟件源,安裝過(guò)程如下:

  1. [root@localhost ~]# yum install epel-release[root@localhost ~]# yum install smem python-matplotlib python-tk 

要顯示系統(tǒng)中每個(gè)進(jìn)程的占用內(nèi)存狀態(tài),可執(zhí)行如下圖指令:

 

上圖中,“-k”參數(shù)用來(lái)顯示內(nèi)存單位,“-s”是排序,uss 是對(duì) uss 列進(jìn)行排序,這樣,就輸出了系統(tǒng)中所有進(jìn)行占用的內(nèi)存大小,非常清晰明白。

smem 還支持以百分比形式顯示每個(gè)進(jìn)程占用系統(tǒng)內(nèi)存的比率,如下圖所示:

 

其中,“-p”表示以百分比的形式報(bào)告內(nèi)存使用情況,這樣每個(gè)進(jìn)程占用的系統(tǒng)內(nèi)存比重一目了然。

smem 還可以顯示系統(tǒng)中每一個(gè)用戶的內(nèi)存使用情況,如下圖所示:

 

其中,“-u”表示顯示用戶占用內(nèi)存信息。

***,smem 還支持查看某個(gè)進(jìn)程占用內(nèi)存大小,例如:

  1. smem -P nginx 
  2. smem -k -P nginx 

由此可知,通過(guò) smem,對(duì)每個(gè)進(jìn)程占用的內(nèi)存資源可以很輕松的獲取。絕對(duì)是運(yùn)維必備工具。

CPU/內(nèi)存占用進(jìn)程

 

這個(gè)應(yīng)用需求在服務(wù)器的問(wèn)題排查和故障處理上使用率非常高,要獲取這些信息,只需要一些命令組合即可實(shí)現(xiàn),可以說(shuō)非常簡(jiǎn)單。

首先,獲取當(dāng)前系統(tǒng)占用 CPU ***的前 10 個(gè)進(jìn)程最簡(jiǎn)單的方式是通過(guò) ps 命令組合實(shí)現(xiàn),例如:

  1. [root@localhost ~]# ps aux|head -1;ps aux|sort -rn -k3|head -10 

其中,***句主要是為了獲取標(biāo)題(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)信息。而“head:-N”可以指定顯示的行數(shù),默認(rèn)顯示 10 行。

第二個(gè)命令是一個(gè)輸出加排序組合,ps 參數(shù)的 a 指代 all,表示所有的進(jìn)程,u 指代 user id,就是執(zhí)行該進(jìn)程的用戶 id,x 指代顯示所有程序,不以終端機(jī)來(lái)區(qū)分。

接下來(lái)是 sort 命令,其中:r 指代 reverse,這里是指反向比較結(jié)果,輸出時(shí)默認(rèn)從小到大,反向后從大到小。n 指代 numberic sort,根據(jù)其數(shù)值排序。k 代表根據(jù)哪一列進(jìn)行排序,后面的數(shù)字 3 表示按照第 3 列排序。本例中,可以看到 %CPU 在第 3 個(gè)位置,因此 k3 表示根據(jù) %CPU 的數(shù)值進(jìn)行由大到小的排序。

接下來(lái)的“|”為管道符號(hào),將查詢出的結(jié)果導(dǎo)到下面的命令中進(jìn)行下一步的操作。

***的“head -10”命令獲取默認(rèn)前 10 行數(shù)據(jù)。

清除僵尸過(guò)程

 

一個(gè)僵尸進(jìn)程產(chǎn)生的過(guò)程是:父進(jìn)程調(diào)用 fork 創(chuàng)建子進(jìn)程后,子進(jìn)程運(yùn)行直至其終止,它立即從內(nèi)存中移除,但進(jìn)程描述符仍然保留在內(nèi)存中。

要查找系統(tǒng)中的僵尸進(jìn)程,有多種方法,這里給出一種命令行探測(cè)僵尸進(jìn)程的方法:

 

  1. [root@localhost ~]# ps -e -o stat,ppid,pid,cmd | egrep '^[Zz]'Z 10808 10812 [java] 

介紹下幾個(gè)參數(shù):

-e:參數(shù)用于列出所有的進(jìn)程

-o:參數(shù)用于設(shè)定輸出格式,這里只輸出進(jìn)程的 stat(狀態(tài)信息)、ppid(父進(jìn)程 pid)、pid(當(dāng)前進(jìn)程的 pid),cmd(即進(jìn)程的可執(zhí)行文件)。

egrep:是 Linux 下的正則表達(dá)式工具。

'^[Zz]':這是正則表達(dá)式,^表示***個(gè)字符的位置,[Zz] 表示小寫 z 或者大寫的 Z 字母,即表示***個(gè)字符為 Z 或者 z 開(kāi)頭的進(jìn)程數(shù)據(jù),之所以這樣是因?yàn)榻┦M(jìn)程的狀態(tài)信息以 Z 或者 z 字母開(kāi)頭。

找到僵尸進(jìn)程的 pid 后,直接通過(guò)“kill -9 pid”命令殺掉即可,但是如果僵尸進(jìn)程很多的話,就會(huì)很繁瑣,因此,還需要一個(gè)批量刪除僵尸進(jìn)程的辦法:

  1. [root@localhost ~]# ps -e -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 

這是個(gè)命令組合,通過(guò)管道實(shí)現(xiàn)命令的組合應(yīng)用。

“grep -e”相當(dāng)于 egrep 命令。

“awk '{print $2}' ”是將前面命令的輸出信息進(jìn)行過(guò)濾,僅僅輸出第二列的值,而第二列就是進(jìn)程的 ppid。

“xargs kill -9”這是將得到的 ppid 傳給“kill -9”作為參數(shù),也就是 kill 掉這些 ppid。xargs 命令可以將標(biāo)準(zhǔn)輸入轉(zhuǎn)成各種格式化的參數(shù),這里是將管道的輸出內(nèi)容作為參數(shù)傳遞給 kill 命令。

殺掉僵尸進(jìn)程,這個(gè)是治標(biāo)不治本的。真正的辦法是,不讓它產(chǎn)生。那么如何避免僵尸進(jìn)程的產(chǎn)生呢?

 

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2017-05-27 14:45:04

Linux命令進(jìn)程

2013-09-04 10:09:31

2024-02-05 18:23:23

父進(jìn)程應(yīng)用程序程序

2018-12-17 10:30:34

Linux命令行boxes

2010-01-15 10:34:59

Linux命令行操作

2009-12-25 16:04:06

shell命令行

2018-04-27 14:58:09

Linuxkill命令

2016-07-18 14:27:43

操作系統(tǒng)Linux隱藏命令

2021-11-01 12:13:53

Linux僵尸進(jìn)程

2013-03-14 16:25:46

命令行

2021-08-26 05:06:08

命令行工具Mac

2009-12-24 14:51:39

Linux命令行

2010-09-01 14:23:54

Linux命令行開(kāi)發(fā)

2013-09-27 09:56:25

2019-04-19 14:00:55

Linuxkillall命令

2009-03-01 22:09:08

LinuxTerminal命令行終端

2009-12-09 09:25:52

Linux命令行svn命令

2009-08-07 10:33:53

linux命令行亂碼linux命令行解決方式

2017-09-05 08:57:02

Linux命令行技巧

2019-12-10 10:03:18

Linux命令行工具
點(diǎn)贊
收藏

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