From 5806fb73c3fa2fcc9ede878a59efd622d562dd4c Mon Sep 17 00:00:00 2001 From: Dmitry Medvedev Date: Sun, 28 Jun 2015 12:39:24 +0300 Subject: [PATCH] Order process identifiers by process creation timestamp. --- cmd/scollector/collectors/processes_linux.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmd/scollector/collectors/processes_linux.go b/cmd/scollector/collectors/processes_linux.go index 40154192a1..0c9b5d3bb4 100644 --- a/cmd/scollector/collectors/processes_linux.go +++ b/cmd/scollector/collectors/processes_linux.go @@ -136,11 +136,20 @@ const ( descLinuxProcStartTS = "The timestamp of process start." ) +type byModTime []os.FileInfo + +func (bmt byModTime) Len() int { return len(bmt) } +func (bmt byModTime) Swap(i, j int) { bmt[i], bmt[j] = bmt[j], bmt[i] } +func (bmt byModTime) Less(i, j int) bool { + return bmt[i].ModTime().Unix() < bmt[j].ModTime().Unix() +} + func getLinuxProccesses() ([]*Process, error) { files, err := ioutil.ReadDir("/proc") if err != nil { return nil, err } + sort.Sort(byModTime(files)) var pids []string for _, f := range files { if _, err := strconv.Atoi(f.Name()); err == nil && f.IsDir() {