golang 如何后台运行,命令模式?
caddy常用指令:
前台运行caddy:./caddy run后台运行caddy:./caddy start停止caddy:./caddy stop重载配置:./caddy reload
我想实现类似caddy 的后台启动、停止、重载、停止等功能
不接着借助于第三方后台守护程序来实现。
请问如何实现?
回复
1个回答

test
2024-07-14
在后台启动应该是启动了一个新的进程,然后在一个位置记录这个PID。
然后,再执行stop子命令的时候,读取程序PID,向这个PID发送停止信号,程序收到信号后,执行停止的操作。
重载和停止一样,只不过发送的是不同的信号,程序收到信号后处理过程不一样。
这个其实就是 进程通信 信号 golang 里面的 os/signal 包就是处理这个的
后台守护其实不只是控制程序的启动停止和重载,后台守护主要还是在检测程序是否在运行、然后在适当的时候自动重新启动程序。
使用caddy start启动的程序,作用只是启动一个新的进程,没有后续的检测和保活机制。所以这个和第三方后台守护程序不冲突,程序启动后一般还是要配一个后台守护的,和程序启动的方式没什么关系。
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容