Saya mencoba meningkatkan jumlah maksimum file terbuka untuk pengguna saat ini
> ulimit -n
1024
Saya berusaha meningkatkan dan gagal sebagai berikut
> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
Jadi saya melakukan hal yang wajar dan mencoba lari dengan izin temp, tetapi gagal
> sudo ulimit -n 4096
sudo: ulimit: command not found
Pertanyaan
- Bagaimana cara meningkatkan ulimit?
- Mengapa ini terjadi?
Menggunakan Fedora 14
ulimit 4096
tidak berfungsi. Saya pikir-n
itu benar. Sebagai bukti konsep berfungsi jika saya pertama kalisudo su - root
(tetapi hanya perubahan untuk root).Jawaban:
ulimit
adalah shell built-in, bukan perintah eksternal. Itu perlu dibangun karena itu bertindak pada proses shell itu sendiri, seperticd
: 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 bashsudo
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 barisdi mana
paislee
nama pengguna yang ingin Anda jalankan prosesnya. Di shell yang meluncurkan proses yang Anda inginkan batas yang lebih tinggi, jalankanuntuk menaikkan batas lunak ke batas keras.
sumber
sudo bash -c
yangsudo -i
yang dimulai shell login dansudo -s
whcih mulai shell. Batasan yang sama berlaku tetapi ini mungkin berguna dalam keadaan lain.sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"
. Tetapi keduanyaulimit -c 1024
danexec su $LOGNAME"
hanya mempengaruhi shell yang dibuat olehsudo
, jadi apa tujuan dari perintah itu?exec su $LOGNAME"
juga tidak melakukan sesuatu yang berarti untuk menggunakan batas yang diubah. Saya sangat bingung dan bertanya-tanya apakah saya kehilangan sesuatu.ulimit -Sn unlimited
sebagian besar shell tidak berfungsi. Metode yang tepat adalah meneleponulimit -a
dan kemudian memanggil diulimit -n <number>
mana <angka adalah batas keras (kolom kanan).buka file
/etc/security/limits.conf
dan tambahkan baris<user> soft nofile <value>
. untuk menggunakanulimit
perubahan ke root pengguna dan coba yang sama.sumber