“kill -9”一時爽,秋后算賬淚兩行
閱讀本文大概需要 3.5 分鐘。
來自:小姐姐味道
kill是殺死的意思,帶有主動的意味。鑒于master、slave這樣的名詞,需要在計算機(jī)軟件中進(jìn)行整改,kill這樣明顯帶有負(fù)面信息的單詞,按理說也需要被干掉。kill根本就不是殺死的意思。kill -l可以看到長長的信號列表。
kill -9,我也不知道從哪里來的傳承,碼農(nóng)們都喜歡這種暴力性的命令--喜歡用鋒利的匕首一擊致命。kill -9的兄弟們,個個都像黑黑的李逵,單純、暴力、不講人情。SIGKILL
9
Kill signal
結(jié)束信號
kill -9直接使得優(yōu)雅關(guān)閉這個名詞成了廢物。go die。請求丟失:內(nèi)存隊列中等待執(zhí)行請求丟失
數(shù)據(jù)丟失:處于內(nèi)存緩存中數(shù)據(jù)未持久化到磁盤
文件損壞:正在寫的文件沒有沒有更新完成,導(dǎo)致文件損壞
業(yè)務(wù)中斷:處理一半的業(yè)務(wù)被強(qiáng)行中斷,如支付成功了,卻沒有更新到數(shù)據(jù)庫中
服務(wù)未下線:上游服務(wù)依然往停止節(jié)點發(fā)送請求
優(yōu)雅,靠的是shutdownhook鉤子。就是下面這行代碼:Runtime.getRuntime().addShutdownHook(????new?Thread(()?->?System.out.println("Do?something?in?Shutdown?Hook")));
kill -15發(fā)送SIGTERM信號即可。kill -15并不能殺死進(jìn)程,這個時候,才是kill -9需要出場的時候。kill -15去嘗試殺死進(jìn)程。如果過一段時間(比如10秒),進(jìn)程還沒有停止,kill -9才會出場。15,可以說是很貼心了。但還是有很多人使用9。kill -15需要多次確認(rèn),而kill -9一次完事,多數(shù)情況下不會出事。有這提高工作效率的事,何樂而不為呢?kill -3。kill -3的輸出特別有意思,它直接在stdout上輸出了jstack命令所產(chǎn)生的內(nèi)容。如果是tomcat,那么輸出就在canalina.out文件里。jstack對你的應(yīng)用不好使了,或者應(yīng)用幾乎沒有響應(yīng)了。使用kill -3是一種曲線救國的方式。pid,第二個參數(shù)是等待的秒數(shù)。pid=$1count=$2n=0if [ ! -n $count ];thencount=10fiwhile [[ $n -lt $count ]]dolet "n++"kill -0 $pidif [ $? -ne 0 ]thenecho "program not exist"breakelseecho "send kill -15 to $pid"kill -15 $pidsleep 1fiif [[ $n -eq $count ]]thenecho "kill -9 $pid"# after 10s , try to send kill -9kill -9 $pidfidone
kill -0判斷進(jìn)程是否存在,然后持續(xù)發(fā)送kill -15指令。等超過指定的秒數(shù),進(jìn)程依然存在,則最終發(fā)送kill -9命令。kill -9。推薦閱讀:
IntelliJ IDEA 2020.2 正式發(fā)布,真香!
微信掃描二維碼,關(guān)注我的公眾號
朕已閱?
評論
圖片
表情

