日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 一行代码,一行代码终结你的Linux~

發布時間:2023/12/10 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 一行代码,一行代码终结你的Linux~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

分類:

代碼:

:() { :|:& }; :

為什么這個東西會讓你的系統死掉???有人執行了然后問我

讓我們來分析一下這段代碼,我改一下格式,但內容是一樣的 代碼:

:() # 定義一個叫“:”的過程

{ # 標記過程內容的開始

: | : & # 執行“:”這個過程,然后通過管道接到“:”再執行一次,而且每一次執行,都會在后臺執行

}; # 標記過程內容的結束,因為是同一行來寫,所以要加上“;”,這樣才能接后面的內容

: # 執行:

兩個原因使它死掉:

1. 無限遞歸。倘若只是簡單的: &,那么每次遞歸調用的時候一邊在后臺執行,而另外一邊則在退出。然而,即使如此,倘若你只是下面的內容,你仍然可以看到不少bash,而且是不斷地增多。其原因很可能是一邊產生新的進程的同時,另外一邊的進程卻還沒完全退出。然而,這種產生方式,終究會在某個時刻達到動態平衡,也就是新產生新進程的速度和結束進程的速度達到平衡。因而,這并不一定會讓系統掛掉。 代碼:

show_ps() { ps -A | grep bash; show_ps & }; show_ps

2. 平衡的破壞

2.1 兩個進程同時開始

使用管道的時候,不是一個進程完了然后另外一個進程才開始,而是兩個進程同時開始,其中一個進程讀取另外一個進程的標準輸出作為標準輸入。 代碼:

tee | grep abc

可以看到,這個時候,我們只有輸入滿足正則表達式abc的內容,它才會被重復。而這個過程會一直持續到我們結束tee的輸入。

2.2 死機的原因:同時執行導致平衡的破壞。(注意:這只是一個簡化的模型。同時執行只是理想情況,真正在執行的時候,會由于實際情況有所偏差,但由于偏差并不大,所以這個模型仍然可用;另外,現在假設每個“:”都會產生一個進程,然而實際情況是這樣的:先: | : &產生一個進程,接著由于兩次:的調用進而產生兩個進程,再接著: | : &所在的進程消亡,如此循環,顯然,實際情況只是比這個模型增加了一些自我抵銷的中間環節而已)

在: | : &執行的時候,我們知道,兩個“:”是同時執行的。倘若同時有n個“:”在運行,那么,它將首先產生2*n個進程,然后這n個進程再結束掉,此時相當于新增加了2*n個進程。那從第一次調用開始,假設進程產生后馬上結束,那么進程數量的變化將呈2^n的趨勢變化。然而產生新進程的速度是極快的,因而在極短的時間內將會產生無數的進程。在這種情況下,死機是很正常的。

總結

以上是生活随笔為你收集整理的linux 一行代码,一行代码终结你的Linux~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。