Я запускаю cron, и вывод приходит на мой идентификатор и получается ниже в качестве вывода:
/ bin / sh: / usr / bin / php: слишком много открытых файлов в системе
Cron запускается каждые 5 минут.
Проверили /var/logs/cron
и cron выполняется каждые 5 минут.
Сайты на сервере работают нормально.
Это означает, что в вашей системе закончились дескрипторы файлов на вашем php или в другом приложении. Убедись в близко любые файлы, которые вы открываете, бесплатно обрабатываются.
Для количества дескрипторов каждой запущенной программы используйте (как root):
for p in $(ps -A -o pid); do
nh=$(ls /proc/$p/fd 2>/dev/null | wc -l) &&
exe=$(readlink -f /proc/$p/exe 2>/dev/null) &&
echo "$p ($exe): $nh"
done
Для более подробного вывода используйте lsof
.
Вы также можете увеличить количество возможных дескрипторов системных файлов, изменив /etc/security/limits.conf
(что влияет на изменения на /proc/sys/fs/file-max
) и уменьшите его для текущего сеанса терминала с помощью ulimit -n
.
Проверьте, сколько файлов вы в данный момент открыты в системе:
$ sysctl kern.num_files
и каково ваше ядро:
$ sysctl kern.maxfiles
Чтобы проверить, какие обычные файлы открыты, эта команда может помочь:
lsof | grep -w REG | less
Если ваш лимит слишком низкий, увеличьте его с помощью следующих команд (запускайте как root):
sysctl -w kern.maxfiles=20480
sysctl -w kern.maxfilesperproc=4096
Примечание: добавить sudo
при необходимости при запуске из учетной записи пользователя.
и попробуй еще раз.
Чтобы установить его навсегда, добавьте его в свой /etc/sysctl.conf
:
kern.maxfiles=20480
kern.maxfilesperproc=4096
Если у вас нет доступа для изменения лимитов, обратитесь к своему хостинг-провайдеру.