Jaki jest związek między „limitem uruchomienia” i „ulimitem”?

11

W plikach startowych systemu / skryptach startowych powłoki nie ma konfiguracji ulimit.

ulimit -a przedstawia:

-u: processes                       1064
-n: file descriptors                256

launchctl limit przedstawia:

maxproc     2048           2048           
maxfiles    2048           2048

Niejasno pamiętam, że limity launchctl powinny pasować do wyjścia ulimit powłoki, mogę się mylić.

Czy istnieje związek między limitami lauchctl a ulimit?

Howard
źródło
Czy nie otrzymujesz satysfakcjonujących odpowiedzi ze strony man poleceń?
Andrew U.
@AndrewU. Strona podręcznika Launctl nie wspomina o limicie, strona podręcznika ulimit nie wspomina o Launctl ani uruchomiona.
Howard,

Odpowiedzi:

10

W powłoce ulimit zapewnia „kontrolę nad zasobami dostępnymi dla powłoki i uruchomionymi przez nią procesami” (patrz man bash). Dlatego dotyczy tylko skorupy i jej dzieci. Limity uruchamiania są z nim związane i procesami, którymi zarządza. Oba są oddzielne.

Poszczególne programy mogą ustawić swoje własne limity zasobów poprzez wywołanie procedury Standardowa biblioteka C ulimit()lub getrlimit()i setrlimit(). Nie można podnieść niektórych limitów zasobów, chyba że proces działa jako superużytkownik.

Jako praktyczny przykład debuguję duże projekty oprogramowania, a domyślny limit powłoki dla liczby otwartych plików nie jest wystarczająco duży. W moim pliku .bashrc mam następujące elementy:

# Increase the upper limit on the number of open files:
ulimit -n 1024

Teraz mój debugger nie narzeka, że ​​nie może otworzyć wszystkich potrzebnych plików. Oczywiście nie powinno to mieć wpływu na uruchomienie.

ithos67
źródło
1
Aby to rozwinąć: domyślne ustawienia ulimit pochodzą z launchctl limit; chociaż użytkownik może zmieniać numery ulimit, nie mogą one jednak przekraczać launchctl limittwardych limitów.
Howard
to zostanie zresetowane przy ponownym uruchomieniu
inżynier