Browse Source

上传文件至 ''

dev-locking-disk
yuanrh 4 years ago
parent
commit
280098f32c
2 changed files with 156 additions and 0 deletions
  1. +3
    -0
      go.mod
  2. +153
    -0
      main.go

+ 3
- 0
go.mod View File

@@ -0,0 +1,3 @@
module launch

go 1.15

+ 153
- 0
main.go View File

@@ -0,0 +1,153 @@
package main

import (
"fmt"
"log"
"net/http"
"os"
"os/exec"
"time"
)

func main() {

lockdir:=os.Getenv("TSZDIR")
exitChannel := make(chan int, 10)

//线程启动ipfs
fmt.Println("start ipfs")

datapath := lockdir+"go-ipfs_v0.7.0_windows-amd64\\go-ipfs\\ipfs.exe"
ipfsCd := exec.Command(datapath,"daemon")
go func() {
err := ipfsCd.Run()
if err != nil {
fmt.Print("ipfs")
fmt.Println(err)
exitChannel <- 1
}
}()

//线程启动fts
fmt.Println("start fts")
datapath = lockdir+"bin\\fts.exe"
ftsCd := exec.Command(datapath)
go func() {
err := ftsCd.Run()
if err != nil {
fmt.Print("fts")
fmt.Println(err)
exitChannel <- 1
}
}()

//线程启动etcd
fmt.Println("start etcd")
datadir :=os.Getenv("APPDATA")+"\\"+"LOCKING"
datapath = lockdir+"etcd-v3.3.25-windows-amd64\\etcd.exe"
etcdCd := exec.Command(datapath,"--data-dir",datadir)
go func() {
err := etcdCd.Run()
if err != nil {
fmt.Print("etcd")
fmt.Println(err)
exitChannel <- 1
}
}()

//检测fts进程是否启动成功,最大超时5s
timeOutMax := 50
timeOutIndex := 0
for true {
resp, err := http.Get("http://127.0.0.1:7777")

if err != nil {
if timeOutIndex>timeOutMax{
fmt.Printf("http.Get()函数执行错误,错误为:%v\n", err)
exitChannel <- 1
}
time.Sleep(100*time.Millisecond)
timeOutIndex++
continue
}
defer resp.Body.Close()
break
}


//检测etcd进程是否启动成功,最大超时5s
timeOutMax = 50
timeOutIndex = 0
for true {
resp, err := http.Get("http://127.0.0.1:2379")

if err != nil {
if timeOutIndex>timeOutMax{
fmt.Printf("http.Get()函数执行错误,错误为:%v\n", err)
exitChannel <- 1
}
time.Sleep(100*time.Millisecond)
timeOutIndex++
continue
}
defer resp.Body.Close()
break
}

//检测ipfs进程是否启动成功,最大超时10s
timeOutMax = 50
timeOutIndex = 0
for true {
resp, err := http.Get("http://127.0.0.1:5001")

if err != nil {
if timeOutIndex>timeOutMax{
fmt.Printf("http.Get()函数执行错误,错误为:%v\n", err)
exitChannel <- 1
}
time.Sleep(200*time.Millisecond)
timeOutIndex++
continue
}
defer resp.Body.Close()
break
}

//启动客户端
datapath = lockdir+"locking-client-win32-x64\\locking-client.exe"
lockingCd := exec.Command(datapath)
err := lockingCd.Start()
fmt.Println("start locking")
log.Println(lockingCd.Process.Pid)
if err != nil {
fmt.Println(err)
exitChannel <- 1
}

/*go func() {
for true{
log.Println(cd.Process.Pid)//client 存活情况
}
}()*/

//收取退出命令
for i := range exitChannel {
if i==1{
if ftsCd.Process !=nil{
ftsCd.Process.Kill()
}
if ipfsCd.Process !=nil{
ipfsCd.Process.Kill()
}
if etcdCd.Process !=nil{
etcdCd.Process.Kill()
}
if lockingCd.Process !=nil{
lockingCd.Process.Kill()
}
os.Exit(1)
}
}
os.Exit(1)

}

Loading…
Cancel
Save