Process
使用 killall <processname> 優雅地終止程序
我正在使用 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 <processname>
,以便終止就像使用 menu->Exit 關閉應用程序一樣乾淨?
SIGTERM允許程序在終止之前執行清理,但程序是否實際執行,以及執行何種清理,取決於程序的編寫方式和(在一定程度上)程序語言的設施寫在提供。因此,當程序收到 SIGTERM 時,它沒有義務保存任何內容,但它目前打開的任何文件很可能會被關閉。
有比 SIGTERM “更好”的信號,例如 SIGUSR1,但程序將忽略這些信號,除非它被編寫為專門監聽它們。