| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package main
- import (
- "fmt"
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "sync"
- "time"
- "github.com/sirupsen/logrus"
- )
- const (
- diffTime = 3600 * 24 * 3
- MaxErrorMinutes = 20
- )
- type MonitorStatus struct {
- MQTTMessageHandle time.Time
- MQTTConnectMgr time.Time
- }
- var mypath = [...]string{"/usr/app/ipole/log/", "/usr/app/camera/log/", "/usr/app/its/log/"}
- var _once1 sync.Once
- var _single1 *MonitorStatus
- func GetMonitorStatus() *MonitorStatus {
- _once1.Do(func() {
- _single1 = &MonitorStatus{
- MQTTMessageHandle: time.Now(),
- MQTTConnectMgr: time.Now(),
- }
- })
- return _single1
- }
- func (o *MonitorStatus) GetMonitorRunStatus() bool {
- t1 := time.Since(o.MQTTConnectMgr).Minutes()
- t2 := time.Since(o.MQTTMessageHandle).Minutes()
- return int(t1) < MaxErrorMinutes && int(t2) < MaxErrorMinutes
- }
- 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
- }
- // CheckProRunning 根据进程名判断进程是否运行
- func CheckProRunning(serverName string) (bool, error) {
- a := "ps |grep " + serverName
- str, err := runInLinux(a)
- if err != nil {
- return false, err
- }
- logrus.Info("ps len", len(str), str)
- return len(str) > 30, nil
- }
- func CheckAndDeleteLogfile() {
- for _, v := range mypath {
- getFilelist(v)
- }
- }
- func getFilelist(path string) {
- nowTime := time.Now().Unix()
- err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
- if f == nil {
- return err
- }
- fileTime := f.ModTime().Unix()
- if (nowTime-fileTime) > diffTime && !strings.ContainsAny(strings.TrimSuffix(f.Name(), ".log"), "abcdefghijkmlnopqrstuvwxyz") { //判断文件是否超过3天
- fmt.Printf("Delete file %v !\r\n", path)
- os.RemoveAll(path + "/" + f.Name())
- }
- return nil
- })
- if err != nil {
- logrus.Infof("filepath.Walk() returned %v\r\n", err)
- }
- }
|