bash: ulimit: rozmiar pliku rdzenia: nie można zmienić limitu: Operacja niedozwolona

28

Fedora 12 gcc 4.4.1

Zajmuję się programowaniem, a mój program dał mi zrzut stosu.

Jednak nie ma pliku podstawowego do zbadania.

Więc zrobiłem:

ulimit -c unlimited

i dostałem ten komunikat o błędzie:

bash: ulimit: core file size: cannot modify limit: Operation not permitted

Próbowałem również ustawić ulimit na 50000 i nadal otrzymałem ten sam błąd.

Wyniki ulimit -a:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 12275
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
ant2009
źródło

Odpowiedzi:

25

Grep dla ustawienia twardego limitu w plikach inicjujących bash. Ze strony podręcznika użytkownika bash .

Po ustaleniu nie można zwiększyć twardego limitu; miękki limit można zwiększyć do wartości twardego limitu.

Twardy limit jest ustawiany za pomocą flagi ulimit -H. Można go ustawić w plikach / etc / bash * lub / etc / profile *. Poszukaj ustawienia ulimit -Hc.

Darren Hall
źródło
man ulimit: Jeśli nie podano ani -H ani -S, ustawione są zarówno miękkie, jak i twarde limity . Więc szukanie -H lub -S niekoniecznie doprowadzi cię do właściwego rozwiązania. Wystarczy grep dla ulimit, a następnie dowiedzieć się, czy -H lub -S lub oba są domyślnie ustawione. Oczywiście jest to dziesięć lat później, więc zachowanie lub strony podręcznika mogły zostać zaktualizowane od czasu pierwotnego pytania / odpowiedzi.
Jim
1

Zdarzyło mi się to, gdy korzystałem z niego dropbearjako serwer SSH. Najwyraźniej dropbear ustawia pewne twarde limity przed spawnowaniem twojej powłoki.

Przejście na OpenSSH rozwiązało problem.

Barry Brown
źródło
W rzeczy samej. Na początku funkcji main () znajduje się wywołanie funkcji disallow_core (), które wywołuje setrlimit (2). Oczywiście ze względów bezpieczeństwa, ale musi być lepszy sposób. github.com/mkj/dropbear/blob/master/svr-main.c
Sundae