日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

1进程 ppid_杀死僵尸进程,你需要这些神奇的Linux命令行

發布時間:2024/7/23 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1进程 ppid_杀死僵尸进程,你需要这些神奇的Linux命令行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

命令行的學習捷徑

Linux命令有許多強大的功能:從簡單的磁盤操作、文件存取,到進行復雜的多媒體圖像和流媒體文件的制作,都離不開命令行。

在Linux的學習中,新手都會遇到這么一個問題:自己對系統的每個命令都很熟悉,但是在系統出現故障的時候,就無從下手了。

說到底,就是學習的理論知識沒有很好地與系統實際操作相結合。

5大系統運維狀態

對運維來說,查看系統運行狀態是最基礎的工作之一。

要了解CPU、內存、進程、磁盤、網絡,這五大運維系統的運行狀態,需要掌握的運維命令有ls、ps、free、top、uptime、ifconfig、su/sudo、dmesg、iostat、vmstat、sar、htop、iotop、smem等命令。

這些命令有的非常簡單,不做過多介紹,重點介紹幾個高效、神奇的命令,它能幫助我們快速了解系統運行狀態,絕對是運維神器。

典型Linux命令行

Linux使用到了虛擬內存,因此要準確的計算一個進程實際使用的物理內存就不是那么簡單。

Smem 是一款命令行下的內存使用情況報告工具,它能夠給用戶提供 Linux 系統下的內存使用的多種報告。

內存狀態檢測工具

要安裝smem這個工具,需要在系統上安裝EPEL軟件源,安裝過程如下:

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

要顯示系統中每個進程的占用內存狀態,可執行如下圖指令:

上圖中,“-k”參數用來顯示內存單位,“-s”是排序,uss是對uss列進行排序,這樣,就輸出了系統中所有進行占用的內存大小,非常清晰明白。

smem還支持以百分比形式顯示每個進程占用系統內存的比率,如下圖所示:

其中,“-p”表示以百分比的形式報告內存使用情況,這樣每個進程占用的系統內存比重一目了然。

smem還可以顯示系統中每一個用戶的內存使用情況,如下圖所示:

其中,“-u”表示顯示用戶占用內存信息。

最后,smem還支持查看某個進程占用內存大小,例如:

smem -P nginx?

smem -k -P nginx

由此可知,通過smem,對每個進程占用的內存資源可以很輕松的獲取。絕對是運維必備工具。

CPU/內存占用進程

這個應用需求在服務器的問題排查和故障處理上使用率非常高,要獲取這些信息,只需要一些命令組合即可實現,可以說非常簡單。

首先,獲取當前系統占用CPU最高的前10個進程最簡單的方式是通過ps命令組合實現,例如:

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

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

第二個命令是一個輸出加排序組合,ps參數的a指代all,表示所有的進程,u指代user id,就是執行該進程的用戶id,x指代顯示所有程序,不以終端機來區分。

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

接下來的“|”為管道符號,將查詢出的結果導到下面的命令中進行下一步的操作。
最后的“head -10”命令獲取默認前10行數據。

清除僵尸過程

一個僵尸進程產生的過程是:父進程調用fork創建子進程后,子進程運行直至其終止,它立即從內存中移除,但進程描述符仍然保留在內存中。

要查找系統中的僵尸進程,有多種方法,這里給出一種命令行探測僵尸進程的方法:

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

介紹下幾個參數:

-e:參數用于列出所有的進程

-o:參數用于設定輸出格式,這里只輸出進程的stat(狀態信息)、ppid(父進程pid)、pid(當前進程的pid),cmd(即進程的可執行文件。

egrep:是linux下的正則表達式工具

\\\\\\\'^[Zz]\\\\\\\':這是正則表達式,^表示第一個字符的位置,[Zz],表示小寫z或者大寫的Z字母,即表示第一個字符為Z或者z開頭的進程數據,只所以這樣是因為僵尸進程的狀態信息以Z或者z字母開頭。

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

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

這是個命令組合,通過管道實現命令的組合應用。

“grep -e”相當于egrep命令。

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

“xargs kill -9”這是將得到的ppid傳給“kill -9”作為參數,也就是kill掉這些ppid。xargs命令可以將標準輸入轉成各種格式化的參數,這里是將管道的輸出內容作為參數傳遞給kill命令。

殺掉僵尸進程,這個是治標不治本的。真正的辦法是,不讓它產生。那么如何避免僵尸進程的產生呢?

更多內容可以報名高俊峰《Linux高級架構師》系統培訓課程深入學習~

總結

以上是生活随笔為你收集整理的1进程 ppid_杀死僵尸进程,你需要这些神奇的Linux命令行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。