成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

“kill -9”一時(shí)爽,秋后算賬淚兩行

開(kāi)發(fā) 后端
kill是殺死的意思,帶有主動(dòng)的意味。鑒于master、slave這樣的名詞,需要在計(jì)算機(jī)軟件中進(jìn)行整改,kill這樣明顯帶有負(fù)面信息的單詞,按理說(shuō)也需要被干掉。

 本文轉(zhuǎn)載自微信公眾號(hào)「 小姐姐味道」,作者小姐姐養(yǎng)的狗 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小姐姐味道公眾號(hào)。

kill是殺死的意思,帶有主動(dòng)的意味。鑒于master、slave這樣的名詞,需要在計(jì)算機(jī)軟件中進(jìn)行整改,kill這樣明顯帶有負(fù)面信息的單詞,按理說(shuō)也需要被干掉。

不過(guò),如果把命令名字改了,效果也許會(huì)更好。因?yàn)樵贚inux上,kill根本就不是殺死的意思。

它只是想要給進(jìn)程發(fā)送一個(gè)信號(hào)而已。使用kill -l可以看到長(zhǎng)長(zhǎng)的信號(hào)列表。

對(duì)Java程序員來(lái)說(shuō),用的最多的就是kill -9,我也不知道從哪里來(lái)的傳承,碼農(nóng)們都喜歡這種暴力性的命令--喜歡用鋒利的匕首一擊致命。

但是這種玩法又危險(xiǎn)的多,不給進(jìn)程說(shuō)話的機(jī)會(huì)。

大家都知道電視劇里,重要人物臨死的時(shí)候,會(huì)啰啰嗦嗦說(shuō)很多話,話說(shuō)不完是不會(huì)死的。無(wú)論是武林高手,還是達(dá)官貴人,都得交代一些能讓故事情節(jié)繼續(xù)發(fā)展下去的廢話。

《水滸傳》里的“英雄們”,來(lái)的就相對(duì)直接一些。看的不爽,直接單刀直入切中要害,不允許他人有一丁點(diǎn)的廢話,通常情況下直接嗝屁。

各位使用kill -9的兄弟們,個(gè)個(gè)都像黑黑的李逵,單純、暴力、不講人情。

  1. SIGKILL 
  2. Kill signal 
  3. 結(jié)束信號(hào) 

中國(guó)的中庸太極之道,在此蕩然無(wú)存。kill -9直接使得優(yōu)雅關(guān)閉這個(gè)名詞成了廢物。

何為優(yōu)雅關(guān)閉?其實(shí)就像是人的“遺言”,要在死之前,交代一些身后事。

我就常常在想,在我死之前,要把所有的錢花的一分不剩。既不留給后代,也不讓它爛在銀行里。這就需要做很多事。

計(jì)算機(jī)軟件中,在死之前,要處理的事情也還不少。比如,需要把緩沖區(qū)的內(nèi)容處理完畢,發(fā)送出去;微服務(wù)節(jié)點(diǎn)需要先把自己從注冊(cè)中心摘除,才能放心的go die。

大體來(lái)說(shuō),有下面幾個(gè)影響:

  • 請(qǐng)求丟失:內(nèi)存隊(duì)列中等待執(zhí)行請(qǐng)求丟失
  • 數(shù)據(jù)丟失:處于內(nèi)存緩存中數(shù)據(jù)未持久化到磁盤
  • 文件損壞:正在寫的文件沒(méi)有沒(méi)有更新完成,導(dǎo)致文件損壞
  • 業(yè)務(wù)中斷:處理一半的業(yè)務(wù)被強(qiáng)行中斷,如支付成功了,卻沒(méi)有更新到數(shù)據(jù)庫(kù)中
  • 服務(wù)未下線:上游服務(wù)依然往停止節(jié)點(diǎn)發(fā)送請(qǐng)求

這些情況下,如果把服務(wù)玩壞了,正好被領(lǐng)導(dǎo)撞上,被開(kāi)是分分鐘的事。

Java應(yīng)用中處處充斥著這種優(yōu)雅,靠的是shutdownhook鉤子。就是下面這行代碼:

  1. Runtime 
  2.     .getRuntime() 
  3.     .addShutdownHook( 
  4.     new Thread(() -> System.out.println("Do something in Shutdown Hook"))); 

有沒(méi)有好的辦法?有,用kill -15發(fā)送SIGTERM信號(hào)即可。

但有時(shí)候kill -15并不能殺死進(jìn)程,這個(gè)時(shí)候,才是kill -9需要出場(chǎng)的時(shí)候。

聽(tīng)夠了15臨死前說(shuō)的一些廢話,使用9要它的命。

一般的,需要使用kill -15去嘗試殺死進(jìn)程。如果過(guò)一段時(shí)間(比如10秒),進(jìn)程還沒(méi)有停止,kill -9才會(huì)出場(chǎng)。

kill的默認(rèn)信號(hào)值,就是15,可以說(shuō)是很貼心了。但還是有很多人使用9。

我想了半天原因,就是一個(gè)字:懶。

kill -15需要多次確認(rèn),而kill -9一次完事,多數(shù)情況下不會(huì)出事。有這提高工作效率的事,何樂(lè)而不為呢?

常用的信號(hào),還有SIGQUIT,也就是kill -3。

在Java程序下,kill -3的輸出特別有意思,它直接在stdout上輸出了jstack命令所產(chǎn)生的內(nèi)容。如果是tomcat,那么輸出就在canalina.out文件里。

如果jstack對(duì)你的應(yīng)用不好使了,或者應(yīng)用幾乎沒(méi)有響應(yīng)了。使用kill -3是一種曲線救國(guó)的方式。

其實(shí)是JDK屏蔽了這個(gè)信號(hào),對(duì)Java來(lái)說(shuō)是一個(gè)福利。我們?cè)贘DK的文檔中找到相關(guān)介紹。

Sun’s JVM catches signals to implement shutdown hooks for abnormal JVM termination. The JVM uses SIGHUP, SIGINT, and SIGTERM to initiate the running of shutdown hooks.

The JVM uses a similar mechanism to implement the pre-1.2 feature of dumping thread stacks for debugging purposes. Sun’s JVM uses SIGQUIT to perform thread dumps.

我這里有一個(gè)腳本,能夠接受兩個(gè)參數(shù)。第一個(gè)參數(shù)是pid,第二個(gè)參數(shù)是等待的秒數(shù)。

  1. pid=$1 
  2. count=$2 
  3. n=0 
  4. if [ ! -n $count ];then 
  5.     count=10 
  6. fi 
  7.  
  8. while [[ $n  -lt  $count ]] 
  9. do 
  10.     let "n++" 
  11.     kill -0 $pid 
  12.     if [ $? -ne 0 ] 
  13.     then 
  14.         echo "program not exist" 
  15.         break 
  16.     else 
  17.         echo "send kill -15 to $pid" 
  18.     kill -15 $pid 
  19.         sleep 1 
  20.     fi 
  21.     if [[ $n  -eq $count ]] 
  22.     then 
  23.     echo "kill -9 $pid" 
  24.         # after 10s , try to send kill -9 
  25.     kill -9 $pid 
  26.     fi 
  27. done 

腳本將持續(xù)使用kill -0判斷進(jìn)程是否存在,然后持續(xù)發(fā)送kill -15指令。等超過(guò)指定的秒數(shù),進(jìn)程依然存在,則最終發(fā)送kill -9命令。

問(wèn)題是,通常情況下,你還是需要等待上幾秒。自動(dòng)化機(jī)器人不會(huì)覺(jué)得煩,你會(huì)。

所以你還是用kill -9。

作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。我的個(gè)人微信xjjdog0,歡迎添加好友,進(jìn)一步交流。

 

責(zé)任編輯:武曉燕 來(lái)源: 小姐姐味道
相關(guān)推薦

2019-02-15 09:50:39

單身程序員脫單

2012-11-28 09:52:45

蘋果云地圖iCloud

2020-12-17 10:14:01

比特幣加密貨幣區(qū)塊鏈

2019-07-23 07:58:17

谷歌Android開(kāi)發(fā)者

2019-02-13 14:04:01

2023-10-26 01:30:00

系統(tǒng)架構(gòu)成本較高

2021-04-07 11:08:15

Sudo命令Linux

2022-03-23 09:52:41

AI賽車訓(xùn)練

2024-02-20 12:49:00

CSS函數(shù)前端

2019-12-06 10:00:58

代碼開(kāi)發(fā)Java

2018-03-15 13:31:48

潤(rùn)乾LinuxGREP搜索

2022-04-14 11:17:41

MySQL字符配置

2010-07-23 10:23:05

Google機(jī)房

2023-09-12 14:58:00

Redis

2021-06-18 10:12:09

JS代碼前端

2020-11-12 09:45:16

前端開(kāi)發(fā)代碼

2023-10-12 10:11:19

2022-09-25 23:10:53

Python數(shù)據(jù)集機(jī)器學(xué)習(xí)

2022-03-09 14:57:53

Numbapython

2015-07-14 12:34:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 永久网站 | 国产精品视频 | 欧美一级视频在线观看 | 毛片一区二区 | 久久国产精品免费视频 | 狠狠操狠狠干 | 91精品国产综合久久久久久 | 色资源站 | 狠狠色综合久久婷婷 | 亚洲午夜网 | 国产精品一区二区三区四区 | 天天操天天天干 | 日一区二区 | 日日操夜夜操天天操 | av电影一区二区 | 亚洲啊v在线 | 日本理论片好看理论片 | 国精产品一区二区三区 | 国产视频线观看永久免费 | 蜜臀久久99精品久久久久野外 | 久久人人爽人人爽人人片av免费 | 国产成人99av超碰超爽 | 欧美亚洲国产日韩 | 久久精品一区 | 午夜视频导航 | 亚洲va国产日韩欧美精品色婷婷 | 成年人免费网站 | 成年精品 | 久久国产激情视频 | 成人在线精品视频 | 99精品一区二区 | 精品1区2区| 日韩精品一区二区三区久久 | 91久久久久久久久久久久久 | 国产精品久久久久久久久久免费 | 污片在线观看 | 国产特级毛片 | 久久成人免费视频 | 毛片视频免费观看 | 久久综合九九 | 日韩欧美三级电影在线观看 |