首頁 >運維 >linux運維 >linux有哪些訊號

linux有哪些訊號

青灯夜游
青灯夜游原創
2023-03-30 14:15:083695瀏覽

linux訊號有:1、SIGHUP,用於讓進程立即關閉,然後重新讀取設定檔之後重啟;2、SIGINT,程式中止訊號,用於中止前台進程;3、SIGQUIT,程式退出訊號;4、SIGFPE,在發生致命的算術運算錯誤時發出;5、SIGKILL,用來立即結束程式的運作;6、SIGALRM,時鐘定時訊號;7、SIGTERM,正常結束行程的訊號;8、SIGCONT; 9、SIGSTOP等。

linux有哪些訊號

本教學操作環境:linux7.3系統、Dell G3電腦。

linux中訊號是什麼

程式的管理主要是指處理行程的關閉與重新啟動。我們一般關閉或重啟軟體,都是關閉或重新啟動它的程序,而不是直接操作進程的。例如,要重啟 apache 服務,一般使用指令"service httpd restart"重啟 apache的程式。

那麼,可以透過直接管理進程來關閉或重新啟動 apache 嗎?答案是肯定的,這時就要依賴進程的訊號(Signal)了。我們需要給予該進程號,告訴進程我們想要讓它做什麼。

訊號在linux作業系統中是很重要的,訊號的產生方式可以是來自鍵盤、由軟體條件產生、呼叫硬體異常產生。來自系統函數呼叫產生、在linux中一共有64個訊號,linux使用者可以透過kill -l查看,如下

1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

前32種稱為不可靠訊號,一般用於軟體不支援排隊後, 32種稱為可靠訊號一般用於硬體支援排隊。

linux中常見的訊號

##SIGCONT 該訊號可以讓暫停的進程恢復執行。此訊號不能被阻斷19SIGSTOP此訊號可以暫停前台進程,相當於輸入 Ctrl Z 快捷鍵。本訊號不能被阻斷

KILL, STOP 訊號不可被阻塞、忽略、捕捉。

Term 表示終止進程。 Core 表示終止進程並 dump core。 Stop 掛起線程,Cont 恢復掛起的線程。

常見訊號的常見用途

  • SIGHUP

    本訊號在使用者終端連線(正常或非正常)結束時發出, 通常是在終端的控制進程結束時, 通知同一會話內的各個作業, 這時它們與控制終端不再關聯。

    登入Linux時,系統會指派給登入使用者一個終端機會話(Session)。在這個終端機運行的所有程序,包括前台進程組和後台程序組,一般都屬於這個會話。當使用者登出Linux登入時,前台進程組和後台有對終端輸出的進程將會收到SIGHUP訊號。

    這個訊號的預設操作為終止進程,因此退出登入之後,前後台進程和後台有終端輸出的進程就會中止。

    不過可以捕捉這個訊號,例如wget能捕捉SIGHUP訊號,並忽略它,這樣就算退出了Linux登錄,wget也能繼續下載。

    此外,對於與終端脫離關係的守護進程,這個訊號用來通知它重新讀取設定檔。

    例如,向 nginx 進程發送 HUP 訊號就可以刷新設定。

  • SIGINT:程式終止(interrupt)訊號, 在使用者鍵入INTR字元(通常是Ctrl-C)時發出,用於通知前台進程組終止進程。

  • SIGQUIT:和SIGINT類似, 但由QUIT字元(通常是Ctrl-\)來控制.進程在因收到SIGQUIT退出時會產生core檔, 在這個意義上類似於一個程式錯誤信號。

  • SIGTERM:

    程式結束(terminate)訊號, 與SIGKILL不同的是該訊號可以被阻塞和處理。通常用來要求程式自己正常退出,允許進程做一些必要的清理工作後退出。

    shell指令kill缺省產生這個訊號。如果進程終止不了,我們才會嘗試SIGKILL。

  • SIGTERM 讓進程體面的結束,如果進程自己不體面,就用 SIGKILL 幫它體面。

  • SIGCONT:讓一個停止(stopped)的程序繼續執行. 本訊號不能被阻塞. 可以用一個handler來讓程式在由stopped狀態變成繼續執行時完成特定的工作. 例如, 重新顯示提示符…

  • SIGSTOP:停止(stopped)進程的執行. 注意它和terminate以及interrupt的區別:該進程還未結束, 只是暫停執行.本訊號不能被阻塞, 處理或忽略.

常用訊號快速鍵

  • ctrl-c 發送SIGINT 訊號給前台進程組中的所有進程。常用於終止正在運行的程式。

  • ctrl-z 傳送 SIGTSTP 訊號給前台進程群組中的所有進程,常用於掛起一個進程。

  • ctrl-d 不是發送訊號,而是表示一個特殊的二進位值,表示 EOF。

  • ctrl-\ 發送 SIGQUIT 訊號給前台進程組中的所有進程,終止前台進程並產生 core 檔案。

訊號代號 訊號名稱 說 明
1 SIGHUP 該訊號讓進程立即關閉.然後重新讀取設定檔之後重啟
2 SIGINT 程式中止訊號,用於中止前台進程。相當於輸出Ctrl C 快速鍵
3 SIGQUIT 程式退出訊號(同 Ctrl \)
#8 SIGFPE 在發生致命的算術運算錯誤時發出。不僅包括浮點運算錯誤,還包括溢出及除數為0 等其他所有的算術運算錯誤
9 SIGKILL 用來立即結束程式的運行。本訊號不能被阻塞、處理和忽略。般用於強制中止程序
14 SIGALRM 時鐘定時訊號,計算的是實際的時間或時脈時間。 alarm 函數使用該訊號
15 SIGTERM 正常結束程序的訊號,kill 指令的預設訊號。如果進程已經發生了問題,那麼這個訊號是無法正常中止進程的,這時我們才會嘗試SIGKILL 訊號,也就是訊號9
18
Kill foreground process#Ctrl-dCtrl-sCtrl-q#Ctrl -o#Ctrl-l#相關推薦:《
Key Function
## Ctrl-c
#Ctrl-z##Suspend foreground process
Terminate input, or exit shell
Suspend output
Resume output
Discard output
Clear screen
Linux影片教學

以上是linux有哪些訊號的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn