Package oshi.util

Class ProcUtil

java.lang.Object
oshi.util.ProcUtil

@ThreadSafe public final class ProcUtil extends Object
  • Method Details

    • parseNestedStatistics

      public static Map<String,Map<String,Long>> parseNestedStatistics(String procFile, String... keys)
      Parses /proc files with a given structure consisting of a keyed header line followed by a keyed value line. /proc/net/netstat and /proc/net/snmp are specific examples of this. The returned map is of the form {key: {stat: value, stat: value, ...}}. An example of the file structure is:
           TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed ...
           TcpExt: 0 4 0 ...
           IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts ...
           IpExt: 55 0 27786 1435 ...
           MPTcpExt: MPCapableSYNRX MPCapableSYNTX MPCapableSYNACKRX ...
           MPTcpExt: 0 0 0 ...
       
      Which would produce a mapping structure like:
           {
               "TcpExt": {"SyncookiesSent":0, "SyncookiesRecv":4, "SyncookiesFailed":0, ... }
               "IpExt": {"InNoRoutes":55, "InTruncatedPkts":27786, "InMcastPkts":1435, ... }
               "MPTcpExt": {"MPCapableSYNACKRX":0, "MPCapableSYNTX":0, "MPCapableSYNACKRX":0, ... }
           }
       
      Parameters:
      procFile - the file to process
      keys - an optional array of keys to return in the outer map. If none are given, all found keys are returned.
      Returns:
      a map of keys to stats
    • parseStatistics

      public static Map<String,Long> parseStatistics(String procFile, Pattern separator)
      Parses /proc files formatted as "statistic (long)value" to produce a simple mapping. An example would be /proc/net/snmp6. The file format would look like:
          Ip6InReceives             8026
          Ip6InHdrErrors            0
          Icmp6InMsgs               2
          Icmp6InErrors             0
          Icmp6OutMsgs              424
          Udp6IgnoredMulti          5
          Udp6MemErrors             1
          UdpLite6InDatagrams       37
          UdpLite6NoPorts           1
       
      Which would produce a mapping structure like:
           {
               "Ip6InReceives":8026,
               "Ip6InHdrErrors":0,
               "Icmp6InMsgs":2,
               "Icmp6InErrors":0,
               ...
           }
       
      Parameters:
      procFile - the file to process
      separator - a regex specifying the separator between statistic and value
      Returns:
      a map of statistics and associated values
    • parseStatistics

      public static Map<String,Long> parseStatistics(String procFile)
      Overloaded parseStatistics(String, Pattern) using a whitespace separator.
      Parameters:
      procFile - the file to process
      Returns:
      a map of statistics and associated values
      See Also: