5

Linux デスクトップでこの実験を試みました。

int main()
{
  while(1)
    fork();
  return 0;
}

このプログラムを (root ではなく) 通常のユーザーとして実行しましたが、システムがダウンして応答しなくなったことに驚きました。リソース制限の枯渇により、プロセスが強制終了されることを望んでいましたが、明らかにそうではありません。理由はありますか?

ありがとう、シド。

PS: これは、自宅で実験していた私のオフィスの Linux ボックスでした。

4

3 に答える 3

11

フォーク爆弾を再発明しました。

ほとんどの Linux ディストリビューションは、デフォルトでユーザーごとのリソース制限を設定していないと思います。もちろん、それらを構成することはできますが、おそらくまだ構成していません。

CPU 使用率が原因で過熱の問題が発生していない限り、マシンは再起動後に問題なく動作します。

通常のユーザーがあまりにも多くのプロセスを生成するのを防ぐには、構成を/etc/security/limits.confに追加する必要があります

ulimitあまりにも多くのプロセスを開始したり、他のリソースを使いすぎたりする可能性のあるプログラムを実行しようとしている場合は、現在のセッションに適用される制限を設定するために使用できます。

于 2009-01-18T13:10:19.123 に答える
2

ウィキペディアでそれに関するものを見つけることができます。

于 2009-01-18T13:11:58.887 に答える
1

システム管理者がユーザー制限を設定していない可能性があります。ユーザー制限が設定されていない場合、誰も保護できません。

于 2009-01-18T13:09:42.777 に答える