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