Kepubify ile büyük bir epub dosyasını kepuba çevirirken too many open files şeklinde bir hata alıp başarısız oluyordum. Epub en nihayetinde bir arşiv dosyası ve büyük ya da düzgün hazırlanmamış bir epub dosyasının içinde ciddi anlamda fazla sayıda dosya bulunabiliyor. Benim dönüştürmeye çalıştığım epub dosyasının içerisinde de 100lerce dosya olmasından ve uygulamanın bu dosyaların hepsi üzerinde işlem yapmaya çalışmasından dolayı işlem başarısız oluyordu. Çözümüyse aslında oldukça basit; ulimit parametresini artırmak. Linux bir işlemin belirli sayıda dosya açmasına izin veriyor ve bunun üzerine çıkmaya çalışan bir uygulama olursa engel oluyor.

Geçici Çözüm 🔗

Çözümüne gelecek olursak, ben kalıcı olarak bu ayarı değiştirmek istemediğimiden geçici bir çözümle hallettim sorunumu. Terminal üzerinden

ulimit -n 10000

komutunu çalıştırarak o anki mevcut terminal oturumunda bu limiti artırabiliyoruz ve mevcut terminal üzerinden açacağımız uygulamalar da bu limite göre çalışmış oluyor. Sayıyı kendinize göre ayarlayabilirsiniz.

Bir şeyleri değiştirmeden önce mevcut ayarınızı kontrol etmek isterseniz ulimit -n komutunu kullanabilirsiniz.

Kalıcı Çözüm - 1 🔗

Kalıcı çözümlere gelecek olursak da (ben denemedim): /etc/sysctl.conf dosyasını açıp içerisini aşağıdaki satırı eklemeniz gerekiyor (sayıyı kendinize göre ayarlayarak)

fs.file-max = 10000

daha sonra kaydedip çıkabilirsiniz. Bu değişikliği devreye almak için yönetici olarak sysctl -p komutunu çalıştırmanız gerekiyor.

Eğer sysctl: permission denied on key ‘fs.file-max’ hatası alırsanız, üstteki yöntemi atlayıp bir sonraki yöntemi deneyebilirsiniz.

Kalıcı Çözüm - 2 🔗

/etc/security/limits.conf dosyasını açın ve içerisine aşağıdaki satırları ekleyin:

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535
root soft     nproc          65535
root hard     nproc          65535
root soft     nofile         65535
root hard     nofile         65535

daha sonra /etc/pam.d/common-session dosyasını açarak aşağıdaki satırı ekleyin:

session required pam_limits.so

dosyayı kaydedip oturumunuzu kapatın ve tekrar giriş yapın. ulimit -n ile ayarlarınızı test edin.