shell學習五十二天 刪除程序kill命令

2021-07-04 04:03:53 字數 3412 閱讀 6967

程序的控制與刪除

使用kill

命令可以終止程序.通常

,終止乙個前台程序可以使用

ctrl+c鍵,

但是對於乙個後台程序就必須使用

kill

命令來終止

,我們需要先使用

ps/pidof/pstree/top

等工具獲取程序

pid,

然後使用

kill

命令來殺掉程序

.kill

命令是通過向程序傳送指定的訊號來結束相應程序的

.在預設情況下

,採用編號為15的

trem

訊號.term

訊號將終止所有不能獲取該訊號的程序

.對於那些可以獲取該訊號的程序就要用編號為9的

kill訊號,

強行」殺掉」該程序.

kill命令詳解

1.格式:

kill [引數

] [程序號

,也就是

pid]

2.功能:

傳送指定的訊號到相應程序.

不指定型號將傳送

sifterm(15)

終止指定程序

.如果無法終止該程序可以使用」-kill」引數,

其傳送的訊號為

sigkill(9),

將強制結束程序,使用

ps命令或者

jobs

命令可以檢視程序號

.root

使用者將影響使用者的程序,非

root

使用者只能影響自己的程序.

3.引數

引數說明

-l(小寫字母)

訊號,如果不加訊號的編號引數

,則使用」-l」引數會列出全部的訊號名稱

-a當初李當前程序是,

不限制命令名或程序號的對應關係 -p

指定kill

命令只列印相關程序的程序號

,而不傳送任何訊號 -s

指定傳送訊號

-u指定使用者

注意:

1.kill命令可以帶訊號號碼選項

,也可以不帶

.如果沒有訊號好嗎

,kill

命令就會發出終止訊號

(15),

這個訊號可以被程序捕獲

,是的程序在推出之前可以清理並釋放資源

.也可以用

kill

向程序傳送特定的訊號.例如

: kill -2 123  //它的效果等同於在前台執行

pid為

123的程序同時按下

ctrl+c鍵.

但是,普通使用者只能使用不帶

signal

引數的kill

命令或最多使用

-9訊號.

2.kill可以帶有程序

id號作為引數.當用

kill

想這些程序傳送訊號時

,必須是這些程序的主人

.如果試圖撤銷乙個沒有撤銷許可權的程序或撤銷乙個不存在的程序

,就會得到乙個錯誤資訊.

3.可以向多個程序發訊號或終止它們.

4.當kill

成功的傳送了訊號後

,shell

會在螢幕上顯示出程序的終止資訊

.有時這個資訊不會馬上顯示

,只有當按下

enter

鍵使shell

的命令提示符再次出現時

,才會顯示出來.

5.應注意,

訊號使程序強行終止

,這常會帶來一些***

,如資料丟失後者終端無法恢復到正常狀態

.傳送訊號時必須小心

,只有在萬不得已時,採用

kill

訊號(9),

因為程序不能首先捕獲它要撤銷所有的後台作業

,可以輸入

kill 0.

因為有些在後台執行的命令會啟動多個程序

,跟蹤並找到所有要殺掉的程序的

pid是件很麻煩的事.這時

,使用kill 0

來終止所有當前

shell

啟動的程序

,是個有效的方法.

4.案例

案例1:

#kill -l //列出所有的訊號名稱

在輸出中,

只有第9

種訊號(sigkill)

才可以無條件終止程序

,其他訊號程序都有權利忽略

.以下是常用的訊號:

訊號名稱

編號說明

hup終端斷線

int中斷(

同ctrl+c)

quit

退出(同

ctrl)

term

終止kill

強制終止

cont

繼續(與

stop

相反,fg/bg命令)

stop

暫停(同

ctrl+z)

案例2:

得到指定訊號的數值

(不區分大小寫)

#kill -l term

#kill -l kill

#kill -l sigkill

案例3:

配合ps命令,

使用kill

殺掉程序

#ps -ef | grep vim  //得到關於

vim程序的

pid,

比如得到的

pid是

111

#kill 111  //刪除

vim程序

案例4:

徹底殺死程序

#kill -9 111

案例5:

殺死指定使用者的所有程序

#kill -9 $(ps -ef| grep username)   //方法1

#kill -u username //方法2

案例6:init

程序(pid為1)

是不可殺的

#kill -9 1

這是因為init

是linux

系統中不可缺少的程式之一

.所謂的

init程序,

他是乙個有核心啟動的使用者級程序

.核心自行啟動

(已經被載入記憶體

,開始執行

,並已初始化所有的裝置驅動程式和資料結構等)之後

,就通過啟動乙個使用者級程式

init

的方式,

完成引導程序.所以

,init

時鐘是第乙個程序

(其程序編號始終為

1).其他所有程序都是

init

程序的子孫

.init

程序是不可殺死的

.不夠貌似

init

程序的作用正在被逐漸弱化

.  

PYTHON第五十二天筆記11 7

繼承 字型樣式可以繼承。內聯標籤加上float屬性,可以設長寬。line height對於image無效。內連設定長寬 加float浮動或display inline block,block。課堂 1 抽屜作業標題部分 doctype html html lang en head meta char...

rhce學習第十二天

selinux 基於 samba 需要修改的內容 root server1 pub mkdir ccc root server1 pub chmod 777 ccc root server1 pub ls z etc samba rw r r root root system u object r ...

學習Python 第十二天

列表 鍊錶 1 棧 filo 先進後出 2 佇列 fifo 先進先出 普通佇列 class myquene object def init self,list self.list list def size self return len self.list def delete self if s...