ukuran file inti dengan ulimit

12

Pertanyaan saya mungkin tidak terkait dengan Ubuntu pada khususnya, tetapi karena desktop saya menjalankan OS ini, saya datang ke forum ini.

Saya mencoba mengubah ukuran file inti menggunakan ulimit -cperintah sebagai berikut:

$ 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

Mengubah batasan:

$ ulimit -c unlimited

Mengamati hasilnya:

$ 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

Memang batasnya diubah. Namun, ketika saya membuka terminal lain dan memeriksa nilainya, saya masih melihat nilai nol dalam ukuran file inti.

Pertanyaan:

  1. Apakah perubahan yang dilakukan menggunakan ulimitperintah hanya memengaruhi proses saat ini, yaitu dalam hal ini bash?
  2. Saya meluncurkan program dari shell sebagai proses latar depan atau latar belakang. Apakah ulimitperubahan itu berlaku untuk proses baru?
  3. Bagaimana saya bisa membuat semua proses pengguna terpengaruh dengan konfigurasi ini?
maksimal
sumber
1
Apakah Anda mencarinya sebelum bertanya? serverfault.com/questions/637212/increasing-ulimit-on-centos
kenn

Jawaban:

10

ulimit adalah shell builtin, dan dengan demikian hanya mempengaruhi shell saat ini, dan proses dimulai oleh shell itu:

$ type ulimit
ulimit is a shell builtin

Dari 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.

Jadi, ya, proses anak terpengaruh.

Untuk menetapkan batas secara permanen atau untuk semua proses, edit /etc/security/limits.confdan reboot. Contoh-contoh di manual cukup baik. Anda hanya perlu menambahkan sesuatu seperti:

username - core unlimited
muru
sumber
Terima kasih. Oleh manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html , Apakah ulimitjuga perintah eksternal selain menjadi perintah bash builtin?
Tim
@Tim mengutip halaman yang Anda tautkan ke: "Karena ulimit memengaruhi lingkungan eksekusi shell saat ini, selalu disediakan sebagai shell built-in reguler."
muru