...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package graph
17
18 import (
19 "context"
20 "fmt"
21 "strings"
22
23 "github.com/chaos-mesh/chaos-mesh/pkg/ctrlserver/graph/model"
24 )
25
26
27 func (r *Resolver) GetFdsOfProcess(ctx context.Context, process *model.Process) ([]*model.Fd, error) {
28 cmd := fmt.Sprintf("ls -l /proc/%s/fd", process.Pid)
29 out, err := r.ExecBypass(ctx, process.Pod, cmd)
30 if err != nil {
31 return nil, err
32 }
33 var fds []*model.Fd
34 for _, line := range strings.Split(out, "\n") {
35 fields := strings.Fields(line)
36 length := len(fields)
37 if length < 3 {
38
39 continue
40 }
41 fd := &model.Fd{
42 Fd: fields[length-3],
43 Target: fields[length-1],
44 }
45 fds = append(fds, fd)
46 }
47
48 return fds, nil
49 }
50