このシェルステートメントを理解する


8

私はそれが宿題であることを認めますが、次のコマンドラインを説明するのに迷っています。

警告:これはいわゆるフォーク爆弾です!このコマンドラインは、すべてのRAMとCPUを消費してPCをクラッシュさせる可能性があり、クラッシュします(私を信じて、私はそれを試しました...)

:(){ :|:& };:

私はそれを一人でやるべきだと知っているので、ここに私が今まで持っているものがあります(これらの文字を検索することは非常に残念です)。

  1. パイプを使用すると、いくつかのコマンドを連結して、最初の出力が2番目の出力によって入力として使用されるようにすることができます。
  2. &はバックグラウンドでコマンドを実行するためのものです(基本的に、コマンドによってブロックされるべきではないシェルから何かを開始するために使用されます)

私はそれを推測する:フォークすることですか?しかし、ここで私は完全に迷っています!私は学びたいので、多分誰かがそれについて読むことができる良いリソースを持っていますか?


@kkp:システムがクラッシュと同様に応答していない状況ではありませんか?それを修正する解決策は同じです。システムをハードリセットします
WarrenFaith

うん、君のいうとおりだ。
samarasa

FORKBOOOOOMB:D
zookalicious

回答:


14
:()      # define ':' -- whenever we say ':', do this:
{        # beginning of what to do when we say ':'
    :    # load another copy of the ':' function into memory...
    |    # ...and pipe its output to...
    :    # ...another copy of ':' function, which has to be loaded into memory
         # (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called)
    &    # disown the functions -- if the first ':' is killed,
         #     all of the functions that it has started should NOT be auto-killed
}        # end of what to do when we say ':'
;        # Having defined ':', we should now...
:        # ...call ':', initiating a chain-reaction: each ':' will start two more.

ソース:ウィキペディアのフォークボム


ありがとう...それはかなり悪そうに聞こえます!この方法でメソッドを定義できることを知りませんでした。非常に興味深い
WarrenFaith

ウィキペディアの記事をどのように見つけたのか教えていただけますか?私は試したが成功しなかった...
WarrenFaith

私はすでに何を検索するかを知っていました;)
Egil

2
わかりました、それであなたは邪悪な悪いハッカーです:)とにかくありがとう!私を大いに助けてくれました
WarrenFaithは、

Ubuntuのフォーラムを閲覧している人たちのほとんどは、あなたがなど残りの部分を知っているforkbombsまたはsudoのRM高周波の実行について何度も警告してきた...知らんをエギルはしかしからそれを得たことの場合:P
zookalicious
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.