查看当前系统最大的文件打开数,如下图
在linux终端中输入ulimit -a
如何知道当前进程打开了多少个文件句柄呢?
下面一段小脚本可以帮你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
131 24204
57 24244
57 24231
56 24264
其中第一列是打开的文件句柄数量,第二列是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
ps -aef|grep 24204
mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
1.列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
2. 查看谁正在使用某个文件
lsof /filepath/file
6. 列出某个程序所打开的文件信息
lsof -c mysql
10. 通过某个进程号显示该进行打开的文件
lsof -p 1
参考资料
0. http://blog.csdn.net/hzhsan/article/details/9717257
1. http://www.51testing.com/html/00/130600-867347.html
2. http://stackoverflow.com/questions/10966392/fopen-in-clinux-returns-too-many-open-files
3. http://man.linuxde.net/lsof
4. http://jingyan.baidu.com/article/1974b289a397d1f4b1f77495.html