redis sigterm 訊號

來源:互聯網
上載者:User

標籤:

        這是今天在測試Redis3.0.0叢集的時候偶然遇到的情況。在停止Redis服務時,我分別用了pkill redis-server和kill -9 redis-pid的方式停止Redis服務,但Redis的日誌輸出卻不一樣。

        使用pkill停止Redis時,輸入的日誌如下。說明Redis是正常退出的。

16017:signal-handler (1423639887) Received SIGTERM scheduling shutdown...16017:M 10 Feb 23:31:27.163 # User requested shutdown...16017:M 10 Feb 23:31:27.164 * Calling fsync() on the AOF file.16017:M 10 Feb 23:31:27.164 * Saving the final RDB snapshot before exiting.16017:M 10 Feb 23:31:27.213 * DB saved on disk16017:M 10 Feb 23:31:27.213 # Redis is now ready to exit, bye bye...


        而使用kill -9停止Redis時,Redis沒有任何日誌輸出,說明用kill命令停止Redis服務是不對的。


        從上面的日誌也可以看出,如果要Redis正常退出,需要給Redis發出一個SIGTERM訊號。而pkill是將含有參數的所有進程kill掉,如果要kill單個進程,並且發出SIGTERM命令可不可以呢?答案是可以的,通過kill -15 redis-pid。


        現在總結一下,如果要正常停止Redis服務,可以通過pkill命令停止所有Redis服務或者使用kill -15 redis-pid停止某一個Redis服務。


下面順便說一下pkill和kill。

pkill:通過名稱和其它屬性尋找或者發訊號給進程。

kill:可以通過kill -l命令查看到kill有64個參數,常用的5個如下:

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

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

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

  • 9) SIGKILL:用來立即結束程式的運行. 本訊號不能被阻塞、處理和忽略。如果管理員發現某個進程終止不了,可嘗試發送這個訊號。

  • 15) SIGTERM:程式結束(terminate)訊號, 與SIGKILL不同的是該訊號可以被阻塞和處理。通常用來要求程式自己正常退出,shell命令kill預設產生這個訊號。如果進程終止不了,我們才會嘗試SIGKILL。



redis sigterm 訊號

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.