ulimit ile çekirdek dosya boyutu


12

Sorum muhtemelen Ubuntu ile ilgili değil, ancak bu işletim sistemini çalıştıran masaüstümden beri bu foruma geldim.

ulimit -cAşağıdaki gibi komutu kullanarak çekirdek dosya boyutunu değiştirmeye çalışıyorum :

$ 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) 7959
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Sınırlamanın değiştirilmesi:

$ ulimit -c unlimited

Sonucu gözlemleyerek:

$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7959
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Gerçekten de limit değişti. Ancak, başka bir terminal açıp değeri kontrol ettiğimde, çekirdek dosya boyutunda hala sıfır değeri görüyorum.

Sorular:

  1. ulimitKomut kullanılarak yapılan değişiklikler yalnızca geçerli işlemi mi etkiliyor, yani bu durumda bash?
  2. Kabuktan ön veya arka plan işlemi olarak bir program başlatıyorum. Does ulimitdeğişim yeni süreç için geçerlidir?
  3. Tüm kullanıcı işlemlerinin bu yapılandırmadan etkilenmesini nasıl sağlayabilirim?

Yanıtlar:


10

ulimit bir kabuk yerleşikidir ve bu nedenle yalnızca geçerli kabuğu ve bu kabuk tarafından başlatılan işlemleri etkiler:

$ type ulimit
ulimit is a shell builtin

Gönderen man ulimit:

The  ulimit  utility  shall  set  or report the file-size writing limit
imposed on files written by the shell and its child processes (files of
any  size  may be read). Only a process with appropriate privileges can
increase the limit.

Yani, evet, çocuk süreçleri etkilenir.

Sınırları kalıcı olarak veya tüm işlemler için ayarlamak için düzenleyin /etc/security/limits.confve yeniden başlatın. Bu sayfadaki örnekler oldukça iyi. Sadece şöyle bir şey eklemeniz gerekir:

username - core unlimited

Teşekkürler. By manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html , mi ulimitde komuta yerleşik bir bash olmanın yanında harici komut?
Tim

@ Link, bağlantı verdiğiniz sayfayı alıntılayarak: "ulimit geçerli kabuk yürütme ortamını etkilediğinden, her zaman düzenli olarak yerleşik bir kabuk olarak sağlanır."
muru
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.