linux常見運維命令

PU、內存、進程、磁盤、網絡,這五大運維繫統的運行狀態,
需要掌握的運維命令有

ls、ps、free、top、uptime、ifconfig、su/sudo、dmesg、iostat、vmstat、sar、htop、iotop、smem等命令。

-----------------------------------------------------------------------------------------------------
smem內存工具:

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

smem -k -s uss
smem -p -s uss smem還支持以百分比形式顯示每個進程佔用系統內存的比率
smem -u -k 系統中每一個用戶的內存使用情況

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

[root@localhost ~]# ps aux|head -1;ps aux|sort -rn -k3|head -10
清除殭屍過程
一個殭屍進程產生的過程是:父進程調用fork創建子進程後,子進程運行直至其終止,它立即從內存中移除,但進程描述符仍然保留在內存中。

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

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

介紹下幾個參數:

-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命令。

殺掉殭屍進程,這個是治標不治本的。真正的辦法是,不讓它產生。那麼如何避免殭屍進程的產生呢?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章