mirror of
https://github.com/gotoeasy/glogcenter.git
synced 2025-09-15 12:58:34 +08:00
52 lines
920 B
Go
52 lines
920 B
Go
package onstart
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
type PidFile struct {
|
|
Path string // pid文件路径
|
|
Pid string // pid
|
|
IsNew bool // 是否新
|
|
Err error // error
|
|
}
|
|
|
|
func checkPidFile(path string) *PidFile {
|
|
pid := readPid(path)
|
|
if pid == "" {
|
|
return nil
|
|
}
|
|
if _, err := os.Stat(filepath.Join("/proc", pid)); err == nil {
|
|
return &PidFile{
|
|
Path: path,
|
|
Pid: pid,
|
|
IsNew: false,
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func readPid(path string) string {
|
|
if pidByte, err := os.ReadFile(path); err == nil {
|
|
return strings.TrimSpace(string(pidByte))
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func savePid(path string, pid string) error {
|
|
if err := os.MkdirAll(filepath.Dir(path), os.FileMode(0755)); err != nil {
|
|
log.Println("create pid file failed", path)
|
|
return err
|
|
}
|
|
|
|
if err := os.WriteFile(path, []byte(pid), 0644); err != nil {
|
|
log.Println("save pid file failed", path)
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|