1. 程式人生 > >linux -- 程序的檢視、程序id的獲取、程序的殺死 程序檢視

linux -- 程序的檢視、程序id的獲取、程序的殺死 程序檢視

程序檢視

ps ax : 顯示當前系統程序的列表 

ps aux : 顯示當前系統程序詳細列表以及程序使用者

ps ax|less : 如果輸出過長,可能新增管道命令 less檢視具體程序, 如:ps ax|grep XXX(XXX為程序名稱)

獲取程序id

shell獲取程序ID的方法:   ps -A |grep "cmdname"| awk '{print $1}'   pidof "cmdname"   pgrep "cmdname" 這三種在bash和busybox ash裡面的執行結果稍有不同, 第一種完全相同,但是因為呼叫命令次數較多,效能上是不行的。 第二種: pidof 只能獲取程式的檔名匹配到的程序號,在ash中 比如 pidof "usr/bin/telnetd" 和 pidof "telnetd"中結果不一樣, 前一種結果為空,但是在bash中執行兩者一樣。 第三種: pgrep跟1的效果相同,因為是單一命令,比第一種效能要好得多。 所以nanoRC就改進為pgrep。 程序殺死

HUP 1 控制中的終端/程式中斷
INT 2 鍵盤的插入指令(同 Ctrl + C)
QUIT 3 鍵盤的中斷指令(同 Ctrl + \)
TERM 15 程式的終止指令
KILL 9 程式的強制終止指令(暴力砍掉)
CONT 18 程式的再啟動指令(STOP(19) 後再重新啟動)
STOP 19 程式的停止指令(同 Ctrl + Z)

1.作用 
kill命令用來中止一個程序。 

2.格式 
kill [ -s signal | -p ] [ -a ] pid ... 
kill -l [ signal ] 

3.引數 
-s:指定傳送的訊號。 
-p:模擬傳送訊號。 
-l:指定訊號的名稱列表。 
pid:要中止程序的ID號。 
Signal:表示訊號。 

4.說明 


程序是Linux系統中一個非常重要的概念。Linux是一個多工的作業系統,系統上經常同時執行著多個程序。我們不關心這些程序究竟是如何分配的,或者是核心如何管理分配時間片的,所關心的是如何去控制這些程序,讓它們能夠很好地為使用者服務。 

Linux作業系統包括三種不同型別的程序,每種程序都有自己的特點和屬性。互動程序是由一個Shell啟動的程序。互動程序既可以在前臺執行,也可以在後臺執行。批處理程序和終端沒有聯絡,是一個程序序列。監控程序(也稱系統守護程序)時Linux系統啟動時啟動的程序,並在後臺執行。例如,httpd是著名的Apache伺服器的監控程序。 

kill命令的工作原理是,向Linux系統的核心傳送一個系統操作訊號和某個程式的程序標識號,然後系統核心就可以對程序標識號指定的程序進行操作。比如在top命令中,我們看到系統執行許多程序,有時就需要使用kill中止某些程序來提高系統資源。在講解安裝和登陸命令時,曾提到系統多個虛擬控制檯的作用是當一個程式出錯造成系統死鎖時,可以切換到其它虛擬控制檯工作關閉這個程式。此時使用的命令就是kill,因為kill是大多數Shell內部命令可以直接呼叫的。 

5.應用例項 

(1)強行中止(經常使用殺掉)一個程序標識號為324的程序: 
#kill -9 324 

(2)解除Linux系統的死鎖 
在Linux中有時會發生這樣一種情況:一個程式崩潰,並且處於死鎖的狀態。此時一般不用重新啟動計算機,只需要中止(或者說是關閉)這個有問題的程式即可。當kill處於X-Window介面時,主要的程式(除了崩潰的程式之外)一般都已經正常啟動了。此時開啟一個終端,在那裡中止有問題的程式。比如,如果Mozilla瀏覽器程式出現了鎖死的情況,可以使用kill命令來中止所有包含有Mozolla瀏覽器的程式。首先用top命令查處該程式的 PID,然後使用kill命令停止這個程式: 
#kill -SIGKILL XXX 
其中,XXX是包含有Mozolla瀏覽器的程式的程序標識號。 

(3)使用命令回收記憶體 
我們知道記憶體對於系統是非常重要的,回收記憶體可以提高系統資源。kill命令可以及時地中止一些“越軌”的程式或很長時間沒有相應的程式。例如,使用top命令發現一個無用 (Zombie) 的程序,此時可以使用下面命令: 
#kill -9 XXX 
其中,XXX是無用的程序標識號。 

然後使用下面命令: 
#free 
此時會發現可用記憶體容量增加了。 

(4)killall命令 

Linux下還提供了一個killall命令,可以直接使用程序的名字而不是程序標識號,例如: 

# killall -HUP inetd 

*殺死程序最安全的方法是單純使用kill命令,不加修飾符,不帶標誌。 

首先使用ps -ef命令確定要殺死程序的PID,然後輸入以下命令: 

# kill -pid 

註釋:標準的kill命令通常都能達到目的。終止有問題的程序,並把程序的資源釋放給系統。然而,如果程序啟動了子程序,只殺死父程序,子程序仍在執行,因此仍消耗資源。為了防止這些所謂的“殭屍程序”,應確保在殺死父程序之前,先殺死其所有的子程序。 


-------------------------------------------------------------------------------- 

*確定要殺死程序的PID或PPID 

# ps -ef | grep httpd 
-------------------------------------------------------------------------------- 


*以優雅的方式結束程序 

# kill -l PID 

-l選項告訴kill命令用好像啟動程序的使用者已登出的方式結束程序。當使用該選項時,kill命令也試圖殺死所留下的子程序。但這個命令也不是總能成功--或許仍然需要先手工殺死子程序,然後再殺死父程序。 
-------------------------------------------------------------------------------- 


*TERM訊號 

給父程序傳送一個TERM訊號,試圖殺死它和它的子程序。 

# kill -TERM PPID 
-------------------------------------------------------------------------------- 


*killall命令 

killall命令殺死同一程序組內的所有程序。其允許指定要終止的程序的名稱,而非PID。 

# killall httpd 
-------------------------------------------------------------------------------- 


*停止和重啟程序 

有時候只想簡單的停止和重啟程序。如下: 

# kill -HUP PID 

該命令讓Linux和緩的執行程序關閉,然後立即重啟。在配置應用程式的時候,這個命令很方便,在對配置檔案修改後需要重啟程序時就可以執行此命令。 ????
-------------------------------------------------------------------------------- 


*絕殺 kill -9 PID 

同意的 kill -s SIGKILL 

這個強大和危險的命令迫使程序在執行時突然終止,程序在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。 

當使用此命令時,一定要通過ps -ef確認沒有剩下任何殭屍程序。只能通過終止父程序來消除殭屍程序。如果殭屍程序被init收養,問題就比較嚴重了。殺死init程序意味著關閉系統。 

如果系統中有殭屍程序,並且其父程序是init,而且殭屍程序佔用了大量的系統資源,那麼就需要在某個時候重啟機器以清除程序表了。

相關推薦

Java語言API,Object類StringBuilderDate時間獲取System類常用

調用 mil obj 賦值 .com byte app 種類型 結束程序 Object類Java.lang.Object(類):是Java中任何“引用類型”的父類。包括自定義的類、類庫中的類、數組 都繼承了toString()和equals()方法 1.toString方法

python日期模組datetime常用操作總結(字串與datetime物件互轉日期差值計算時間戳獲取時間陣列生成等)

     在python中,自帶的datetime和time兩個時間模組在平時的使用中可以滿足我們絕大多數的需求,但是由於缺乏對這些模組深度的瞭解和使用,導致平時能夠使用到的時間功能十分有限,例如:對於time模組,我的使用幾乎就是停留在程式執行時間的統計和時間戳生成這

jquery利用attrprop方法獲取設定input的checked屬性

在jquery中應該使用prop方法來獲取和設定checked屬性,不應該使用attr,需要的朋友可以參考下。 1、prop方法獲取、設定checked屬性 <input type="checkbox" name="checkboxMain"

linux -- 程序檢視程序id獲取程序殺死

程序檢視 ps ax : 顯示當前系統程序的列表  ps aux : 顯示當前系統程序詳細列表以及程序使用者 ps ax|less : 如果輸出過長,可能新增管道命令 less檢視具體程序, 如:ps ax|grep XXX(XXX為程序名稱) 獲取程序id s

linux -- 程序檢視程序id獲取程序殺死 程序檢視

程序檢視 ps ax : 顯示當前系統程序的列表  ps aux : 顯示當前系統程序詳細列表以及程序使用者 ps ax|less : 如果輸出過長,可能新增管道命令 less檢視具體程序, 如:ps ax|grep XXX(XXX為程序名稱) 獲取程序id shell獲取程序ID的方法:   ps -A

Linux程序管理檢視殺死程序任務管理系統資源監控(課堂學習筆記)

  一、程序管理 1.檢視Linux啟動的第一個程序 2.檢視程序狀態 2.1觀察系統所有程式:ps aux 2.2檢視部分程序 2.3啟動httpd服務 2.4程序樹(可以檢視父程序與子程序) 二、檢視程序 1.Linux程序狀態 2.觀察程序

在企業級應用中我們如何通過Linux進行部署替換檢視日誌殺死程序

用過Linux的人都知道,Linux的命令是非常多的,其實我們並不不需要去全學個遍。掌握最常用的命令之後,學習不常用的命令也不會很難,我們要學的是一種方法而不是為了技術而學技術。 檢視埠 在Linux使用過程中,我們需要了解當前系統開放了哪些埠,並且要檢視開放這些埠的具體程序和使用者,可

Linux檢視程序殺死程序啟動程序等常用命令

關鍵字: linux 查程序、殺程序、起程序 查程序 ps 命令查詢與程序相關的PID號: ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。 ps -A 顯示所有程式。 ps c 列出程式時,顯示每個程式真正的指令

Linux如何檢視程序殺死程序啟動程序等常用命令

關鍵字: linux 查程序、殺程序、起程序 1.查程序 ps命令查詢與程序相關的PID號: ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。 ps -A 顯示所有程式。 ps c 列出程式時,顯示每個程式真

Linux如何檢視程序殺死程序啟動程序等常用命令(二)

(2)八進位制數字法: 命令格式:chmod abc file 其中a,b,c各為一個八進位制數字,分別表示User、Group、及Other的許可權。 4 (100) 表示可讀。 2 (010) 表示可寫。 1 (0

Windows系統檢視程序殺死程序的相關命令

檢視所有程序:netstat -ano檢視指定埠的程式:netstat -ano | findstr "8080" 殺死相關的程序:            tasklist     

Window下doc命令檢視端口占用相應程序殺死程序

開始--執行--cmd 進入命令提示符 輸入netstat -ano 即可看到所有連線的PID 之後在工作管理員中找到這個PID所對應的程式如果工作管理員中沒有PID這一項,可以在工作管理員中選"檢視"-"選擇列" 經常,我們在開發web應用的

Window 通過cmd檢視端口占用相應程序殺死程序等的命令

一、 檢視所有程序佔用的埠  在開始-執行-cmd,輸入:netstat –ano可以檢視所有程序 二、檢視佔用指定埠的程式  當你在用tomcat釋出程式時,經常會遇到埠被佔用的情況,我們想知道是哪個程式或程序佔用了埠,可以用該命令 netstat –ano|fi

Windows 7CentOS 7命令檢視端口占用及殺死程序釋放埠

一、Windows 7操作步驟 1、調出命令視窗:開始---->執行---->cmd,或者是window + R組合鍵 2、檢視端口占用,以18081埠為例,輸入命令: netstat -ano | findstr 18081 如下圖所示,最後的數字即時佔用埠的程序

【鐵匠Smith先生的專欄】關注Linux系統軟體開發多媒體圖形技術、Linux OS技術程序多執行緒併發網路程式設計架構模式研究與實踐AI等新技術動向C/C++最新程式設計技術開原始碼整合與應用等

關注Linux系統軟體開發、多媒體圖形技術、Linux OS技術、多程序多執行緒併發網路程式設計、架構模式研究與實踐、AI等新技術動向、C/C++最新程式設計技術、開原始碼整合與應用等...

Linux下Tomcat的啟動關閉殺死程序

開啟終端cd /java/tomcat#執行bin/startup.sh #啟動tomcatbin/shutdown.sh #停止tomcattail -f logs/catalina.out #看tomcat的控制檯輸出; #看是否已經有tomcat在運行了ps -ef |

Linux程序間通訊的基本原理通訊方式及其同步方式的理解

***基本原理***:通常情況下,程式只能訪問自身的資料,和其它程序沒有溝通,每個程序都是一個單獨存在的個體,程序之間不需要協作就可以完成自身的任務了。但隨著需要解決問題複雜性的增加,一個程序不可能完成所有的工作,必須由多個程序之間互相配合才能更快、更好、更強的解決問題,如

Linux檢視程序ID,根據程序ID檢視佔用的埠號,根據埠號檢視佔用的程序

1、ps 檢視系統中正在執行的程序,具體引數如下 ps:---檢視系統當中所有正在執行的程序 ps aus #檢視系統中的所有程序,使用BSD作業系統格式 ps -le #檢視系統中所有程序,使用Linux標準命令格式 兩組選項可記任意一種 作用都是列出系統下所有程序 選

Linuxcentos 批量殺死程序命令

平時我們在殺死 同一類很多程序時,一個一個殺死太麻煩了! 用下面的命令一次性批量殺死 ps aux | grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9 xxx 為程序名 例如 ps aux | gr

winddows下如何檢視程序端口占用殺死程序教程

一、 檢視所有程序佔用的埠  在開始-執行-cmd,輸入:netstat –ano 可以檢視所有程序 二、檢視佔用指定埠的程式  當你在用tomcat釋出程式時,經常會遇到埠被佔用的情況,我們想知道是哪個程式或程序佔用了埠,可以用該命令 netstat –ano|findstr [指