golang 的 exec 模块,有可能标准错误输出会有类似“ERROR: Incorrect date and time argument: 2021-11-16 13:52:10 +0000 UTC” 但是 err 确是 nil
package main
import (
"fmt"
"os/exec"
)
func main(){
binlogCmd := "mysqlbinlog --stop-datetime='2021-11-16 13:52:10 +0000 UTC' /tmp/dbs/mybackup/my3306timepoint/mysql-bin.000084 | mysql -h127.0.0.1 -uroot -p123456 -P3306"
cmd := exec.Command("bash", "-c", binlogCmd)
out, err := cmd.CombinedOutput()
fmt.Printf("apply binlog For [%s], out = %s", cmd.String(), string(out))
fmt.Println("-----111-----")
fmt.Println(err)
fmt.Println("-----222-----")
}
[root@dbs-recover-dest dbs]# go build exec.go
[root@dbs-recover-dest dbs]# ./exec
apply binlog For [/usr/bin/bash -c mysqlbinlog --stop-datetime='2021-11-16 13:52:10 +0000 UTC' /tmp/dbs/mybackup/my3306timepoint/mysql-bin.000084 | mysql -h127.0.0.1 -uroot -pstart01all -P3306],
out = mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR: Incorrect date and time argument: 2021-11-16 13:52:10 +0000 UTC
-----111-----
<nil>
-----222-----
[root@dbs-recover-dest dbs]#
package main
import (
"fmt"
"os/exec"
)
func main(){
binlogCmd = "ls /tmp/haahah"
cmd := exec.Command("bash", "-c", binlogCmd)
out, err := cmd.CombinedOutput()
fmt.Printf("apply binlog For [%s], out = %s", cmd.String(), string(out))
fmt.Println("-----111-----")
fmt.Println(err)
fmt.Println("-----222-----")
}
[root@dbs-recover-dest dbs]# go build exec.go
[root@dbs-recover-dest dbs]# ./exec
apply binlog For [/usr/bin/bash -c ls /tmp/haahah], out = ls: cannot access /tmp/haahah: No such file or directory
-----111-----
exit status 2
-----222-----
[root@dbs-recover-dest dbs]#
[root@dbs-recover-dest dbs]#