部分代码优化,支持-quit参数
This commit is contained in:
parent
5deddfef30
commit
0b37200b15
|
|
@ -40,6 +40,15 @@ func isDebug() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isQuit() bool {
|
||||||
|
for _, arg := range os.Args[1:] {
|
||||||
|
if arg == constants.QuitFlag {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
||||||
// 初始化配置
|
// 初始化配置
|
||||||
|
|
@ -137,6 +146,10 @@ func main() {
|
||||||
logger.Error("Error stopping daemon.")
|
logger.Error("Error stopping daemon.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if isQuit() {
|
||||||
|
logger.Debug("Force quit...")
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err := run(); err != nil {
|
if err := run(); err != nil {
|
||||||
logger.Error("Application failed: %v", err)
|
logger.Error("Application failed: %v", err)
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,13 @@ type ConfigManagerTask struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConfigManagerTask() *ConfigManagerTask {
|
func NewConfigManagerTask() *ConfigManagerTask {
|
||||||
d := viper.GetInt64("bash_config.watch_interval")
|
d := viper.GetDuration("bash_config.watch_interval")
|
||||||
|
if d < 1*time.Hour {
|
||||||
|
d = 1 * time.Hour // 默认值为1小时
|
||||||
|
}
|
||||||
|
logger.Info("ConfigManagerTask watch interval: %v", d)
|
||||||
return &ConfigManagerTask{
|
return &ConfigManagerTask{
|
||||||
manager: manager.NewConfigManager(constants.ConfigFile, time.Duration(d)*time.Second),
|
manager: manager.NewConfigManager(constants.ConfigFile, d),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,8 @@ func (wp *WorkerPool) Start() {
|
||||||
|
|
||||||
// Stop 停止所有任务
|
// Stop 停止所有任务
|
||||||
func (wp *WorkerPool) Stop() {
|
func (wp *WorkerPool) Stop() {
|
||||||
|
logger.Info("Stopping all tasks")
|
||||||
|
// 取消上下文以通知所有任务停止
|
||||||
wp.cancel()
|
wp.cancel()
|
||||||
wp.wg.Wait()
|
wp.wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
@ -68,6 +70,7 @@ func NewService() *Service {
|
||||||
NewConfigManagerTask(), // 添加配置管理器任务
|
NewConfigManagerTask(), // 添加配置管理器任务
|
||||||
// NewWelcomeTask(),
|
// NewWelcomeTask(),
|
||||||
NewUnixSocketTask(),
|
NewUnixSocketTask(),
|
||||||
|
NewVersionCheckTask(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Service{
|
return &Service{
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
@ -32,6 +33,16 @@ func NewUnixSocketTask() *UnixSocketTask {
|
||||||
func (t *UnixSocketTask) Execute(ctx context.Context) {
|
func (t *UnixSocketTask) Execute(ctx context.Context) {
|
||||||
socketPath := constants.SocketPath
|
socketPath := constants.SocketPath
|
||||||
|
|
||||||
|
// 确保socket文件所在目录存在
|
||||||
|
socketDir := filepath.Dir(socketPath)
|
||||||
|
if _, err := os.Stat(socketDir); os.IsNotExist(err) {
|
||||||
|
// 目录不存在,创建目录
|
||||||
|
if err := os.MkdirAll(socketDir, 0755); err != nil {
|
||||||
|
logger.Error("创建socket目录失败: %v\n", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 删除已存在的socket文件
|
// 删除已存在的socket文件
|
||||||
os.Remove(socketPath)
|
os.Remove(socketPath)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ const (
|
||||||
DaemonFlag = "-daemon" // 后台进程标志
|
DaemonFlag = "-daemon" // 后台进程标志
|
||||||
ForceFlag = "-force" // 强制结束之前的后台进程
|
ForceFlag = "-force" // 强制结束之前的后台进程
|
||||||
DebugFlag = "-debug" // 强制结束之前的后台进程
|
DebugFlag = "-debug" // 强制结束之前的后台进程
|
||||||
|
QuitFlag = "-quit" // 强制结束并退出
|
||||||
ConfigFileMode = 0644 // 文件权限
|
ConfigFileMode = 0644 // 文件权限
|
||||||
ConfigPath = "./config" // 配置文件路径
|
ConfigPath = "./config" // 配置文件路径
|
||||||
LogFileMode = 0755 // 日志文件权限
|
LogFileMode = 0755 // 日志文件权限
|
||||||
|
|
|
||||||
|
|
@ -84,9 +84,6 @@ func getLogLevelFromConfig() LogLevel {
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// 设置当前日志级别
|
|
||||||
currentLevel = getLogLevelFromConfig()
|
|
||||||
|
|
||||||
infoLogger = log.New(&LogWriter{prefix: "INFO", color: constants.ColorGreen, level: INFO}, "", 0)
|
infoLogger = log.New(&LogWriter{prefix: "INFO", color: constants.ColorGreen, level: INFO}, "", 0)
|
||||||
debugLogger = log.New(&LogWriter{prefix: "DEBUG", color: constants.ColorBlue, level: DEBUG}, "", 0)
|
debugLogger = log.New(&LogWriter{prefix: "DEBUG", color: constants.ColorBlue, level: DEBUG}, "", 0)
|
||||||
errorLogger = log.New(&LogWriter{prefix: "ERROR", color: constants.ColorRed, level: ERROR}, "", 0)
|
errorLogger = log.New(&LogWriter{prefix: "ERROR", color: constants.ColorRed, level: ERROR}, "", 0)
|
||||||
|
|
@ -96,6 +93,7 @@ func init() {
|
||||||
// UpdateLogLevel 更新日志级别
|
// UpdateLogLevel 更新日志级别
|
||||||
func UpdateLogLevel() {
|
func UpdateLogLevel() {
|
||||||
currentLevel = getLogLevelFromConfig()
|
currentLevel = getLogLevelFromConfig()
|
||||||
|
Debug("Log level set to: %d", currentLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 辅助函数封装
|
// 辅助函数封装
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue