Bash
為什麼以下命令會殺死系統?
任何人都理解以下程式碼,在 bash 中執行?
:(){ :|:& };:
它似乎是
fork
Linux 上的“炸彈”。
其實破解起來並不難。
這段程式碼只定義了一個名為的函式
:
,它在管道中呼叫自身的兩個實例::|:&
. 在定義之後,這個函式的一個實例被啟動。這導致子shell 程序的數量快速增加。未受保護的系統(每個使用者沒有程序數限制的系統)將受到這種 fork 炸彈的嚴重影響,因為合法程序將很快被數量超過,從而剝奪了大部分 CPU 資源。