A. linux kill不能殺死shell腳本死循環
使用ps aux|grep 」腳本名「這種方式查找時,查看grep 」腳本「以外行的PID。
ps -ef 能比較直觀顯示進程PID、PPID(當前PID的父進程),程序名(最後一列)。
注意:你殺的應該是運行腳本時命令對應的PID,不是腳本里啟動的額外程序的PID,否則可能產生僵死進程。
B. 怎麼kill掉一串指令返回的值
Linux中的kill命令用來終止指定的進程(terminate a process)的運行,是Linux下進程管理的常用命令。通常,終止一個前台進程可以使用Ctrl+C鍵,但是,對於一個後台進程就須用kill命令來終止,我們就需要先使用ps/pidof/pstree/top等工具獲取進程PID,然後使用kill命令來殺掉該進程。kill命令是通過向進程發送指定的信號來結束相應進程的。在默認情況下,採用編號為15的TERM信號。TERM信號將終止所有不能捕獲該信號的進程。對於那些可以捕獲該信號的進程就要用編號為9的kill信號,強行「殺掉」該進程。
1.命令格式:
kill[參數][進程號]
2.命令功能:
發送指定的信號到相應進程。不指定型號將發送SIGTERM(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
輸出:
[root@localhost test6]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
說明:
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
實例2:得到指定信號的數值
命令:
輸出:
[root@localhost test6]# kill -l KILL
9[root@localhost test6]# kill -l SIGKILL
9[root@localhost test6]# kill -l TERM
15[root@localhost test6]# kill -l SIGTERM
15[root@localhost test6]#
說明:
實例3:先用ps查找進程,然後用kill殺掉
命令:
kill 3268
輸出:
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 沒有那個進程
[root@localhost test6]#
說明:
實例4:徹底殺死進程
命令:
kill –9 3268
輸出:
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill –9 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 沒有那個進程
[root@localhost test6]#
說明:
實例5:殺死指定用戶所有進程
命令:
kill -9 $(ps -ef | grep peidalinux)
kill -u peidalinux
輸出:
[root@localhost ~]# kill -9 $(ps -ef | grep peidalinux)
[root@localhost ~]# kill -u peidalinux
說明:
方法一,過濾出hnlinux用戶進程並殺死
實例6:init進程是不可殺的
命令:
kill -9 1
輸出:
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17563 17534 0 17:37 pts/1 00:00:00 grep init
[root@localhost ~]# kill -9 1
[root@localhost ~]# kill -HUP 1
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17565 17534 0 17:38 pts/1 00:00:00 grep init
[root@localhost ~]# kill -KILL 1
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17567 17534 0 17:38 pts/1 00:00:00 grep init
[root@localhost ~]#
說明:
init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以,init始終是第一個進程(其進程編號始終為1)。 其它所有進程都是init進程的子孫。init進程是不可殺的!
C. linux如何使用kill命令
sudo kill jobs試一下
D. Linux中kill -9 $$是做什麼的啊
$$ 是您正在操作的shell的PID
echo $$ #顯示當前shell的PID
kill -9 $$ #殺死當前shell
註: shell是你(用戶)和Linux(或者更准確的說,是你和Linux內核)之間的介面程序。你在提示符下輸入的每個命令都由shell先解釋然後傳給Linux內核。常用的有bash,csh,ksh。
E. Linux kill 命令怎麼用
Linux kill 命令用於終止進程,其用法步驟如下:
需要准備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機,進入命令行狀態。
F. unix kill命令
kill -n pid 其實就是unix系統給指定的pid的進程發送信號的一個過程.9隻是其中一個信號,程序執行階段捕獲到自己的信號就會做出響應的反應.當然程序也可以忽略一部分信號.
「信號」是指那些被非同步發送到一個程序的事件。默認情況下,它們通常會終止一個程序的運行。
1) 查看有哪些信號及其編號
$ trap -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX
2) 信號詳情
名稱 默認動作 說明
SIGHUP 終止進程 終端線路掛斷
SIGINT 終止進程 中斷進程
SIGQUIT 建立CORE文件 終止進程,並且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟蹤自陷
SIGBUS 建立CORE文件 匯流排錯誤
SIGSEGV 建立CORE文件 段非法錯誤
SIGFPE 建立CORE文件 浮點異常
SIGIOT 建立CORE文件 執行I/O自陷
SIGKILL 終止進程 殺死進程
SIGPIPE 終止進程 向一個沒有讀進程的管道寫數據
SIGALARM 終止進程 計時器到時
SIGTERM 終止進程 軟體終止信號
SIGSTOP 停止進程 非終端來的停止信號
SIGTSTP 停止進程 終端來的停止信號
SIGCONT 忽略信號 繼續執行一個停止的進程
SIGURG 忽略信號 I/O緊急信號
SIGIO 忽略信號 描述符上可以進行I/O
SIGCHLD 忽略信號 當子進程停止或退出時通知父進程
SIGTTOU 停止進程 後台進程寫終端
SIGTTIN 停止進程 後台進程讀終端
SIGXGPU 終止進程 CPU時限超時
SIGXFSZ 終止進程 文件長度過長
SIGWINCH 忽略信號 窗口大小發生變化
SIGPROF 終止進程 統計分布圖用計時器到時
SIGUSR1 終止進程 用戶定義信號1
SIGUSR2 終止進程 用戶定義信號2
SIGVTALRM 終止進程 虛擬計時器到時
G. Linux如何寫一個shell可以kill掉同屬於一個UID的所有進程
ps -ef | grep -fu $UID | awk '{ print "kill -i"$2 }' | sh
其中$UID可以替換為你要kill的用戶名
H. 一個shell腳本,kill進程kill -9 ${PROC_ID}的時候沒有立即kill
你是說找到系統中所有名字為sleep的進程ID,並且殺死它們,是嗎? 我沒有LINUX平台測試,我使用的HP-UX,下面的代碼你可能需要適當調整才可以使用。 下面的命令可以找出系統中的所有進程: ps -e 要查找所有名稱為sleep的經常,有的系統可以給ps使用-n參數,例如: ps -n sleep 但是通用一點的辦法是在ps -e的結果裡面grep,下面的命令即可: ps -e | grep sleep 前面的ps命令輸出了進程的ID、終端等信息,如果只需要ID內容,可以使用cut -c來獲取,例如: ps -e | cut -c1-6 獲取上面輸出的所有PID到內存變數的shell語句是: pids=`ps -e | cut -c1-6`
I. shell基本命令
常用命令
一、目錄操作
a) ls--查看文件/目錄:
常用:ls –l 查看詳細文件列表
b) pwd--查看當前目錄:
c) cd--改變工作目錄:
常用①:cd ../ 跳轉到上一級目錄
備註: [./]當前目錄 [../]上一級目錄
常用②:cd /boot/ 跳轉到指定目錄
備註:指定目錄一定是完整路徑,例如win的文件路徑一樣。
d) mkdir--創建目錄:
常用:mkdir 123 創建一個空文件夾
e) rm--刪除文件/目錄:
常用: rm -rf 123 刪除目錄文件夾,並且目錄下的文件一並刪除。
備註:直接使用命令[rm],只能刪除空目錄。
-r 刪除目錄 -f 強制刪除文件或目錄
f) mv--移動文件/目錄改名、移動:
移動文件: mv 1.sh ./123 à mv 目標文件 移動至某目錄
重名命文件:mv 1.sh 123.sh à mv 原文件 欲改後文件
g) ln--建立軟連接和硬連接:
軟連接:ln -s 123.sh ../ à ln -s 源文件 欲放置路徑
如同window下的快捷方式,原理一致。
ln -s /root/桌面/共享文件夾/armQT/ /root/桌面
硬連接:ln 123.sh ../ à ln 源文件 欲放置路徑
復制一個文件,且該文件具有獨立性,不受源文件刪除的影響;無論源文件或目標文件的內容修改時,兩份文件都會同步修改。
h) rmdir--刪除空目錄:
二、文件操作
a)cat--查看文件內容,若文件不存在,創建對應文件:
常用:cat 1.txt
b)cp--拷貝文件、目錄:
備份:cp 123.sh 1.sh à cp 源文件 目標文件
復制至某路徑:cp 123.sh ../ à cp 源文件 目標路徑
c)chmod--修改文件許可權:
常用:chmod 777 1.sh 給1.sh最高許可權
備註:讀、寫、運行三項許可權可以用數字表示,就是r=4,w=2,x=1。
777就是rwxrwxrwx,意思是該登錄用戶(可以用命令id查看)、他所在的組和其他人都有最高許可權。
一般模式:chmod +rw 1.sh 僅當前用戶下1.sh具有可讀寫許可權
d)touch--創建文件:
常用:touch ./1.sh à touch 路徑+名稱
f)vim--創建並打開文件:
常用:vim ./1.sh à vim 路徑+名稱
g)find--在指定目錄查找符合條件的文件:
以[文件名+類型]尋找:find ./ -name 「*.*」à find 路徑 -nama 「預找文件名+類型」
尋找文件名為」123」的文件,*代表不限制類型
find ./ ! -name 「*.txt」 à 過濾txt類型文件後,顯示其他文件
備註:-name 區分大小寫 -iname 不區分大小寫
-o 連接符,作用如下圖
以[文件名]尋找:find ./ -path 「*1*」à find 路徑 - path 「預找文件名」
尋找文件名為」1」的所有文件
根據文件類型進行搜索:find . -type 類型參數
h)grep--在文件里查找內容:
從指定文件里查找內容:grep h ./file.txt à grep 內容 路徑
從緩存區里查找內容:ps -ef | grep 5799 à 某顯示命令 | grep 內容
(從進程列表中尋找帶有」5799」的文本行)
i)tar--解壓文件:
壓縮:
tar -cvf 1.tar *.* //將目錄里所有文件打包成1.tar
rar a 1.rar *.* //rar格式的壓縮
zip 1.zip *.* //zip格式的壓縮
解壓:
tar -xvf file.tar //解壓tar包
tar -xzvf file.tar.gz //解壓tar.gz
unrar e file.rar //解壓rar
unzip file.zip //解壓zip
j)file--顯示指定文件的類型:
三、用戶系統及許可權管理操作
a)su--用戶類型切換:
b)adser--添加用戶:
c)passwd--設置(更改)用戶口令:
d)usermod--設置用戶屬性:
e)ps--顯示當前系統用戶進程列表:
常用:ps -ef 顯示當前系統所有用戶的詳細進程
-e 顯示所有程序。 -f 顯示UID,PPIP,C與STIME欄位
-A 顯示所有程序。
f)kill--刪除執行中的進程:
常用:kill 123 à kill pid號
強制結束進程: kill -9 123 à kill -9 pid號
四、幫助命令
a)man--查詢命令閱讀手冊
man kill à 查詢有關[kill]的全部信息
man 2 kill à 只查詢第二條有關[kill]的信息
b)help--查詢命令閱讀手冊
五、網路相關命令
a)ifconfig 查看網路信息,設置ip
b)ping 測試網路聯網狀態
六、U盤操作相關命令
a)fdisk -l 識別usb存儲設備
b)mount –t vfat /dev/sdb /mnt/udisk使用mount命令掛載U盤
c)umount /mnt/udisk 卸載U盤
七、安裝軟體包命令
a)rpm
常用組合命令:
-ivh:安裝顯示安裝進度--install--verbose--hash
-Uvh:升級軟體包--Update;
-qpl: 列出RPM軟體包內的文件信息[Query Package list];
-qpi:列出RPM軟體包的描述信息[Query Package install package(s)];
-qf:查找指定文件屬於哪個RPM軟體包[Query File];
-Va:校驗所有的 RPM軟體包,查找丟失的文件[View Lost];
-e:刪除包