web-dev-qa-db-ja.com

他のユーザーの制限を確認して開いているファイルを変更するにはどうすればよいですか?

Gearmanユーザーとして実行中のプロセスがあり、この厄介なエラーを回避するためにopen filesを変更したいと思います。

エラー2014-09-12 17:49:14.000000 [メイン]受け入れます(オープンファイルが多すぎます) - > libgearman-server/gearmand.cc:788

Ubuntuで他のユーザーとしてulimitを実行し、開いているファイルを変更するにはどうすればいいですか?私は現在gearmanとしてログインしていませんが、私はrootアクセスを持っています。私はこれをやってみました:

su gearman --Shell /bin/bash --command "ulimit -n"

推奨されているとおり 、ここ ですが、何も出力されません。

$ su gearman --Shell /bin/bash --command "ulimit -n"
Password: 
$
17
Tony

グーグル検索の間に私がそれに出会ったので、これを再検討して、 Tony のコメントが有用であることを発見しました:限界がプロセスに置かれるのは本当ですがレベル、特定のユーザーに対して設定されている制限を決定する方法は、そのユーザーが開始したプロセスを見つけてproc/${id}/limitsを確認することです。

具体的には:

$ ps -u username  # look up processes owned by user
$ Sudo grep 'open files' /proc/${id}/limits  # find "Max open files" line for process ID
23
phette23

ulimitコマンドを実行すると、ulimitを実行しているプロセス(シェル)とすべてのサブプロセスにのみ影響します。そのため、bash --command "ulimit -n"を実行しても、bashのそのインスタンスで開いているファイルの数にのみ影響があり、その後bashが終了するため、将来のプロセスには影響がありません。

実際のプロセスのオープンファイル制限を増やすために必要なことを達成するためには、limits.confを編集して、特定のギアマンユーザーのオープンファイル制限を増やすことがおそらくより理にかなっています。

別の場所にあるlimits.confの例、または here を参照してください。

6
BIOSCMOS

su - <USERNAME> -c ulimit' -Hn'を使ってみてください。 CEntOS 7でテストしたところ、うまくいきました。

1