Kai paleidžiu savo programą, kartais gaunu klaidą apie daugiau nei daug atidarytų failų
.
Paleidus ulimit -a
pranešama, kad riba yra 1024. Kaip padidinti ribą virš 1024?
Edit
Naudojant ulimit -n 2048
gaunama leidimo klaida.
Visada galite pabandyti atlikti ulimit -n 2048
. Tai tik atstatys jūsų dabartinio apvalkalo ribą, o jūsų nurodytas skaičius neturi viršyti griežtosios ribos.
Kiekvienoje operacinėje sistemoje konfigūracijos faile nustatyta skirtinga kietoji riba. Pavyzdžiui, "Solaris" kietąjį atidarytų failų limitą galima nustatyti įkrovos metu iš /etc/system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
OS X sistemoje tuos pačius duomenis reikia nustatyti /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Linux sistemoje šie nustatymai dažnai būna /etc/security/limits.conf.
Yra dviejų rūšių apribojimai:
Minkštąsias ribas gali nustatyti bet kuris naudotojas, o kietąsias ribas gali keisti tik root. Ribos yra proceso savybė. Jos paveldimos, kai kuriamas antrinis procesas, todėl visos sistemos ribos turėtų būti nustatomos sistemos inicializavimo metu inicializavimo scenarijuose, o naudotojo ribos turėtų būti nustatomos naudotojo prisijungimo metu, pavyzdžiui, naudojant pam_limits.
Įkraunant kompiuterį dažnai nustatomi numatytieji parametrai. Taigi, nors ulimit galite nustatyti iš naujo individualioje apvalkale, gali paaiškėti, kad perkraunant kompiuterį jis vėl bus nustatytas į ankstesnę vertę. Jei norite pakeisti numatytuosius nustatymus, įkrovos scenarijuose ieškokite ulimit egzistavimo komandų.
Jei naudojate "Linux" ir gavote leidimo klaidą, jums reikės padidinti leistiną ribą /etc/limits.conf
arba /etc/security/limits.conf
faile (kur yra failas, priklauso nuo konkretaus "Linux" distributyvo).
Pavyzdžiui, norėdami leisti bet kuriam kompiuteryje esančiam asmeniui padidinti atidarytų failų skaičių iki 10000, į failą limits.conf
įrašykite šią eilutę.
* hard nofile 10000
Tada atsijunkite ir iš naujo prisijunkite prie sistemos ir turėtumėte turėti galimybę tai padaryti:
ulimit -n 10000
be leidimo klaidos.
/etc/security/limits.conf
įrašykite šią eilutęwebuser hard nofile 64000
tada prisijunkite kaip webuser
su - webuser
pridėkite .bashrc ir .bash_profile failą paleisdami
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
$ ulimit -a | grep open
open files (-n) 64000
Štai ir viskas, ir jie bum, bum, bum, bum.