zoukankan      html  css  js  c++  java
  • golang+read_file+call_shell+goroutine

    package main
    
    import (
            "bufio"
            "bytes"
            "fmt"
            "os"
            "os/exec"
            "sync"
    )
    
    //call shell
    func call_shell(script_name string, script_args string) (string, string, error) {
            var script_stdout bytes.Buffer
            var script_stderr bytes.Buffer
            cmd := exec.Command("/bin/bash", script_name, script_args)
            cmd.Stdout = &script_stdout
            cmd.Stderr = &script_stderr
            err := cmd.Run()
            return script_stdout.String(), script_stderr.String(), err
    }
    
    func main() {
    
            var wg sync.WaitGroup
    
            //Open file
            file_path, _ := os.Getwd()
            file, err := os.Open(file_path + "/db_list")
            if err != nil {
                    fmt.Print("Open file error")
            }
            defer file.Close()
            //Read file line by line
            scanner := bufio.NewScanner(file)
            for scanner.Scan() {
                    wg.Add(1)
                    go func(db_name string) {
                            defer wg.Done()
                            shell_path := "/opt/go_workspace/script/auto_dump.sh"
                            script_stdout, script_stderr, _ := call_shell(shell_path, db_name)
                            fmt.Printf("Dump db log for %s
    %s
    %s
    ", db_name, script_stdout, script_stderr)
                    }(scanner.Text())
    
            }
    
            wg.Wait()
    }
    

      

  • 相关阅读:
    2.4 自给自足的脚本:位于第一行的#!
    2.3 一个简单的脚本
    2.2 为什么要使用Shell脚本
    JSON 字符串 与 java 对象的转换
    ajax异步提交文件
    jquery选择器
    发现前端框架 bui-min.js
    学习hsf
    Git详解
    java学习材料
  • 原文地址:https://www.cnblogs.com/divl/p/14949901.html
Copyright © 2011-2022 走看看