Process

使用 killall <processname> 優雅地終止程序

  • December 14, 2014

我正在使用 Icedove (Thunderbird) 的幾個實例(配置文件),當我需要關閉所有這些實例時,我使用:

killall icedove

根據man killall,如果未指定信號名稱,SIGTERM則發送。

And, `SIGTERM` allows the process to perform nice termination releasing 
resources and saving state if appropriate.

當我在安裝外掛後關閉 Icedove 時,我對外掛所做的配置更改失去了。我不得不重複這些步驟並正確關閉 Icedove(使用菜單中的退出)。

我知道這只是軼事證據。我沒有足夠的觀察力來做出任何決定性的主張。

但是,是否有可能使終止請求比 更“好”killall &lt;processname&gt;,以便終止就像使用 menu->Exit 關閉應用程序一樣乾淨?

SIGTERM允許程序在終止之前執行清理,但程序是否實際執行,以及執行何種清理,取決於程序的編寫方式和(在一定程度上)程序語言的設施寫在提供。因此,當程序收到 SIGTERM 時,它沒有義務保存任何內容,但它目前打開的任何文件很可能會被關閉。

有比 SIGTERM “更好”的信號,例如 SIGUSR1,但程序將忽略這些信號,除非它被編寫為專門監聽它們。

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