Linux Kill 指令,主要就是用來送訊號給 Process 的指令,如果想要停止某個 Process,很簡單,只要先利用 ps 指令,找到你想要終止的 Process 的 PID,就可以利用 Kill 指令去停止它。底下是利用 ps -aux 指令的執行結果。箭頭指的那一行就是 PID。
例如:Kill 2942,就能終止 PID 為 2942 的 Process
這樣的使用方式,算是比較常見的,但如果說你自己寫了一個 deamon,你希望你的deamon,在收到特定的訊號之後能依照你的要求執行,那該怎麼做?
首先,你必須先設定 deamon 在執行時,如果收到你想要處理的訊號時,要執行你規定的 handler。
if (signal (SIGTERM, signal_handler) == SIG_ERR) {
len = snprintf(buf, sizeof(buf), "Cannot handle SIGTERM!\n");
write(log_fd, buf, len);
}
上面的程式碼,說明當收到 SIGTERM 訊號時,就去執行 signal_handler 這個函式(它所做的事情是自己定義的)。接著,你要知道的就是怎麼產生特定的訊號,剛才提到的 Kill 指令就可以做到!去查一下 Kill 的說明(man kill),可以看到它可以使用參數。
kill [ -signal | -s signal ] pid ...
kill [ -L | -V, --version ]
kill -l [ signal ]
kill -15 PID
kill -SIGTERM PID
kill -TERM PID
注意,並非所有的訊號都可以使用這3種形式,使用前請先檢查一下。
沒有留言:
張貼留言