Linux: Find Out How Many File Descriptors Are Being Used

    科技2025-11-06  16

    Linux: Find Out How Many File Descriptors Are Being Used

    While administrating a box, you may wanted to find out what a processes is doing and find out how many file descriptors (fd) are being used. You will surprised to find out that process does open all sort of files: => Actual log file

    => /dev files

    => UNIX Sockets

    => Network sockets

    => Library files /lib /lib64

    => Executables and other programs etc

    In this quick post, I will explain how to to count how many file descriptors are currently in use on your Linux server system.

    Step # 1 Find Out PID

    To find out PID for mysqld process, enter:# ps aux | grep mysqld OR# pidof mysqld Output:

    28290

    Step # 2 List File Opened By a PID # 28290

    Use the lsof command or /proc/$PID/ file system to display open fds (file descriptors), run:# lsof -p 28290 # lsof -a -p 28290 OR# cd /proc/28290/fd # ls -l | less You can count open file, enter:# ls -l | wc -l

    Tip: Count All Open File Handles

    To count the number of open file handles of any sort, type the following command:# lsof | wc -l Sample outputs:

    5436

    List File Descriptors in Kernel Memory

    Type the following command:# sysctl fs.file-nr Sample outputs:

    fs.file-nr = 1020 0 70000

    Where,

    1020 The number of allocated file handles.0 The number of unused-but-allocated file handles.70000 The system-wide maximum number of file handles.

    You can use the following to find out or set the system-wide maximum number of file handles:# sysctl fs.file-max Sample outputs:

    fs.file-max = 70000

    See how to set the system-wide maximum number of file handles under Linux for more information.

    More about /proc/PID/file & procfs File System

    /proc (or procfs) is a pseudo-file system that it is dynamically generated after each reboot. It is used to access kernel information. procfs is also used by Solaris, BSD, AIX and other UNIX like operating systems. Now, you know how many file descriptors are being used by a process. You will find more interesting stuff in /proc/$PID/file directory:

    /proc/PID/cmdline : process arguments/proc/PID/cwd : process current working directory (symlink)/proc/PID/exe : path to actual process executable file (symlink)/proc/PID/environ : environment used by process/proc/PID/root : the root path as seen by the process. For most processes this will be a link to / unless the process is running in a chroot jail./proc/PID/status : basic information about a process including its run state and memory usage./proc/PID/task : hard links to any tasks that have been started by this (the parent) process.

    See also: /proc related FAQ/Tips

    /proc is an essentials file system for sys-admin work. Just browser through our previous article to get more information about /proc file system:

    /proc/filesystems: Find out what filesystems supported by kernelHowto: Linux detect or find out a dual-core cpuLinux display CPU information – number of CPUs and their speedHow to Scan new LUNs on Linux with QLogic driverLinux command to gathers up information about a Linux systemLinux increase the maximum number of open files or file descriptorsHow to display or show information about a Linux Kernel module or driversLinux scan wireless card for informationLinux disable or drop / block ping packets all togetherHow do I find out if my server CPU can run a 64 bit kernel version (apps) or not?Display Linux kernel slab cache information in real timeMaking changes to /proc filesystem permanentlyHowto rebuilding a RAID array after a disk failsFind out if my server is capable of running para-virtualized guest ( PAE support )Linux configure Network Address Translation or NATHowto: Linux see new fiber channel attached disk LUNs without rebootingI also recommend reading /proc file system related document, and lsof man page to get a better understanding about fd and files.
    Processed: 0.009, SQL: 8