web-dev-qa-db-ja.com

ulimit PICKLE:「操作は許可されていません」および「コマンドが見つかりません」

現在のユーザーが開くことができるファイルの最大数を増やしようとしています

> ulimit -n
1024

私は次のように増やして失敗しようとします

> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted

だから私は自然なことをし、一時的な許可で実行しようとしますが、失敗します

> Sudo ulimit -n 4096
Sudo: ulimit: command not found

質問

  1. Ulimitを増やすには?
  2. なぜこうなった?

Fedora 14の使用

15
paislee

ulimitは、組み込みのシェルであり、外部コマンドではありません。 cdのようにシェルプロセス自体に作用するため、組み込みが必要です。現在のディレクトリのような制限は、その特定のプロセスのプロパティです。

Sudo bash -c 'ulimit -n 4096'は機能しますが、Sudoのみによって呼び出されるbashプロセスの制限が変更されるため、役に立ちません。

各制限には、ハード制限とソフト制限の2つの値があります。ハード制限を上げることができるのはrootだけです。誰もがハードリミットを下げることができ、ソフトリミットはハードリミットを超えてはいけないという唯一の制約により、どちらの方向にも変更できます。ソフトリミットは、重要な実際の値です。

したがって、すべてのプロセスで、オープンファイルのハード制限が少なくとも4096になるように調整する必要があります。ソフト制限は1024に保つことができます。多くのファイルを必要とするプロセスを起動する前に、ソフト制限を上げてください。 /etc/security/limits.conf、行を追加

paislee hard nofile 4096
paislee soft nofile 1024

ここで、paisleeは、プロセスを実行するユーザーの名前です。より高い制限が必要なプロセスを起動するシェルで、次を実行します。

ulimit -Sn unlimited

ソフトリミットをハードリミットに引き上げます。

ファイルを開く/etc/security/limits.confと行を追加<user> soft nofile <value>ulimitを使用するには、rootユーザーに変更して同じことを試してください。

3
harish.venkat