如何在 Shell 中重现 "Too Many open files" 错误
How to reproduce "Too Many open files" error in Shell
假设我的打开文件限制是每个进程 1024,
那么如何在 shell 脚本中重现 Too Many open file
错误?
#!/bin/bash
a=0
while [ "$a" -lt 10 ]
do
echo "Welcome $i times"
a=`expr $a + 1`
tail -f /dev/null > myfile$a &
done
我在上面试过了,但是它在 10 个不同的进程中打开了 10 个文件。
您可以使用 ulimit -n
将最大打开文件数设置为较低的数字,然后使用 exec
打开超过该数量的文件(记住文件描述符 0、1和 2 个在启动时已经打开):
#!/usr/bin/env bash
ulimit -n 5
exec 3</dev/null
exec 4</dev/null
exec 5</dev/null
exec 6</dev/null
运行 这会产生:
foo.sh: line 6: /dev/null: Too many open files
foo.sh: line 7: /dev/null: Too many open files
假设我的打开文件限制是每个进程 1024,
那么如何在 shell 脚本中重现 Too Many open file
错误?
#!/bin/bash
a=0
while [ "$a" -lt 10 ]
do
echo "Welcome $i times"
a=`expr $a + 1`
tail -f /dev/null > myfile$a &
done
我在上面试过了,但是它在 10 个不同的进程中打开了 10 个文件。
您可以使用 ulimit -n
将最大打开文件数设置为较低的数字,然后使用 exec
打开超过该数量的文件(记住文件描述符 0、1和 2 个在启动时已经打开):
#!/usr/bin/env bash
ulimit -n 5
exec 3</dev/null
exec 4</dev/null
exec 5</dev/null
exec 6</dev/null
运行 这会产生:
foo.sh: line 6: /dev/null: Too many open files
foo.sh: line 7: /dev/null: Too many open files