Linux

我什麼時候不應該殺死 -9 一個程序?

  • January 10, 2022

我總是很猶豫要不要跑步kill -9,但我看到其他管理員幾乎是例行公事。

我認為可能有一個明智的中間立場,所以:

  1. 何時以及為什麼應該kill -9使用?何時以及為什麼不?
  2. 在做之前應該嘗試什麼?
  3. 什麼樣的調試“掛起”的程序可能會導致進一步的問題?

通常,您應該在 () 之前使用(縮寫killkill -s TERM或在大多數係統上),以使目標程序有機會自行清理。(程序不能 catch 或 ignore ,但它們可以並且經常會 catch 。)如果你不給程序一個機會來完成它正在做的事情並清理它,它可能會在它周圍留下損壞的文件(或其他狀態)重啟後就看不懂了。kill -15``kill -9``kill -s KILL``SIGKILL``SIGTERM

strace/ trussltrace並且gdb通常是查看卡住程序為何卡住的好主意。(truss -u在 Solaris 上特別有用;我發現ltrace經常以不可用的格式向庫呼叫提供參數。) Solaris 也有有用/proc的基於 的工具,其中一些已被移植到 Linux。(pstack通常很有幫助)。

引用自:https://unix.stackexchange.com/questions/8916