|
@@ -1,6 +1,7 @@
|
|
package main
|
|
package main
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "fmt"
|
|
"github.com/cron"
|
|
"github.com/cron"
|
|
"log"
|
|
"log"
|
|
"net/http"
|
|
"net/http"
|
|
@@ -16,8 +17,8 @@ import (
|
|
|
|
|
|
var (
|
|
var (
|
|
sysconfig map[string]interface{} //配置文件
|
|
sysconfig map[string]interface{} //配置文件
|
|
- vpsID string //机器唯一标识
|
|
|
|
- processArr []string //机器相关下载器
|
|
|
|
|
|
+ vpsID,during string //机器唯一标识
|
|
|
|
+ processArr []string //机器相关下载器
|
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
@@ -25,13 +26,14 @@ func init() {
|
|
log.Println("加载...")
|
|
log.Println("加载...")
|
|
qu.ReadConfig(&sysconfig)
|
|
qu.ReadConfig(&sysconfig)
|
|
vpsID = qu.ObjToString(sysconfig["vpsID"])
|
|
vpsID = qu.ObjToString(sysconfig["vpsID"])
|
|
|
|
+ during = qu.ObjToString(sysconfig["duringv"])
|
|
processArr = qu.ObjArrToStringArr(sysconfig["processArr"].([]interface{}))
|
|
processArr = qu.ObjArrToStringArr(sysconfig["processArr"].([]interface{}))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
func main() {
|
|
- //临时测试-
|
|
|
|
- if vpsID=="" || len(processArr)< 1 {
|
|
|
|
|
|
+
|
|
|
|
+ if vpsID == "" || len(processArr) < 1 {
|
|
log.Println("配置文件异常,请检查......")
|
|
log.Println("配置文件异常,请检查......")
|
|
os.Exit(1)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
@@ -39,8 +41,11 @@ func main() {
|
|
|
|
|
|
//定时器
|
|
//定时器
|
|
c := cron.New()
|
|
c := cron.New()
|
|
- //c.AddFunc("0 */5 * * * ?", func() { task() })
|
|
|
|
- c.AddFunc("*/10 * * * * ?", func() { task() })
|
|
|
|
|
|
+ spec :=fmt.Sprintf("0 */%d * * * ?",during) //分
|
|
|
|
+ //spec :=fmt.Sprintf("*/%d * * * * ?",during) //秒
|
|
|
|
+
|
|
|
|
+ c.AddFunc(spec, func() { task() })
|
|
|
|
+ //c.AddFunc("*/10 * * * * ?", func() { task() })
|
|
c.Start()
|
|
c.Start()
|
|
time.Sleep(99999 * time.Hour)
|
|
time.Sleep(99999 * time.Hour)
|
|
}
|
|
}
|
|
@@ -56,7 +61,7 @@ func task() {
|
|
process = "1"
|
|
process = "1"
|
|
break
|
|
break
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ }else { //linux测试使用
|
|
b,_:=checkProRunning(v)
|
|
b,_:=checkProRunning(v)
|
|
if !b {
|
|
if !b {
|
|
process = "1"
|
|
process = "1"
|
|
@@ -65,8 +70,8 @@ func task() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
log.Println("当前下载器:",process)
|
|
log.Println("当前下载器:",process)
|
|
- u, _ := url.Parse("http://127.0.0.1:7811") //本地测试
|
|
|
|
- //u, _ := url.Parse("http://monitor.spdata.jianyu360.com") //线上
|
|
|
|
|
|
+ //u, _ := url.Parse("http://127.0.0.1:7811") //本地测试
|
|
|
|
+ u, _ := url.Parse("http://monitor.spdata.jianyu360.com") //线上
|
|
q := u.Query()
|
|
q := u.Query()
|
|
q.Set("id", vpsID)
|
|
q.Set("id", vpsID)
|
|
q.Set("process", process)
|
|
q.Set("process", process)
|
|
@@ -74,7 +79,7 @@ func task() {
|
|
|
|
|
|
_, err := http.Get(u.String());
|
|
_, err := http.Get(u.String());
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("异常",err)
|
|
|
|
|
|
+ //log.Println("异常",err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -100,6 +105,32 @@ func task() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+//根据进程名判断进程是否运行
|
|
|
|
+func checkProRunning(serverName string) (bool, error) {
|
|
|
|
+ cmd := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
|
|
|
|
+ pid, err := runInLinux(cmd)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return false, err
|
|
|
|
+ }
|
|
|
|
+ return pid != "", nil
|
|
|
|
+}
|
|
|
|
+//根据进程名称获取进程ID
|
|
|
|
+func getPid(serverName string) (string, error) {
|
|
|
|
+ cmd := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
|
|
|
|
+ pid, err := runInLinux(cmd)
|
|
|
|
+ return pid , err
|
|
|
|
+}
|
|
|
|
+//
|
|
|
|
+func runInLinux(cmd string) (string, error) {
|
|
|
|
+ result, err := exec.Command("/bin/sh", "-c", cmd).Output()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return "", err
|
|
|
|
+ }
|
|
|
|
+ return strings.TrimSpace(string(result)), err
|
|
|
|
+}
|
|
|
|
+
|
|
func isProcessExist(appName string) (bool, string, int) {
|
|
func isProcessExist(appName string) (bool, string, int) {
|
|
appary := make(map[string]int)
|
|
appary := make(map[string]int)
|
|
cmd := exec.Command("cmd", "/C", "tasklist")
|
|
cmd := exec.Command("cmd", "/C", "tasklist")
|
|
@@ -107,7 +138,7 @@ func isProcessExist(appName string) (bool, string, int) {
|
|
//fmt.Printf("fields: %v\n", output)
|
|
//fmt.Printf("fields: %v\n", output)
|
|
n := strings.Index(string(output), "System")
|
|
n := strings.Index(string(output), "System")
|
|
if n == -1 {
|
|
if n == -1 {
|
|
- //fmt.Println("no find")
|
|
|
|
|
|
+ //log.Println("no find")
|
|
//os.Exit(1)
|
|
//os.Exit(1)
|
|
}
|
|
}
|
|
data := string(output)[n:]
|
|
data := string(output)[n:]
|
|
@@ -119,35 +150,5 @@ func isProcessExist(appName string) (bool, string, int) {
|
|
return true, appName, appary[appName]
|
|
return true, appName, appary[appName]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
return false, appName, -1
|
|
return false, appName, -1
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-//根据进程名判断进程是否运行
|
|
|
|
-func checkProRunning(serverName string) (bool, error) {
|
|
|
|
- cmd := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
|
|
|
|
- pid, err := runInLinux(cmd)
|
|
|
|
- if err != nil {
|
|
|
|
- return false, err
|
|
|
|
- }
|
|
|
|
- return pid != "", nil
|
|
|
|
-}
|
|
|
|
-//执行linux进程信息
|
|
|
|
-func runInLinux(cmd string) (string, error) {
|
|
|
|
- result, err := exec.Command("/bin/sh", "-c", cmd).Output()
|
|
|
|
- if err != nil {
|
|
|
|
- return "", err
|
|
|
|
- }
|
|
|
|
- return strings.TrimSpace(string(result)), err
|
|
|
|
-}
|
|
|
|
-//根据进程名称获取进程ID
|
|
|
|
-func getPid(serverName string) (string, error) {
|
|
|
|
- cmd := `ps ux | awk '/` + serverName + `/ && !/awk/ {print $2}'`
|
|
|
|
- pid, err := runInLinux(cmd)
|
|
|
|
- return pid , err
|
|
|
|
-}
|
|
|
|
|
|
+}
|