github.com/dustinrc/deis@v1.10.1-0.20150917223407-0894a5fb979e/mesos/pkg/boot/zookeeper/zookeeper_server.go (about) 1 package zookeeper 2 3 import ( 4 "io" 5 "os/exec" 6 "time" 7 ) 8 9 // ZkServer struct to execute zookeeper commands. 10 type ZkServer struct { 11 Stdout, Stderr io.Writer 12 13 cmd *exec.Cmd 14 } 15 16 // Start starts a zookeeper server 17 func (srv *ZkServer) Start() error { 18 srv.cmd = exec.Command("/opt/zookeeper/bin/zkServer.sh", "start-foreground") 19 srv.cmd.Stdout = srv.Stdout 20 srv.cmd.Stderr = srv.Stderr 21 return srv.cmd.Start() 22 } 23 24 // Pid returns the process id of the running zookeeper server 25 func (srv *ZkServer) Pid() int { 26 return srv.cmd.Process.Pid 27 } 28 29 // Stop stops a running zookeeper server 30 func (srv *ZkServer) Stop() { 31 go func() { 32 time.Sleep(1 * time.Second) 33 srv.cmd.Process.Kill() 34 }() 35 srv.cmd.Process.Wait() 36 }