Ulimit'i başka bir kullanıcı için nasıl kontrol edebilir ve açık dosyaları nasıl değiştirebilirim?


18

Gearman kullanıcı olarak çalışan bir işlemim var ve open filesbu kötü hatayı almaktan kaçınmak istiyorum :

HATA 2014-09-12 17: 49: 14.000000 [ana] kabul et (Çok fazla açık dosya) -> libgearman-server / gearmand.cc: 788

Ubuntu'da ulimit'i başka bir kullanıcı olarak nasıl çalıştırabilir ve açık dosyaları nasıl değiştirebilirim? Şu anda dişli çark olarak oturum açmıyorum ama root erişimim var. Bunu yapmayı denedim:

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

burada önerilen ama hiçbir şey çıktı alınmaz:

$ su gearman --shell /bin/bash --command "ulimit -n"
Password: 
$

Yanıtlar:


25

Bunu bir Google araması sırasında tökezlediğim ve Tony'nin yorumunu yararlı bulduğum için tekrar ziyaret etmek: sınırların işlem düzeyinde yerleştirildiği doğru olsa da, belirli bir kullanıcı için mevcut sınırları belirleme şekliniz başlattıkları işlemleri bulup kontrol edin proc/${id}/limits.

özellikle:

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

2
Bu, kabul edilen cevap olmalıdır, Debian'daki redis kullanıcısı için geçerli ulimit'i bulmak için kullanılır.
tholu

6

ulimitKomutu çalıştırdığınızda, yalnızca çalışan işlemi ulimit(kabuk) ve tüm alt işlemleri etkiler . Bu nedenle, çalıştırdığınızda bash --command "ulimit -n", yalnızca bu bash örneği için açık dosya sayısını etkiler, daha sonra bash çıkışları, böylece gelecekteki işlemler etkilenmez.

Bu nedenle, istediğinizi başarmak için (gerçek işleminiz limits.confiçin açık dosya sınırını artırmak için), özel dişli çark kullanıcısı için açık dosya sınırını artırmak için düzenlemek daha mantıklı olacaktır .

Başka bir yerde veya burada limit.conf örneklerine bakın .


Ben de buldum ama "etkili olup olmadığını" kontrol etmek isterdim. Artık yaşadığım problemi anlamıyorum bu yüzden eminim
Tony

10
İşte bu şekilde kontrol edersiniz more /proc/<proc_id>/limits ... belki de cevaba eklemeye değer
Tony

5
/etc/security/limits.conf
Limit.conf'un

1

Kullanmayı deneyin su - <USERNAME> -c ulimit' -Hn'. Sadece CEntOS 7'de test ettim ve işe yarıyor.


1
<USERNAME>Giriş yapamıyorsanız (nologin kabuğuna sahipse) bu çalışmaz .
dr01
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.