ulimit
adalah shell built-in, bukan perintah eksternal. Itu perlu dibangun karena itu bertindak pada proses shell itu sendiri, seperti cd
: batas, seperti direktori saat ini, adalah properti dari proses tertentu.
sudo bash -c 'ulimit -n 4096'
akan bekerja, tetapi itu akan mengubah batas untuk proses bash sudo
hanya dipanggil , yang tidak akan membantu Anda.
Ada dua nilai untuk setiap batas: batas keras dan batas lunak. Hanya root yang dapat menaikkan batas hard; siapa pun dapat menurunkan batas keras, dan batas lunak dapat dimodifikasi di kedua arah dengan satu-satunya kendala yang tidak boleh lebih tinggi dari batas keras. Batas lunak adalah nilai aktual yang penting.
Oleh karena itu Anda perlu mengatur bahwa semua proses Anda memiliki batas keras untuk membuka file minimal 4096. Anda dapat menjaga batas lunak di 1024. Sebelum meluncurkan proses yang membutuhkan banyak file, naikkan batas lunak. Di /etc/security/limits.conf
, tambahkan baris
paislee hard nofile 4096
paislee soft nofile 1024
di mana paislee
nama pengguna yang ingin Anda jalankan prosesnya. Di shell yang meluncurkan proses yang Anda inginkan batas yang lebih tinggi, jalankan
ulimit -Sn unlimited
untuk menaikkan batas lunak ke batas keras.
ulimit 4096
tidak berfungsi. Saya pikir-n
itu benar. Sebagai bukti konsep berfungsi jika saya pertama kalisudo su - root
(tetapi hanya perubahan untuk root).