小编sks*_*sks的帖子

从末尾读取日志文件并获取特定字符串的偏移量

.eg 1.日志文件

  • 开始
  • 1号线
  • 2号线
  • 3号线
  • 结尾

当我从头开始读取文件时,我能够获得 Line1 的查找位置。

func getSeekLocation() int64 {
    start := int64(0)
    input, err := os.Open(logFile)
    if err != nil {
        fmt.Println(err)
    }
    if _, err := input.Seek(start, io.SeekStart); err != nil {
        fmt.Println(err)
    }
    scanner := bufio.NewScanner(input)

    pos := start
    scanLines := func(data []byte, atEOF bool) (advance int, token []byte, 
    err error) {
        advance, token, err = bufio.ScanLines(data, atEOF)
        pos += int64(advance)
        return
    }
    scanner.Split(scanLines)
    for scanner.Scan() {
       if strings.Contains(scanner.Text(), "Line1") {
        break …
Run Code Online (Sandbox Code Playgroud)

io file go

4
推荐指数
1
解决办法
1525
查看次数

脚本命令执行永远挂在go程序中

func Run() error {
    log.Info("In Run Command")
    cmd := exec.Command("bash", "/opt/AlterKafkaTopic.sh")
    stdout, err := cmd.StdoutPipe()
    if err != nil {
            return err
    }
    if err = cmd.Start(); err != nil {
           return err
    }
    f, err := os.Create(filepath.Join("/opt/log/", "execution.log"))
    if err != nil {
            return err
    }
    if _, err := io.Copy(f, stdout); err != nil {
            return err
    }
         if err := cmd.Wait(); err != nil {
            return err
    }
     return f.Close()
Run Code Online (Sandbox Code Playgroud)

}

我试图从go代码执行bash脚本.该脚本更改了一些kafka主题属性.但是执行被挂起io.Copy(f, stdout)并且在它之后不会继续.该程序在RHEL7.2服务器上运行.

有人可以建议我哪里出错了

bash go

1
推荐指数
1
解决办法
63
查看次数

标签 统计

go ×2

bash ×1

file ×1

io ×1