mirror of
https://github.com/bcicen/ctop.git
synced 2025-12-06 15:16:41 +08:00
Compare commits
9 Commits
9bc26c8296
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59f00dd6aa | ||
|
|
06265407b2 | ||
|
|
a08150ea9c | ||
|
|
6bf41ea05f | ||
|
|
3dff9970ad | ||
|
|
458ef62f80 | ||
|
|
a821deb3b4 | ||
|
|
dacd3be920 | ||
|
|
222a7d77b2 |
29
README.md
29
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
#
|
||||
|
||||
![release][release] ![homebrew][homebrew] ![macports][macports]
|
||||
![release][release] ![homebrew][homebrew] ![macports][macports] ![scoop][scoop]
|
||||
|
||||
Top-like interface for container metrics
|
||||
|
||||
@@ -21,15 +21,23 @@ Fetch the [latest release](https://github.com/bcicen/ctop/releases) for your pla
|
||||
|
||||
Maintained by a [third party](https://packages.azlux.fr/)
|
||||
```bash
|
||||
echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list
|
||||
wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -
|
||||
sudo apt update
|
||||
sudo apt install docker-ctop
|
||||
sudo apt-get install ca-certificates curl gnupg lsb-release
|
||||
curl -fsSL https://azlux.fr/repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/azlux-archive-keyring.gpg
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian \
|
||||
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/azlux.list >/dev/null
|
||||
sudo apt-get update
|
||||
sudo apt-get install docker-ctop
|
||||
```
|
||||
|
||||
#### Arch
|
||||
|
||||
`ctop` is available for Arch in the [AUR](https://aur.archlinux.org/packages/ctop-bin/)
|
||||
```bash
|
||||
sudo pacman -S ctop
|
||||
```
|
||||
|
||||
_`ctop` is also available for Arch in the [AUR](https://aur.archlinux.org/packages/ctop-bin/)_
|
||||
|
||||
|
||||
#### Linux (Generic)
|
||||
|
||||
@@ -53,6 +61,14 @@ sudo curl -Lo /usr/local/bin/ctop https://github.com/bcicen/ctop/releases/downlo
|
||||
sudo chmod +x /usr/local/bin/ctop
|
||||
```
|
||||
|
||||
#### Windows
|
||||
|
||||
`ctop` is available in [scoop](https://scoop.sh/):
|
||||
|
||||
```powershell
|
||||
scoop install ctop
|
||||
```
|
||||
|
||||
#### Docker
|
||||
|
||||
```bash
|
||||
@@ -112,6 +128,7 @@ Option | Description
|
||||
[release]: https://img.shields.io/github/release/bcicen/ctop.svg "ctop"
|
||||
[homebrew]: https://img.shields.io/homebrew/v/ctop.svg "ctop"
|
||||
[macports]: https://repology.org/badge/version-for-repo/macports/ctop.svg?header=macports "ctop"
|
||||
[scoop]: https://img.shields.io/scoop/v/ctop?bucket=main "ctop"
|
||||
|
||||
## Alternatives
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/op/go-logging"
|
||||
"github.com/hako/durafmt"
|
||||
|
||||
"github.com/bcicen/ctop/connector/collector"
|
||||
"github.com/bcicen/ctop/connector/manager"
|
||||
@@ -187,7 +188,7 @@ func (cm *Docker) refresh(c *container.Container) {
|
||||
if webPort != "" {
|
||||
c.SetMeta("Web Port", webPort)
|
||||
}
|
||||
c.SetMeta("created", insp.Created.Format("Mon Jan 2 15:04:05 2006"))
|
||||
c.SetMeta("created", insp.Created.Format("Mon Jan 02 15:04:05 2006"))
|
||||
c.SetMeta("uptime", calcUptime(insp))
|
||||
c.SetMeta("health", insp.State.Health.Status)
|
||||
c.SetMeta("[ENV-VAR]", strings.Join(insp.Config.Env, ";"))
|
||||
@@ -209,11 +210,11 @@ func (cm *Docker) inspect(id string) (insp *api.Container, found bool, failed bo
|
||||
|
||||
func calcUptime(insp *api.Container) string {
|
||||
endTime := insp.State.FinishedAt
|
||||
if endTime.IsZero() {
|
||||
if endTime.IsZero() || insp.State.Running {
|
||||
endTime = time.Now()
|
||||
}
|
||||
uptime := endTime.Sub(insp.State.StartedAt)
|
||||
return uptime.Truncate(time.Second).String()
|
||||
return durafmt.Parse(uptime).LimitFirstN(1).String()
|
||||
}
|
||||
|
||||
// Mark all container IDs for refresh
|
||||
|
||||
@@ -54,7 +54,7 @@ func (s *Status) setState(val string) {
|
||||
case "created":
|
||||
mark = "◉"
|
||||
case "running":
|
||||
mark = "⏵"
|
||||
mark = "▶"
|
||||
color = ui.ThemeAttr("status.ok")
|
||||
case "exited":
|
||||
mark = "⏹"
|
||||
|
||||
1
go.mod
1
go.mod
@@ -5,6 +5,7 @@ require (
|
||||
github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd
|
||||
github.com/fsouza/go-dockerclient v1.7.0
|
||||
github.com/gizak/termui v2.3.1-0.20180817033724-8d4faad06196+incompatible
|
||||
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b // indirect
|
||||
github.com/jgautheron/codename-generator v0.0.0-20150829203204-16d037c7cc3c
|
||||
github.com/mattn/go-runewidth v0.0.2
|
||||
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d
|
||||
|
||||
2
go.sum
2
go.sum
@@ -78,6 +78,8 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b h1:wDUNC2eKiL35DbLvsDhiblTUXHxcOPwQSCzi7xpQUN4=
|
||||
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0=
|
||||
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
|
||||
Reference in New Issue
Block a user