summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlinxin <[email protected]>2023-05-26 16:29:09 +0800
committerlinxin <[email protected]>2023-05-26 16:29:09 +0800
commite159360b3ec354b5cf516315e624b3adb0074114 (patch)
tree9f7aa9b58a3dd64fb2afd4d2ff8486a5c1fdad73
parent8a39fe00c5de33bf29886ad9441fc13e8caa905f (diff)
coredump-tool增加展示时对数据排序,精简list命令展示内容。增加info指令
-rw-r--r--coredump-handler/core_handlerbin2116152 -> 0 bytes
-rw-r--r--coredump-tool/coredump-tool.go66
2 files changed, 64 insertions, 2 deletions
diff --git a/coredump-handler/core_handler b/coredump-handler/core_handler
deleted file mode 100644
index ec278d6..0000000
--- a/coredump-handler/core_handler
+++ /dev/null
Binary files differ
diff --git a/coredump-tool/coredump-tool.go b/coredump-tool/coredump-tool.go
index 1d4f3b4..e968f77 100644
--- a/coredump-tool/coredump-tool.go
+++ b/coredump-tool/coredump-tool.go
@@ -9,6 +9,7 @@ import (
"os"
"os/exec"
"path/filepath"
+ "sort"
"strconv"
"strings"
"time"
@@ -59,6 +60,9 @@ func WalkDirectory(dir string) {
if config.Image_name == "" {
config.Image_name = "NULL"
}
+ if _, err := os.Stat(config.Storage); err != nil {
+ config.Storage = "MISS"
+ }
configs = append(configs, config)
}
@@ -72,7 +76,9 @@ func WalkDirectory(dir string) {
return nil
})
-
+ sort.Slice(configs, func(i, j int) bool {
+ return configs[i].Timestamp < configs[j].Timestamp
+ })
if err != nil {
fmt.Printf("Error walking directory %s: %v\n", dir, err)
}
@@ -83,6 +89,37 @@ func list(pid string) {
table.Header = &simpletable.Header{
Cells: []*simpletable.Cell{
{Text: "PID"},
+ {Text: "EXE"},
+ {Text: "IMAGE"},
+ {Text: "TIMESTAMP"},
+ },
+ }
+ total := 0
+ // output the config's info
+ for _, c := range configs {
+ if pid != "" && strings.Compare(c.Initial_ns_pid, pid) != 0 {
+ continue
+ }
+ coreTime := time.Unix(c.Timestamp, 0).Format("2006-01-02 15:04:05")
+ r := []*simpletable.Cell{
+ {Text: c.Initial_ns_pid},
+ {Text: c.Process_exe_path},
+ {Text: c.Image_name},
+ {Text: coreTime},
+ }
+ table.Body.Cells = append(table.Body.Cells, r)
+ total += 1
+ }
+ fmt.Println(table.String())
+ fmt.Println("Total", total, "coredumps")
+}
+
+func info(pid string) {
+ table := simpletable.New()
+
+ table.Header = &simpletable.Header{
+ Cells: []*simpletable.Cell{
+ {Text: "PID"},
{Text: "UID"},
{Text: "GID"},
{Text: "SIG"},
@@ -121,7 +158,6 @@ func list(pid string) {
}
func debug(config types.Coredump_config, command string) error {
- // using kubectl to create a pod
if strings.HasSuffix(config.Storage, ".minidump") {
corefile := strings.Replace(config.Storage, ".minidump", ".coredump", -1)
cmd := exec.Command("minidump-2-core", "-o", corefile, config.Storage)
@@ -362,6 +398,32 @@ func main() {
},
},
{
+ Name: "info",
+ Aliases: []string{"i"},
+ Usage: "Display all coredump files's info",
+ Flags: []cli.Flag{
+ &cli.StringFlag{
+ Name: "pid",
+ Aliases: []string{"p"},
+ Usage: "Pid to match",
+ Value: "",
+ Destination: &pid,
+ },
+ &cli.StringFlag{
+ Name: "dir",
+ Aliases: []string{"d"},
+ Usage: "Coredump directory path(default: /var/lib/coredump)",
+ Value: "/var/lib/coredump",
+ Destination: &dirPath,
+ },
+ },
+ Action: func(c *cli.Context) error {
+ WalkDirectory(dirPath)
+ info(pid)
+ return nil
+ },
+ },
+ {
Name: "debug",
Usage: "Start a debugging session for a coredump",
Flags: []cli.Flag{