linux系统异常原因总结(一)路由器系统崩溃原因总结一一未关闭配置文件句柄导致句柄数太多消耗资源设备崩溃

修复vty_close未关闭配置文件句柄导致句柄数太多,引发系统异常问题

如何判断是配置文件句柄数太多 引发系统异常问题

【日志表现】 LOG中打印表现

too many open files

【排查进程】

先使用ps查看当前正在进行的进程,取一个个PID进行查看,判断是哪一个句柄未释放导致当前的系统异常问题 

正常的进程句柄释放情况如下

【异常进程】

当前有较多句柄未被关闭,判断为当前的进程异常

 

可以看到上面蓝色的字 表示的为 句柄

****句柄小知识*****

在windows中,句柄是一个32位的整数,是内存中维护的一个对象的地址列表的整数索引,这些对象包括:窗口(window)、块(module)、任务(task)、实例 (instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域(region),以及设备描述表(device context)。

在Linux中,每一个进程都由task_struct 数据结构来定义,即PCB,进程通过PCB中的文件描述符表找到文件描述符fd所指向的文件指针filp,内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。文件描述符表是一个指针数组,每一个元素都指向一个内核的打开文件对象,而fd,就是这个表的下标。当用户打开一个文件时,内核会在内部生成一个打开文件对象,并在这个表里找到一个空项,让这一项指向生成的打开文件对象,并返回这一项的下标作为fd,Linux中的文件描述符类似于Windows下文件句柄的概念,但区别是Windows的文件句柄是一个全局的概念,而Linux下文件句柄的作用域只在本进程空间,其中0(标准输入)、1(标准输出)、2(标准错误)是每一个进程中相同的文件描述符,由操作系统规定好,文件描述符所指向元素的文件指针为struct file结构体,在系统中是一个全局的指针。

原文地址:https://www.cnblogs.com/chenxiaomeng/p/13396653.html