GNU/Linux >> Linux の 問題 >  >> Linux

次のコマンドがシステムを強制終了するのはなぜですか?

誰もがbashで実行されている次のコードを理解していますか?

:(){ :|:& };:

fork」のようです Linuxでの爆弾。

承認された回答:

実際、解読するのはそれほど難しくありません。

このコードは、:という名前の関数を定義するだけです。 これは、パイプラインでそれ自体の2つのインスタンスを呼び出します::|:& 。定義後、この関数のインスタンスが開始されます。

これにより、サブシェルプロセスの数が急速に増加します。保護されていないシステム(ユーザーごとのプロセス数の制限がないシステム)は、正当なプロセスの数がすぐに多くなり、ほとんどのCPUリソースが奪われるため、このようなフォーク爆弾の影響を大きく受けます。


Linux
  1. システム管理者(root)としてコマンドを実行する方法は?

  2. 「最後の」コマンドの出力?

  3. Linux –システムにRootfsファイルシステムが存在しないのはなぜですか?

  1. コマンド「:(){:|:&};:」がシステムの遅延をひどくして、再起動しなければならなかったのはなぜですか?

  2. cp コマンドのソース コードはどこから入手できますか?

  3. emacs のデフォルトの find-grep コマンドを変更する

  1. Linuxlsコマンドをマスターする

  2. Linuxの「トップ」コマンドのガイド

  3. コマンドラインから PHP コードを実行するにはどうすればよいですか?