`ulimit -n` untuk non-root

3

Saya menjalankan El Capitan / Mac OSX 10.11.6 (15G1108) dan saya ingin meningkatkan "file Max Open" untuk beberapa sesi terminal / bash saya. Saya masuk dengan pengguna normal saya. Saya membaca semua panduan yang dapat saya temukan dan berhasil meningkatkan beberapa batasan:

Sebagai pengguna saya:

$ launchctl limit maxfiles
    maxfiles    200000         200000        

Tetapi, ketika saya mencoba untuk menetapkan batas, saya gagal:

$ ulimit -n 8096
-bash: ulimit: open files: cannot modify limit: Operation not permitted

Yang aneh adalah bahwa saya benar-benar dapat mengatur ulimit jika saya beralih ke root:

$ sudo bash
$ ulimit -n 9086

Sekarang tentu saja, menjalankan semuanya sebagai root itu bodoh, jadi saya mencari solusi yang lebih baik. Bagaimana saya bisa mengizinkan pengguna saya juga meningkatkan "Batas File Maks" -nya?

Apa yang telah saya lakukan:

$ cat /etc/sysctl.conf
kern.maxfiles=65536
kern.maxfilesperproc=65536

$ cat /Library/LaunchDaemons/limit.maxfiles.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>Label</key>
        <string>limit.maxfiles</string>
      <key>ProgramArguments</key>
        <array>
          <string>launchctl</string>
          <string>limit</string>
          <string>maxfiles</string>
          <string>200000</string>
          <string>200000</string>
        </array>
      <key>RunAtLoad</key>
        <true/>
      <key>ServiceIPC</key>
        <false/>
    </dict>
  </plist>
theomega
sumber
Hmm, aneh: di VM ElCap saya setiap pengguna dapat mengubah batas file terbuka ulimit -n *.
klanomath

Jawaban:

1

Setelah memiliki masalah yang sama persis ini, saya akhirnya menemukan bahwa urutan startup bash saya ( .bashrc atau serupa) sedang melakukan a ulimit -n 1024; dan itu menyebabkan keduanya lunak dan itu keras batas untuk diatur; yang terakhir dicegah upaya apapun untuk menaikkannya setelah itu, menimbulkan "bash: ulimit: open files: cannot modify limit: Operation not permitted" kesalahan.

Jadi, menghapus perintah itu membuat batas lunak dan keras dikembalikan ke default sistem semula 256 dan unlimited masing-masing. Yang terakhir inilah yang akan memungkinkan Anda ulimit -n <whatever> lagi.

Dalam kasus Anda, anggap penyebabnya sama dan Anda Library/LaunchDaemons/limit.maxfiles.plist masih di tempat seperti yang tercantum, saya berharap itu ulimit -Sn dan ulimit -Hn akan melaporkan keduanya 200000.

cueedee
sumber