溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux的信號(hào)有哪些

發(fā)布時(shí)間:2023-03-30 14:39:19 來源:億速云 閱讀:114 作者:iii 欄目:建站服務(wù)器

這篇“l(fā)inux的信號(hào)有哪些”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“l(fā)inux的信號(hào)有哪些”文章吧。

linux信號(hào)有:1、SIGHUP,用于讓進(jìn)程立即關(guān)閉,然后重新讀取配置文件之后重啟;2、SIGINT,程序中止信號(hào),用于中止前臺(tái)進(jìn)程;3、SIGQUIT,程序退出信號(hào);4、SIGFPE,在發(fā)生致命的算術(shù)運(yùn)算錯(cuò)誤時(shí)發(fā)出;5、SIGKILL,用來立即結(jié)束程序的運(yùn)行;6、SIGALRM,時(shí)鐘定時(shí)信號(hào);7、SIGTERM,正常結(jié)束進(jìn)程的信號(hào);8、SIGCONT;9、SIGSTOP等。

linux中信號(hào)是什么

進(jìn)程的管理主要是指進(jìn)程的關(guān)閉與重啟。我們一般關(guān)閉或重啟軟件,都是關(guān)閉或重啟它的程序,而不是直接操作進(jìn)程的。比如,要重啟 apache 服務(wù),一般使用命令"service httpd restart"重啟 apache的程序。

那么,可以通過直接管理進(jìn)程來關(guān)閉或重啟 apache 嗎?答案是肯定的,這時(shí)就要依賴進(jìn)程的信號(hào)(Signal)了。我們需要給予該進(jìn)程號(hào),告訴進(jìn)程我們想要讓它做什么。

系統(tǒng)中可以識(shí)別的信號(hào)較多,我們可以使用命令"kill -l"或"man 7 signal"來查詢。命令如下:

[root@localhost ~]#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+1247) 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

linux中常見的信號(hào)

信號(hào)代號(hào)信號(hào)名稱說 明
1SIGHUP該信號(hào)讓進(jìn)程立即關(guān)閉.然后重新讀取配置文件之后重啟
2SIGINT程序中止信號(hào),用于中止前臺(tái)進(jìn)程。相當(dāng)于輸出 Ctrl+C 快捷鍵
3SIGQUIT程序退出信號(hào)(同 Ctrl + \)
8SIGFPE在發(fā)生致命的算術(shù)運(yùn)算錯(cuò)誤時(shí)發(fā)出。不僅包括浮點(diǎn)運(yùn)算錯(cuò)誤,還包括溢出及除數(shù)為 0 等其他所有的算術(shù)運(yùn)算錯(cuò)誤
9SIGKILL用來立即結(jié)束程序的運(yùn)行。本信號(hào)不能被阻塞、處理和忽略。般用于強(qiáng)制中止進(jìn)程
14SIGALRM時(shí)鐘定時(shí)信號(hào),計(jì)算的是實(shí)際的時(shí)間或時(shí)鐘時(shí)間。alarm 函數(shù)使用該信號(hào)
15SIGTERM正常結(jié)束進(jìn)程的信號(hào),kill 命令的默認(rèn)信號(hào)。如果進(jìn)程已經(jīng)發(fā)生了問題,那么這 個(gè)信號(hào)是無法正常中止進(jìn)程的,這時(shí)我們才會(huì)嘗試 SIGKILL 信號(hào),也就是信號(hào) 9
18SIGCONT該信號(hào)可以讓暫停的進(jìn)程恢復(fù)執(zhí)行。本信號(hào)不能被阻斷
19SIGSTOP該信號(hào)可以暫停前臺(tái)進(jìn)程,相當(dāng)于輸入 Ctrl+Z 快捷鍵。本信號(hào)不能被阻斷

KILL, STOP 信號(hào)不可被阻塞、忽略、捕獲。

Term 表示終止進(jìn)程。Core 表示終止進(jìn)程并 dump core。Stop 掛起線程,Cont 恢復(fù)掛起的線程。

常見信號(hào)的常見用途

  • SIGHUP

    本信號(hào)在用戶終端連接(正常或非正常)結(jié)束時(shí)發(fā)出, 通常是在終端的控制進(jìn)程結(jié)束時(shí), 通知同一會(huì)話內(nèi)的各個(gè)作業(yè), 這時(shí)它們與控制終端不再關(guān)聯(lián)。

    登錄Linux時(shí),系統(tǒng)會(huì)分配給登錄用戶一個(gè)終端會(huì)話(Session)。在這個(gè)終端運(yùn)行的所有程序,包括前臺(tái)進(jìn)程組和后臺(tái)進(jìn)程組,一般都屬于這個(gè)會(huì)話。當(dāng)用戶退出Linux登錄時(shí),前臺(tái)進(jìn)程組和后臺(tái)有對(duì)終端輸出的進(jìn)程將會(huì)收到SIGHUP信號(hào)。

    這個(gè)信號(hào)的默認(rèn)操作為終止進(jìn)程,因此退出登錄之后,前后臺(tái)進(jìn)程和后臺(tái)有終端輸出的進(jìn)程就會(huì)中止。

    不過可以捕獲這個(gè)信號(hào),比如wget能捕獲SIGHUP信號(hào),并忽略它,這樣就算退出了Linux登錄,wget也能繼續(xù)下載。

    此外,對(duì)于與終端脫離關(guān)系的守護(hù)進(jìn)程,這個(gè)信號(hào)用于通知它重新讀取配置文件。

    比如,向 nginx 進(jìn)程發(fā)送 HUP 信號(hào)就可以刷新配置。

  • SIGINT:程序終止(interrupt)信號(hào), 在用戶鍵入INTR字符(通常是Ctrl-C)時(shí)發(fā)出,用于通知前臺(tái)進(jìn)程組終止進(jìn)程。

  • SIGQUIT:和SIGINT類似, 但由QUIT字符(通常是Ctrl-\)來控制. 進(jìn)程在因收到SIGQUIT退出時(shí)會(huì)產(chǎn)生core文件, 在這個(gè)意義上類似于一個(gè)程序錯(cuò)誤信號(hào)。

  • SIGTERM:

    程序結(jié)束(terminate)信號(hào), 與SIGKILL不同的是該信號(hào)可以被阻塞和處理。通常用來要求程序自己正常退出,允許進(jìn)程做一些必要的清理工作后退出。

    shell命令kill缺省產(chǎn)生這個(gè)信號(hào)。如果進(jìn)程終止不了,我們才會(huì)嘗試SIGKILL。

  • SIGTERM 讓進(jìn)程體面的結(jié)束,如果進(jìn)程自己不體面,就用 SIGKILL 幫它體面。

  • SIGCONT:讓一個(gè)停止(stopped)的進(jìn)程繼續(xù)執(zhí)行. 本信號(hào)不能被阻塞. 可以用一個(gè)handler來讓程序在由stopped狀態(tài)變?yōu)槔^續(xù)執(zhí)行時(shí)完成特定的工作. 例如, 重新顯示提示符…

  • SIGSTOP:停止(stopped)進(jìn)程的執(zhí)行. 注意它和terminate以及interrupt的區(qū)別:該進(jìn)程還未結(jié)束, 只是暫停執(zhí)行. 本信號(hào)不能被阻塞, 處理或忽略.

常用信號(hào)快捷鍵

  • ctrl-c 發(fā)送 SIGINT 信號(hào)給前臺(tái)進(jìn)程組中的所有進(jìn)程。常用于終止正在運(yùn)行的程序。

  • ctrl-z 發(fā)送 SIGTSTP 信號(hào)給前臺(tái)進(jìn)程組中的所有進(jìn)程,常用于掛起一個(gè)進(jìn)程。

  • ctrl-d 不是發(fā)送信號(hào),而是表示一個(gè)特殊的二進(jìn)制值,表示 EOF。

  • ctrl-\ 發(fā)送 SIGQUIT 信號(hào)給前臺(tái)進(jìn)程組中的所有進(jìn)程,終止前臺(tái)進(jìn)程并生成 core 文件。

KeyFunction
Ctrl-cKill foreground process
Ctrl-zSuspend foreground process
Ctrl-dTerminate input, or exit shell
Ctrl-sSuspend output
Ctrl-qResume output
Ctrl-oDiscard output
Ctrl-lClear screen

以上就是關(guān)于“l(fā)inux的信號(hào)有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI