Linux與命令列基礎

停止沒有回應的行程時,一般建議先用「kill 行程ID」,仍未結束時才用「kill -9 行程ID」。理由是下列何者?

  1. A預設的 SIGTERM(15號)可由行程接收,做完善後處理再結束;SIGKILL(9號)則無法接收,不做善後處理就強制結束
  2. Bkill 預設送出的 SIGTERM(15號)會連同子行程全部結束,SIGKILL(9號)只結束指定的行程,所以影響較小
  3. CSIGKILL(9號)可由行程接收,做完善後處理再結束;kill 預設送出的 SIGTERM(15號)則無法忽略,會立即結束
查看答案與解析

正確答案:A. 預設的 SIGTERM(15號)可由行程接收,做完善後處理再結束;SIGKILL(9號)則無法接收,不做善後處理就強制結束

訊號是作業系統通知行程發生某件事的簡短通知,各有固定的編號與名稱。kill 不加選項時送出 SIGTERM(15號),程式可以準備接收它的處理程序(handler),在結束前儲存作業中的檔案或刪除暫存檔。SIGKILL(9號)行程既無法接收也無法忽略,由核心強制結束,因此寫到一半的檔案可能以損壞的狀態留下。要停止的行程的 ID 可以用 ps 或 top 查詢。

  • A. 正確。SIGTERM 有善後處理的機會,SIGKILL 則強制結束。
  • B. 兩種訊號都是送給指定的行程。子行程是否也會結束,並不是由訊號的種類決定的。
  • C. SIGTERM 與 SIGKILL 的性質顛倒了。可以接收並做善後處理的是 SIGTERM。
練習這個領域 前往領域頁面

Linux與命令列基礎的其他題目

  1. 在終端機執行耗時的 ./sim.sh 途中,想在同一個終端機使用其他指令。按下 Ctrl+Z 後執行 bg 時的動作是下列何者?
  2. 在以 SSH 連線的伺服器上,用「./run.sh &」啟動耗時的處理後中斷連線,結果處理也停止了。要讓處理在中斷連線後繼續執行,最適當的啟動方式是下列何者?
  3. 在 shell 中執行上面兩行時,顯示的字元是下列何者?
  4. 依序執行上面的指令時,兩個 echo 的輸出是下列何者?
  5. 如上所示,加上引數執行腳本 s.sh 時,輸出是下列何者?