日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!

發布時間:2024/9/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你要“跑路”了嗎?

只要你用過 UNIX/LINUX ,我敢打賭你大概率執行過這樣一條命令,也就是俗話說的“殺進程”:

kill -9

執行它,是不是如同執行以下命令一樣酸爽:

rm -rf

因為他帶來了一種感覺和預期,那就是:別攔我,我要跑路了!

同樣是殺進程, kill -9 有什么特別之處 ?

Perl 大牛 Randal Schwartz 這樣描述過:

no no no,不要使用kill -9。

它沒有給進程留下善后的機會:

1) 關閉 socket 連接

2) 清理臨時文件

3) 將自己將要被銷毀的消息通知給子進程

4) 重置終止狀態

如果你是用了 kill -9,就意味著用收割機來修剪花盆里的花,換句話說,就是殺雞用了牛刀。進程沒有機會完成清理工作,會留下一些不完整的文件和狀態。下次系統重啟時會帶來很多麻煩。

先了解一下原理

有什么可以替代 kill -9 呢?我們先來了解一下相關的原理。

先看下圖。

重點說下 9)SIGKILL 和 15)SIGTERM。

也就是說執行 kill -9 時,系統會發 SIGKILL 信號給進程,而在執行 kill -15 命令時,系統會發 SIGTERM 的信號給進程。

  • 收到 SIGKILL 的信號,進程立即終止,該信號不能被捕獲或忽略,并不執行任何清理文件步驟。非常殘酷和決絕
  • 收到 SIGTERM 的信號,會導致進程的終止,但是不同于SIGKILL,它可以被捕獲和解釋(或忽略)。 有點像:溫柔的問一句進程,終止你可好?這樣可以清理文件并關閉。

事實上,正常關機的時候,大部分系統都會發SIGTERM給所有不是一定要斷電的進程,等待幾秒,然后發出SIGKILL強行終止仍舊存在的進程。

在你想kill -9之前,其實還能做點其他的!

當你輸入 kill 的時候,默認情況下發送的就是 -15,發送的 SIGTERM 信號,以便為目標進程提供自我清理的機會。

如果進程被卡住,比較好的一些方法是可以使用 strace、truss、ltrace 或 gdb來查看進程為什么被卡住,此外 pstack 也可以協助排查。

kill -9 痛下殺手之前,一般情況下,你可以發送15(SIGTERM),查看狀態; 等待一小會兒,如果不起作用,發送2(SIGINT);如果還不起作用,發送1(SIGHUP);如果不成功,刪除二進制文件,因為程序不是在正常運行。

什么時候應該用 kill -9 呢?

當然很多人會說,我常使用 kill -9,并沒有感覺到有什么不妥,這樣做的真的是省事又方便。

但是常在河邊走,哪有不濕鞋。當你破壞了一個重要數據庫或造成其他損失的時候,會后悔只圖一時痛快。

因此 kill -9 是不得已而為之的最后的手段,盡量不要用在生產系統上,特別是像 mount 這樣的進程上,除非你再也不想用那個你想殺掉的進程關聯的程序、數據庫、磁盤、文件......

你會經常用 kill -9 嗎?在評論區留下你的意見吧。

后續還會分享運維小技巧,歡迎關注。

總結

以上是生活随笔為你收集整理的kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。