gpt4 book ai didi

Linux - 解决 "too many open files"错误

转载 作者:行者123 更新时间:2023-12-05 01:06:33 25 4
gpt4 key购买 nike

在 RHEL 上,出现“打开的文件过多”错误。我想重现它,以便我了解它的确切原因。

  • cat /proc/sys/fs/file-max给出操作系统级别的最大打开文件数。 ./file-nr给出当前打开文件的数量
  • sudo lsof | wc -l是查看当前打开文件数量的另一种方法,尽管它包含重复的值,如所述 here .
  • ulimit -n是每个进程的最大打开文件数(对我来说是 1024)
  • sudo lsof -p <PID> | wc -l给出 lsof当前进程的打开文件数的版本。

我会追求 bash解决方案,如果可能的话,这会创建一个炸毁 ulimit -n 的进程只需打开虚拟文件。潜在地,我还想使用其中几个测试过程来突破操作系统限制。

另外,我怎样才能正确地终止这些进程?谢谢

这将允许我准确检查达到的限制( file-maxlsof... )并试验导致它的操作类型。

最佳答案

#!/usr/bin/env bash
case $BASH_VERSION in
''|[1-3].*|4.0.*) echo "ERROR: Bash 4.1 or newer required" >&2; exit 1;;
esac

[[ $1 ]] || { echo "Usage: $0 number-of-files" >&2; exit 1; }

echo "Running as process $$" >&2
for ((i=0; i<$1; i++)); do
exec {fd_num}>/dev/null || {
echo "Error on iteration $((i+1))" >&2
break
}
done

# if started from a TTY, let user press enter to exit
# otherwise (f/e, if run with </dev/null), keep running until we're killed
if [[ -t 0 ]]; then
read -p "Press enter to exit this process:" _
else
while :; do sleep 600 || exit; done
fi

如果输出 Running as process 26941,那么您可以 ls -l/proc/26941/fd 来查看文件描述符是否真正在使用中(并计数他们,如果你选择)。

关于Linux - 解决 "too many open files"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68895412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com