部分代码优化,支持-quit参数

This commit is contained in:
Pan Qiancheng 2025-04-23 11:04:50 +08:00
parent 5deddfef30
commit 0b37200b15
6 changed files with 35 additions and 5 deletions

View File

@ -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)

View File

@ -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),
} }
} }

View File

@ -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{

View File

@ -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)

View File

@ -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 // 日志文件权限

View File

@ -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)
} }
// 辅助函数封装 // 辅助函数封装