Saya mencoba melakukan sesuatu yang membutuhkan banyak deskriptor file
sudo ulimit -n 12288
setinggi Snow Leopard ingin pergi; lebih dari ini menghasilkan
/ usr / bin / ulimit: baris 4: ulimit: buka file: tidak dapat mengubah batas: Argumen tidak valid.
Saya ingin meningkatkan jumlahnya jauh lebih tinggi, katakanlah 100000. Apakah mungkin?
mac
osx-snow-leopard
ulimit
file-descriptors
Chris Poole
sumber
sumber
echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf
dan memulai kembali berfungsi untuk saya di Mavericks.Jawaban:
Menggunakan
ulimit
perintah hanya mengubah batas sumber daya untuk shell saat ini dan anak-anaknya dansudo ulimit
membuat shell root, menyesuaikan batasnya, dan kemudian keluar (dengan demikian, sejauh yang saya bisa lihat, tidak ada efek nyata).Untuk melebihi 12288, Anda perlu menyesuaikan kernel
kern.maxfiles
dankern.maxfilesperproc
parameter, dan juga (setidaknya menurut entri blog ini , yang merupakan ringkasan dari diskusi ini ) batas launchd. Anda dapat menggunakannyalaunchctl limit
untuk menyesuaikan semua ini sekaligus:Untuk membuat ini permanen (yaitu tidak diatur ulang saat Anda reboot), buat yang
/etc/launchd.conf
berisi:Kemudian Anda dapat menggunakan
ulimit
(tetapi tanpasudo
) untuk menyesuaikan batas proses Anda.Jika ini tidak berhasil, Anda mungkin mengalami batasan ukuran pada kernel. Jika model Anda mendukungnya , boot kernel dalam mode 64-bit dapat membantu.
sumber
sudo launchctl limit maxfiles 1000000 unlimited
Baik batas keras maupun lunak untuk "maxfiles" tidak terbatas. Silakan gunakan parameter numerik untuk keduanya.launchd.conf
. Saya pikir jika jumlahnya terlalu kecil, itu dapat membuat komputer Anda tidak dapat digunakan. Sebagai contoh, saya menggunakanlimit maxfiles 1024 1024
dan saya mengalami kesulitan untuk mengubahnya kembali.Berikut ini harus menyelesaikan sebagian besar solusi (dan didaftar sesuai urutan hierarki mereka):
Catatan:
sumber
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/LaunchDaemons
membuat file bernamalimit.maxfiles.plist
dan rekatkan hal berikut di (jangan ragu untuk mengubah dua angka (yang merupakan batas lunak dan keras, masing-masing):2. Ubah pemilik file baru Anda:
3. Muat pengaturan baru ini:
4. Terakhir, periksa apakah batasannya benar:
sumber
Tampaknya OS X Lion tidak akan mengizinkan nilai "tidak terbatas":
Memberikan nilai numerik untuk soft dan batas hard melakukan tugas:
sumber
-1
sebagai nilai menghasilkan12288
. Dimungkinkan untuk menggunakan nilai numerik yang lebih besar, misalnyasudo launchctl limit maxfiles 15000 150000
. Namun, saya tidak yakin pengaturan ini berpengaruh.Pada Mavericks itu sederhana. Sebagai pengguna biasa:
ulimit -n 8192
Anda dapat memeriksa pengaturan yang diperbarui melalui
ulimit -a
Di mesin saya:
sumber
echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf
dan kemudian restart mesin merekaPada OS X 10.13.6 ini berfungsi untuk saya:
sumber
Beberapa batas tidak dapat diubah oleh
ulimit
, karena mereka hanya berlaku untuk shell saat ini, oleh karena itulaunchctl
perintah harus digunakan untuk mengubah batas secara global, misalnyaHarap dicatat bahwa menerapkan batas-batas ini dalam
/etc/launchd.conf
(seperti yang disarankan dalam jawaban lain) tidak lagi didukung dalam rilis MacOS terbaru. Meskipun masih dapat menggunakanlaunchd.plist
(lihat :) seperti file konfigurasiman launchd.plist
per pengguna atau sistemplist
seperti yang disarankan di sini , di sana , dan di sana .Untuk membuat batas ini tetap ada, Anda dapat menggunakan
/etc/sysctl.conf
file dan menambahkan misalnya:Agar perubahan berlaku, ini membutuhkan reboot.
Untuk melihat batas saat ini, jalankan:
launchctl limit
atausysctl -a | grep ^kern.max
.Lihat juga: Bagaimana cara mempertahankan pengaturan ulimit di macOS?
sumber