Skip to content

Commit

Permalink
Exit cli when all containers when no more containers to monitor
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Crosby <[email protected]>
  • Loading branch information
crosbymichael committed Jan 21, 2015
1 parent 217a2bd commit 4b17319
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
18 changes: 14 additions & 4 deletions api/client/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -2672,18 +2672,19 @@ func (s *containerStats) Collect(stream io.ReadCloser) {
}
}

func (s *containerStats) Display(w io.Writer) {
func (s *containerStats) Display(w io.Writer) error {
s.mu.RLock()
defer s.mu.RUnlock()
if s.err != nil {
return
return s.err
}
fmt.Fprintf(w, "%s\t%.2f%%\t%s/%s\t%.2f%%\t%s/%s\n",
s.Name,
s.CpuPercentage,
units.BytesSize(s.Memory), units.BytesSize(s.MemoryLimit),
s.MemoryPercentage,
units.BytesSize(s.NetworkRx), units.BytesSize(s.NetworkTx))
return nil
}

func (cli *DockerCli) CmdStats(args ...string) error {
Expand All @@ -2708,8 +2709,17 @@ func (cli *DockerCli) CmdStats(args ...string) error {
fmt.Fprint(cli.out, "\033[2J")
fmt.Fprint(cli.out, "\033[H")
fmt.Fprintln(w, "CONTAINER\tCPU %\tMEM USAGE/LIMIT\tMEM %\tNET I/O")
for _, s := range cStats {
s.Display(w)
toRemove := []int{}
for i, s := range cStats {
if err := s.Display(w); err != nil {
toRemove = append(toRemove, i)
}
}
for _, i := range toRemove {
cStats = append(cStats[:i], cStats[i+1:]...)
}
if len(cStats) == 0 {
return nil
}
w.Flush()
}
Expand Down
2 changes: 1 addition & 1 deletion daemon/stats_collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (s *statsCollector) run() {

const nanoSeconds = 1e9

// getSystemdCpuUSage returns the host system's cpu usage in nanoseconds
// getSystemCpuUSage returns the host system's cpu usage in nanoseconds
// for the system to match the cgroup readings are returned in the same format.
func (s *statsCollector) getSystemCpuUsage() (uint64, error) {
f, err := os.Open("/proc/stat")
Expand Down
6 changes: 1 addition & 5 deletions docs/man/docker-stats.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
docker-stats - Display live container stats based on resource usage.

# SYNOPSIS
**docker top**
**docker stats**
[**--help**]
[CONTAINERS]

Expand All @@ -26,7 +26,3 @@ Run **docker stats** with multiple containers.
redis1 0.07% 796 KiB/64 MiB 1.21% 788 B/648 B
redis2 0.07% 2.746 MiB/64 MiB 4.29% 1.266 KiB/648 B

# HISTORY
April 2014, Originally compiled by William Henry (whenry at redhat dot com)
based on docker.com source material and internal work.
June 2014, updated by Sven Dowideit <[email protected]>

0 comments on commit 4b17319

Please sign in to comment.