SIGINT
信號和SIGTERM
信號有什麼區別?我知道SIGINT
等同於在鍵盤上按下Ctrl + C,但是什麼是SIGTERM
?如果我想優雅地停止一些後臺進程,我應該使用哪些?kill -INT vs kill -TERM
6
A
回答
10
響應的唯一區別取決於開發人員。如果開發人員希望應用程序對SIGTERM
的響應與對SIGINT
的響應不同,則會註冊不同的處理程序。如果您想要優雅地停止後臺進程,您通常會發送SIGTERM
。如果你正在開發一個應用程序,你應該通過正常退出來響應SIGTERM
。經常以相同的方式處理SIGINT
,但並非總是如此。例如,通過報告狀態或部分計算來回復SIGINT
通常很方便。這使得在終端上運行應用程序的用戶可以輕鬆獲得部分結果,但是終止程序比較困難,因爲它通常需要用戶打開另一個shell並通過kill
發送SIGTERM
。換句話說,它取決於應用程序,但約定是通過適度關閉來響應SIGTERM
,兩個信號的默認操作都是終止的,大多數應用程序通過適度停止來響應SIGINT
。
6
如果我想優雅地停止一些後臺進程,我應該使用哪些後臺進程?
的信號UNIX的列表追溯到當電腦有串行終端和調制解調器,這是其中的概念控制終端起源的時間。當調制解調器掉落載波時,線路掛斷。
SIGHUP(1)因此會指示連接丟失,迫使程序退出或重新啓動。對於守護進程像syslogd和sshd,進程沒有終端連接應該保持運行,SIGHUP通常是用於重新啓動或重置的信號。
SIGINT(2)和SIGQUIT(3)從字面上來說是「中斷」或「退出」,「從鍵盤」,讓用戶立即控制程序是否會失控。使用基於物理字符的終端,這將是停止程序的唯一方法!
SIGTERM(15)與任何終端處理無關,只能從另一個進程發送。這將是發送到後臺進程的傳統信號。
0
SIGINT是一個程序中斷信號, 當用戶按下Ctrl + C時將發送。 SIGTERM是一個終止信號,它會發送到一個進程來請求進程終止,但它可以被該特定進程捕獲或忽略。
0
相關問題
- 1. Kill -2或Kill -INT:使我的運行腳本免於KILL信號2或-INT
- 2. kill-ring-save vs. clipboard-kill-ring-save
- 3. 「kill 0」和「kill - - $$」有什麼區別?
- 4. mysql query timeout kill(pt-kill)
- 5. linux shell kill signal SIGKILL && KILL
- 6. `kill%1`和`kill $ pid`有什麼區別?
- 7. nsIProcess kill
- 8. 使用kill -9與kill的區別SIGUSR2
- 9. java.lang.Process Kill not done
- 10. Android exception.getMessage()kill App
- 11. 關於pthread-kill
- 12. Kill Citrix Session C#
- 13. KILL「Android.process.xxx」進程
- 14. 爲什麼/ bin/kill的有效信號與kill不同?
- 15. node - On kill事件
- 16. Python,geopy kill time limit
- 17. Android:Android kill tcpdump進程
- 18. C#catch kill命令
- 19. Python kill掛函數
- 20. 用父親kill qprocess
- 21. tsql query kill場景
- 22. Node.js REPL kill語句
- 23. SQL Server Kill命令
- 24. Java on kill方法
- 25. 從kill命令中kill -9 +禁用消息(標準輸出)
- 26. 是否kill命令kill特定於linux中的路徑
- 27. 處理一個kill信號
- 28. `kill(0,SIGINT)`做了什麼?
- 29. 在Java中編寫unix kill
- 30. 在n秒後kill線程