久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux如何殺進程

153次閱讀
沒有評論

共計 2777 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章主要講解了“linux 如何殺進程”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“linux 如何殺進程”吧!

常規篇:

首先,用 ps 查看進程,方法如下:

復制代碼   代碼如下:

$ ps -ef

$ ps -ef

……
smx  1822  1  0 11:38 ?  00:00:49 gnome-terminal
smx  1823  1822  0 11:38 ?  00:00:00 gnome-pty-helper
smx  1824  1822  0 11:38 pts/0  00:00:02 bash
smx  1827  1  4 11:38 ?  00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
smx  1857  1822  0 11:38 pts/1  00:00:00 bash
smx  1880  1619  0 11:38 ?  00:00:00 update-notifier
……
smx  11946  1824  0 21:41 pts/0  00:00:00 ps -ef

或者:

復制代碼   代碼如下:

$ ps -aux

……

smx  1822  0.1  0.8  58484 18152 ?  sl  11:38  0:49 gnome-terminal
smx  1823  0.0  0.0  1988  712 ?  s  11:38  0:00 gnome-pty-helper
smx  1824  0.0  0.1  6820  3776 pts/0  ss  11:38  0:02 bash
smx  1827  4.3  5.8 398196 119568 ?  sl  11:38  26:13 /usr/lib/firefox-3.6.18/firefox-bin
smx  1857  0.0  0.1  6688  3644 pts/1  ss  11:38  0:00 bash
smx  1880  0.0  0.6  41536 12620 ?  s  11:38  0:00 update-notifier
……
smx  11953  0.0  0.0  2716  1064 pts/0  r+  21:42  0:00 ps -aux

此時如果我想殺了火狐的進程就在終端輸入:

復制代碼   代碼如下:

$ kill -s 9 1827

其中 -s 9 制定了傳遞給進程的信號是9,即強制、盡快終止進程。各個終止信號及其作用見附錄。

1827 則是上面 ps 查到的火狐的 pid。

簡單吧,但有個問題,進程少了則無所謂,進程多了,就會覺得痛苦了,無論是 ps -ef 還是 ps -aux,每次都要在一大串進程信息里面查找到要殺的進程,看的眼都花了。

進階篇:

改進1:

把 ps 的查詢結果通過管道給 grep 查找包含特定字符串的進程。管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。

復制代碼   代碼如下:

$ ps -ef | grep firefox
smx  1827  1  4 11:38 ?  00:27:33 /usr/lib/firefox-3.6.18/firefox-bin
smx  12029  1824  0 21:54 pts/0  00:00:00 grep –color=auto firefox

這次就清爽了。然后就是

復制代碼   代碼如下:

$kill -s 9 1827

改進 2——使用 pgrep:

一看到 pgrep 首先會想到什么?沒錯,grep!pgrep 的 p 表明了這個命令是專門用于進程查詢的 grep。

復制代碼   代碼如下:

$ pgrep firefox
1827

看到了什么?沒錯火狐的 pid,接下來又要打字了:

$kill -s 9 1827

改進 3——使用 pidof:

看到 pidof 想到啥?沒錯 pid of xx,字面翻譯過來就是 xx 的 pid。

復制代碼   代碼如下:

$ pidof firefox-bin
1827

和 pgrep 相比稍顯不足的是,pidof 必須給出進程的全名。然后就是老生常談:

復制代碼   代碼如下:

$kill -s 9 1827

無論使用 ps 然后慢慢查找進程 pid 還是用 grep 查找包含相應字符串的進程,亦或者用 pgrep 直接查找包含相應字符串的進程pid,然后手動輸入給kill殺掉,都稍顯麻煩。有沒有更方便的方法?有!

改進 4:

復制代碼   代碼如下:

$ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

說明:

“grep firefox”的輸出結果是,所有含有關鍵字“firefox”的進程。

“grep -v grep”是在列出的進程中去除含有關鍵字“grep”的進程。

“cut -c 9-15”是截取輸入行的第 9 個字符到第 15 個字符,而這正好是進程號 pid。

“xargs kill -s 9”中的 xargs 命令是用來把前面命令的輸出結果(pid)作為“kill -s 9”命令的參數,并執行該命令。“kill -s 9”會強行殺掉指定進程。

難道你不想抱怨點什么?沒錯太長了

改進 5:

知道 pgrep 和 pidof 兩個命令,干嘛還要打那么長一串!

復制代碼   代碼如下:

$ pgrep firefox | xargs kill -s 9

改進 6:

復制代碼   代碼如下:

$ ps -ef | grep firefox | awk {print $2} | xargs kill -9
kill: no such process

有一個比較郁悶的地方,進程已經正確找到并且終止了,但是執行完卻提示找不到進程。

其中 awk {print $2} 的作用就是打印(print)出第二列的內容。根據常規篇,可以知道 ps 輸出的第二列正好是 pid。就把進程相應的 pid 通過 xargs 傳遞給 kill 作參數,殺掉對應的進程。

改進 7:

難道每次都要調用 xargs 把 pid 傳遞給 kill?答案是否定的:

復制代碼   代碼如下:

$kill -s 9 `ps -aux | grep firefox | awk {print $2}

改進 8:

沒錯,命令依然有點長,換成 pgrep。

復制代碼   代碼如下:

$kill -s 9 `pgrep firefox`

改進 9——pkill:

看到 pkill 想到了什么?沒錯 pgrep 和 kill!pkill=pgrep+kill。

復制代碼   代碼如下:

$pkill -9 firefox

說明:-9 即發送的信號是 9,pkill 與 kill 在這點的差別是:pkill 無須“s”,終止信號等級直接跟在“-“后面。之前我一直以為是 -s 9,結果每次運行都無法終止進程。

改進 10——killall:

killall 和 pkill 是相似的, 不過如果給出的進程名不完整,killall 會報錯。pkill 或者 pgrep 只要給出進程名的一部分就可以終止進程。

復制代碼   代碼如下:

$killall -9 firefox

感謝各位的閱讀,以上就是“linux 如何殺進程”的內容了,經過本文的學習后,相信大家對 linux 如何殺進程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-14發表,共計2777字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 应用必备| 淅川县| 文水县| 拉萨市| 海原县| 濮阳县| 七台河市| 大同县| 峨眉山市| 宾川县| 敦化市| 上栗县| 鱼台县| 云和县| 杨浦区| 白水县| 富源县| 新龙县| 仁怀市| 铜陵市| 丽江市| 临湘市| 浙江省| 普兰县| 中阳县| 苏尼特左旗| 台南市| 砚山县| 绩溪县| 西平县| 邻水| 普格县| 鄄城县| 专栏| 句容市| 镇赉县| 焉耆| 刚察县| 固安县| 静宁县| 恩平市|