diff --git a/util/sys/sys_linux.go b/util/sys/sys_linux.go index 097ff7c7..d4e6e8ae 100644 --- a/util/sys/sys_linux.go +++ b/util/sys/sys_linux.go @@ -44,11 +44,11 @@ func getLinesNum(filename string) (int, error) { func GetTCPCount() (int, error) { root := HostProc() - tcp4, err := getLinesNum(fmt.Sprintf("%v/net/tcp", root)) + tcp4, err := safeGetLinesNum(fmt.Sprintf("%v/net/tcp", root)) if err != nil { return 0, err } - tcp6, err := getLinesNum(fmt.Sprintf("%v/net/tcp6", root)) + tcp6, err := safeGetLinesNum(fmt.Sprintf("%v/net/tcp6", root)) if err != nil { return 0, err } @@ -59,14 +59,23 @@ func GetTCPCount() (int, error) { func GetUDPCount() (int, error) { root := HostProc() - udp4, err := getLinesNum(fmt.Sprintf("%v/net/udp", root)) + udp4, err := safeGetLinesNum(fmt.Sprintf("%v/net/udp", root)) if err != nil { return 0, err } - udp6, err := getLinesNum(fmt.Sprintf("%v/net/udp6", root)) + udp6, err := safeGetLinesNum(fmt.Sprintf("%v/net/udp6", root)) if err != nil { return 0, err } return udp4 + udp6, nil } + +func safeGetLinesNum(path string) (int, error) { + if _, err := os.Stat(path); os.IsNotExist(err) { + return 0, nil + } else if err != nil { + return 0, err + } + return getLinesNum(path) +}