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


15

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

> 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の使用


削除されたコメントへの応答:ulimit 4096動作しません。私-nは正しいと思います。概念実証として、最初に動作しますsudo su - root(ただし、ルートの変更のみ)。
ペイズリー


回答:


17

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

ソフト制限をハード制限まで上げます。


1
代替方法sudo bash -csudo -i、ログインシェルをsudo -s開始し、whcihがシェルを開始することです。同じ制限が適用されますが、これは他の状況で役立つ場合があります。
ブラム

ありがとう。関連する質問をしてもいいですか?他の返信と投稿stackoverflow.com/a/17483998/156458unix.stackexchange.com/a/238413/674unix.stackexchange.com/a/169035/674はすべて、を使用することをお勧めし sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"ます。しかし、両方でulimit -c 1024exec su $LOGNAME" によって作成されたシェルにのみ影響を与えるsudoので、コマンドの目的は何ですか?exec su $LOGNAME"また、変更された制限を利用する意味のあることは何も行いません。私は非常に混乱しており、何かを見逃しているのではないかと思っています。
ティム

ulimit -Sn unlimitedほとんどのシェルでは機能しないことに注意してください。右の方法が呼び出すことでulimit -a、次に呼び出すulimit -n <number><数がハードリミット(右列)です。
18年

3

ファイル/etc/security/limits.confを開き、行を追加します<user> soft nofile <value>。使用するためのulimitrootユーザーに変更をして同じことをしてみてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.