Browse Source

新增服务端脚本

master
xyiege 7 months ago
parent
commit
00f7aee301
  1. 1
      aufs/main.go
  2. 3
      scagent/go.mod
  3. 1
      scagent/log/sealog.go
  4. 55
      scagent/main.go
  5. 3
      scagent/readme.md

1
aufs/main.go

@ -116,6 +116,7 @@ func main() {
if ok { if ok {
msg := "OS Signal received: " + sign.String() msg := "OS Signal received: " + sign.String()
log.Println(msg) log.Println(msg)
os.Exit(0)
} }
// //
// log.Println("exit AUFS application") // log.Println("exit AUFS application")

3
scagent/go.mod

@ -0,0 +1,3 @@
module scagnet
go 1.22.1

1
scagent/log/sealog.go

@ -0,0 +1 @@
package log

55
scagent/main.go

@ -0,0 +1,55 @@
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
)
// 输入-d 参数,以守护进程方式运行
func isDaemon() bool {
for _, arg := range os.Args {
if arg == "-d" {
fmt.Println("以守护进程方式运行")
return true
}
}
fmt.Println("以非守护进程方式运行")
return false
}
// 优雅退出(退出信号)
func waitElegantExit(signalChan chan os.Signal) {
for i := range signalChan {
switch i {
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT:
// 这里做一些清理操作或者输出相关说明,比如 断开数据库连接
fmt.Println("receive exit signal ", i.String(), ",exit...")
os.Exit(0)
}
}
}
func main() {
fmt.Println("JSON RPC服务端")
// 检查是否以守护进程方式运行
if isDaemon() {
// 以守护进程方式运行
}
// 优雅退出
// quit := make(chan os.Signal)
// signal.Notify(quit, os.Interrupt, os.Kill)
// v := <-quit
// fmt.Println("退出信号:", v)
c := make(chan os.Signal)
// SIGHUP: terminal closed
// SIGINT: Ctrl+C
// SIGTERM: program exit
// SIGQUIT: Ctrl+/
signal.Notify(c, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
// 阻塞,直到接受到退出信号,才停止进程
waitElegantExit(c)
}

3
scagent/readme.md

@ -0,0 +1,3 @@
## 说明
封装后的程序运行在linux服务器,客户端通过json_rpc方式访问。
Loading…
Cancel
Save