Difference between procfs and sysfs filesystem in Linux

/proc and /sys partitions keeps the system information on which its running and are useful to get any system details or running configuration we need.

As we know in Linux, everything is a file. Hence in these two partitions every information related to system hardware, drivers, and configuration is stored as run time files.

The files on these partitions can’t be changed, however we can get the running configuration and make changes to get it in effect on next system boot.

There are few parameters you can force to apply via files in /proc or /sys. The example is to re-scan storage, to clean dentries or inode cache, etc.

1. Where are these runtime partitions mounted ?

[root@nglinux ~]# mount | egrep -i 'proc|sysfs'
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

2. Contents of /proc and sys partiton ?

[root@nglinux ~]# ls /proc/
1     1444  1565  1724  21    2186  2327  2486  33    5          cmdline      irq         mounts        swaps
10    1468  1581  1727  2120  2191  2329  25    34    6          cpuinfo      kallsyms    mpt           sys
1092  1478  1595  1754  2131  2193  2332  2527  35    7          crypto       kcore       mtd           sysrq-trigger
11    15    16    1773  2143  2195  2338  26    36    8          devices      key-users   mtrr          sysvipc
1153  1538  1601  18    2158  2197  2360  27    3844  80         diskstats    keys        net           timer_list
1158  1551  1626  1812  2169  22    2368  28    3919  81         dma          kmsg        pagetypeinfo  timer_stats
1167  1552  1651  19    2178  2202  2376  29    3922  9          driver       kpagecount  partitions    tty
1172  1553  1664  2     2179  2203  24    3     4     997        execdomains  kpageflags  sched_debug   uptime
1177  1556  1666  20    2180  2204  2409  30    4006  998        fb           loadavg     schedstat     version
1182  1557  1677  202   2181  2217  2416  308   413   acpi       filesystems  locks       scsi          vmallocinfo
12    1558  1678  203   2182  2220  2448  309   43    asound     fs           mdstat      self          vmstat
1203  1559  17    204   2183  2256  2449  31    45    buddyinfo  interrupts   meminfo     slabinfo      zoneinfo
13    1560  170   2065  2184  23    2459  32    46    bus        iomem        misc        softirqs
14    1561  171   207   2185  2326  2484  327   47    cgroups    ioports      modules     stat

[root@nglinux ~]# ls /sys/
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
[root@nglinux ~]# 

/proc : The first old age implementation to keep the running system information is /proc. Because of which it is not managed well as we can see in above output and looks a bit messy.

/sys : It is implemented late with 2.6 kernel which is aimed to keep the running system information in a managed structured way to easily search the available information.

3. Explanation of /proc and /sys
/proc
Process Information
Key system attributes of various system utilities
Settings of various kernel parameters

[root@nglinux ~]# ps
  PID TTY          TIME CMD
 3922 pts/0    00:00:00 bash
 4095 pts/0    00:00:00 ps
[root@nglinux ~]# ls  /proc/3922/
attr       clear_refs       cpuset   fd      loginuid   mounts      oom_adj        personality  sessionid  statm    wchan
autogroup  cmdline          cwd      fdinfo  maps       mountstats  oom_score      root         smaps      status
auxv       comm             environ  io      mem        net         oom_score_adj  sched        stack      syscall
cgroup     coredump_filter  exe      limits  mountinfo  ns          pagemap        schedstat    stat       task
[root@nglinux ~]# 

/sys
Adding structure to /proc messy filesystem.
Providing uniform way to provide system information except processes which is kept in /proc.
Separate sub directory inside /sys filesystem for each element.

Leave a Reply

Your email address will not be published.