Batas buka file tidak berfungsi seperti sebelumnya di OSX Yosemite [duplikat]

22

Saya baru saja memperbarui Mac OS X ke Yosemite, dan sekarang beberapa aplikasi tidak berfungsi (IBM DB2). Saya tahu bahwa saya perlu mengatur Open Files ke 65000, namun perintahnya tidak berfungsi.

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

Mengapa ini terjadi dan bagaimana saya bisa memperbaiki masalahnya?

AngocA
sumber

Jawaban:

25

Sepertinya ada metode yang sama sekali berbeda untuk mengubah batas file terbuka untuk setiap versi OS X!

Untuk OS X Sierra (10.12.X) Anda perlu:

  1. Dalam /Library/LaunchDaemonsmembuat file bernama limit.maxfiles.plistdan rekatkan hal berikut di (jangan ragu untuk mengubah dua angka, yang merupakan batas lunak dan keras, masing-masing):

    <?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>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. Ubah pemilik file baru Anda:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. Muat pengaturan baru ini:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. Akhirnya, periksa apakah batasannya benar:

    launchctl limit maxfiles
    
ninjaPixel
sumber
7
Menantikan jawaban baru untuk macOS 10.13! :)
NSTJ
1
Proses tidak bekerja untuk saya sampai saya memulai kembali. Terima kasih! itu benar-benar banyak membantu
user2773086
Intisari ini juga mengatakan memodifikasi file-file ini adalah cara untuk memperbarui batas file terbuka ini untuk Sierra gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Devin G Rhode
1
Restart diperlukan untuk batasan agar berfungsi (bahkan jika langkah # 4 benar-benar menunjukkan nilai yang diperbarui)
trinth
21

Saya melihat Anda menanyakan semua pertanyaan ini.

Ada batas kernel yang harus Anda tangani, kern.maxfiles yang merupakan batas kernel dan tidak dapat dilampaui ketika mengatur ulimit.

Lihat halaman blog Krypted File Maksimum di Mac OS X untuk deskripsi tentang cara memanipulasi kern.maxifiles menggunakan sysctl.

Saya belum memuat Yosemite di Mac saya. The sysctl -w kern.maxfiles=65000bekerja pada Mavericks, yang memiliki kern.maxfiles yang sama = 12288 limit secara default.

Saya memeriksa VM OS X 10.6.8 saya dan memiliki batas yang sama yang menimbulkan pertanyaan tentang bagaimana sebelumnya berfungsi sebelum versi OS X Anda.

Ada slide share ( DB2 untuk Mac OS X Menginstal dan mengatur DB2 untuk Mac OS X ) yang menunjukkan batas yang disarankan untuk menggunakan DB2, lihat Meningkatkan Parameter Sistem halaman 7.

Tingkatkan Parameter Sistem

Buka /etc/sysctl.conf (atau buat jika belum ada) dan masukkan pengaturan berikut. Pengaturan ini meningkatkan beberapa pengaturan untuk memori bersama dan batas pengguna yang dibutuhkan DB2 agar dapat bekerja di Mac.

Tambahkan baris berikut ke /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperc5
kern.maxfiles = 65536

Sepertinya Anda kehilangan /etc/sysctl.conffile saat ditingkatkan.

pengguna187561
sumber
Sebenarnya, saya menginstal DB2 sejak lama dan itu berhasil. Lalu saya memperbarui ke Maverick tahun lalu, tanpa masalah. Dan hari ini, saya memperbarui ke Yosemite dan masalah ini muncul. Saya tidak dapat memulai DB2 saya yang sudah diinstal.
AngocA
Hal lain adalah bahwa sysctl.conf saya identik dengan file yang Anda masukkan dalam posting Anda. Saya membuat pertama kali saya menginstal DB2 (satu tahun yang lalu), tetapi saya tidak menyentuhnya untuk migrasi.
AngocA
Masalahnya adalah beberapa ruang kosong di file itu: ibm.com/developerworks/community/forums/html/…
AngocA
1
Mengejar ruang, siapa sangka. Apple seharusnya memiliki beberapa programmer terbaik di dunia.
user187561
@ user187561 sysctl(8)berasal dari BSD.
Drew Stephens
12

Di Mac OS 10.10 sepertinya pengaturan ulimit tidak dapat melebihi pengaturan batas launchctl.

Jadi, pertama-tama Anda harus menjalankan maxctile batas launchctl di terminal untuk mendapatkan pengaturan saat ini:

launchctl limit maxfiles
maxfiles    256            unlimited 

Jadi dalam kasus saya batas lunak adalah 256, batas keras tidak terbatas. Dan kemudian jika saya ingin mengatur batas lunak ke 512:

sudo launchctl limit maxfiles 512 unlimited

Penggunaan rinci launchctl untuk batas pengaturan dapat ditemukan di sini: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

imadcat
sumber
'launchctl limit maxfiles 512 unlimited' tampaknya menetapkan batas (lunak, keras) saya menjadi (512.10240) di Yosemite 10.10.5 pada 2015-09-30
Dave X
2
"launchctl limit maxfiles unlimited unlimited; launchctl limit maxfiles" menunjukkan bahwa 10240 adalah batas terbesar yang dapat dimasukkan. Menggunakan nomor yang lebih besar secara diam-diam gagal, meninggalkan pengaturan seperti sebelumnya.
Dave X