Kaip "Linux" pakeisti atidarytų failų skaičiaus ribą?

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.

Sprendimas

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štieji apribojimai - tai tiesiog šiuo metu taikomi apribojimai
  • kietosios ribos žymi didžiausią vertę, kurios negalima viršyti nustačius minkštąją ribą

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

Komentarai (3)

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.

Komentarai (6)
  1. Į /etc/security/limits.conf įrašykite šią eilutę
webuser hard nofile 64000

tada prisijunkite kaip webuser

su - webuser
  1. Redaguokite šiuos du webuser failus

pridėkite .bashrc ir .bash_profile failą paleisdami

echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
  1. Atsijunkite, tada vėl prisijunkite ir patikrinkite, ar pakeitimai atlikti teisingai:
$ ulimit -a | grep open
open files                      (-n) 64000

Štai ir viskas, ir jie bum, bum, bum, bum.

Komentarai (2)