Як дізнатися кількість відкритих файлів в системі та змінити обмеження

Дізнатись загальну кількість файлів, відкритих у системі в поточний момент:

# lsof | wc -l
4476

Дізнатись кількість файлів, відкритих конкретним процесом, наприклад, mysqld:

# pidof mysqld
32243
# lsof -p 32243 | wc -l
1125

Файлові дескриптори, відкриті ядром:

# sysctl fs.file-nr
fs.file-nr = 2816 0 414641

Тут:

2816 - відкриті дескриптори
0 - кількість відкритих, але незадіяних дескрипторів
414641 - максимальна кількість дескрипторів, яка може бути відкрита у системі

Максимальну кількість дескрипторів, яка може бути відкрита у системі, також можна визначити так:

# sysctl fs.file-max
fs.file-max = 414641

Дізнатись максимальну кількість файлів, яка може бути відкрита поточним користувачем в поточній операційній оболонці:

# ulimit -a | grep "open files"
open files (-n) 1024

Те саме для будь-якого користувача, наприклад, mysql:

# ulimit -a -u mysql | grep "open files"
open files (-n) 1024

Встановити інший максимум для кількості відкритих файлів в поточній операційній оболонці:

# ulimit -n 4096
# ulimit -a | grep "open files"
open files (-n) 4096

Відкоригувати обмеження на кількість відкритих файлів перманентно:

# echo "* soft nofile 16384" >> /etc/security/limits.conf
# echo "* hard nofile 16384" >> /etc/security/limits.conf

після чого перезавантажити систему.