我正在运行一个cron和输出到我的id和获取下面的输出:
/ bin / sh:/ usr / bin / php:系统中打开的文件过多
克龙每5分钟运行一次。
已经检查/var/logs/cron和cron每5分钟执行一次。
网站在服务器上正常工作。
这意味着你的系统用完了文件句柄,无论是在你的PHP或其他应用程序。 确保closures您打开的任何文件以释放文件句柄。
对于每个正在运行的程序的句柄数,使用(以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 。
你还可以通过modyfing /etc/security/limits.conf (它影响到/proc/sys/fs/file-max变化)来增加可能的系统文件句柄的数量,并用ulimit -n减less当前的terminal会话。
通过以下方式检查您目前在系统中打开了多less个文件:
$ 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
如果您无法更改限制,请联系您的托pipe服务提供商。