Saya memiliki proses yang berjalan lama yang pada akhirnya akan mencapai batas maksimum file terbuka. Saya tahu cara mengubahnya setelah gagal, tetapi apakah ada cara untuk mengubahnya untuk proses yang berjalan, dari baris perintah?
27
Seperti yang didokumentasikan di sini ,
prlimit
perintah, yang diperkenalkan dengan util-linux 2.21 memungkinkan Anda membaca dan mengubah batas proses yang berjalan.Ini adalah tindak lanjut dari writable
/proc/<pid>/limits
, yang tidak terintegrasi dalam kernel arus utama. Solusi ini seharusnya berhasil.Jika
prlimit(1)
belum, Anda dapat menemukan kode ke versi minimalis di halamanprlimit(2)
manual .sumber
Pada versi util-linux-ng yang lebih baru, Anda dapat menggunakan perintah prlimit, untuk informasi lebih lanjut, baca tautan ini /superuser/404239/setting-ulimit-on-a-running-process
sumber
Anda dapat mencoba ulimit
man ulimit
dengan opsi -n namun halaman mag tidak sebagian besar OS tidak memungkinkan ini diatur.Anda dapat menetapkan batas deskripsi file sistem dengan menggunakan
sysctl -w fs.file-max=N
dan membuat perubahan tetap ada boot posting masuk/etc/sysctl.conf
Namun saya juga menyarankan melihat proses untuk melihat apakah itu benar-benar perlu memiliki begitu banyak file terbuka pada waktu tertentu, dan jika Anda sebenarnya bisa menutup beberapa file dan lebih efisien dalam proses.
sumber
ulimit
tidak menerapkan pengaturan untuk menjalankan proses .Proses ini dapat mengubah batas lunaknya sendiri jika diprogram untuk melakukannya (atau jika Anda berhasil meretasnya), tetapi tidak dapat menaikkan batasnya kecuali jika ia memiliki kemampuan CAP_SYS_RESOURCE. Anda dapat memeriksa batas saat runtime di
/proc/$pid/limits
.sumber