process_manager

package module
v0.0.0-...-4d06fce Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2022 License: MIT Imports: 12 Imported by: 0

README

感谢@zh-five,在这里借鉴了他的项目代码

package main

import (
	"flag"
	ProcessManager "github.com/Apollo-Pro/processManager"
	"log"
	"time"
)

func main() {
	d := flag.Bool("d", false, "是否后台守护进程方式运行")
	action := flag.String("a", "", "操作 start|stop|restart")
	flag.Parse()
	//后台运行
	processManager := ProcessManager.New(*d, "test", "./")
	processManager.Daemon = true //守护进程
	processManager.MaxCount = 2

	switch *action {
	case "start":
		//启动进程
		processManager.Start(func(pid int) {
			server(pid)
		})
		break
	case "restart":
		//重启进程
		processManager.Restart(func() {
		}, func(pid int) {
			log.Printf("重启成功:%d", pid)
			server(pid)
		})
		break
	case "stop":
		//关闭进程
		processManager.Stop(func() {
			log.Printf("关闭成功")
		})
		break
	case "status":
		//关闭进程
		running, pid :=processManager.MainProcessIsRunning()
		log.Printf("进程状态:%t,pid:%d", running,pid)
		break
	}
	//操作结束
	processManager.Check(func(pid int) {
		log.Printf("启动成功:%d", pid)
	})
}

func server(pid int) {
	log.Println(pid, "start...")
	time.Sleep(time.Second * 10)
	log.Println(pid, "end")
}

Documentation

Index

Constants

View Source
const (
	PTYPE_START  = "start_process"  //启动进程
	PTYPE_DAEMON = "daemon_process" //守护进程
	PTYPE_MAIN   = "main_process"   //主进程
)

Variables

This section is empty.

Functions

func IsRunning

func IsRunning(pid int) (bool, int)

判断主进程是否运行中

func Kill

func Kill(pid int) error

func NewSysProcAttr

func NewSysProcAttr() *syscall.SysProcAttr

func PidExist

func PidExist(pid int) bool

func SetProcessName

func SetProcessName(name string) error

Types

type Manager

type Manager struct {
	Daemon        bool   //是否守护进程
	Background    bool   //是否后台运行
	MaxCount      int    //循环重启最大次数, 若为0则无限重启
	MainPidFile   string //主进程PID文件
	DaemonPidFile string //守护进程PID文件

	ServerName string //进程名称
	// contains filtered or unexported fields
}

func New

func New(background bool, serverName string, runtimePath string) *Manager

func (*Manager) Check

func (c *Manager) Check(callback func(pid int))

启动进程执行完毕,检查主进程是否正常运行

func (*Manager) DaemonProcessIsRunning

func (c *Manager) DaemonProcessIsRunning() (bool, int)

判断守护进程是否运行中

func (*Manager) KillProcess

func (c *Manager) KillProcess(pidFile string) (bool, error)

func (*Manager) Logger

func (c *Manager) Logger(logPath string) *log.Logger

初始化日志

func (*Manager) MainProcessIsRunning

func (c *Manager) MainProcessIsRunning() (bool, int)

判断主进程是否运行中

func (*Manager) Restart

func (c *Manager) Restart(stopCallback func(), startCallback func(pid int))

重启进程

func (*Manager) Start

func (c *Manager) Start(callback func(pid int))

启动进程

func (*Manager) Stop

func (c *Manager) Stop(callback func()) error

关闭进程

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL