社区
其他技术讨论专区
帖子详情
golang 可执行程序注册为linux or windows 服务
weixin_38075916
2019-09-20 09:59:22
github.com\kardianos\service
参考:https://my.oschina.net/idufei/blog/710885
...全文
139
1
打赏
收藏
golang 可执行程序注册为linux or windows 服务
github.com\kardianos\service 参考:https://my.oschina.net/idufei/blog/710885
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weixin_38108704
2019-09-20
打赏
举报
回复
``` package main import ( "log" "github.com/kardianos/service" "os" ) var logging service.Logger type program struct{} func (p *program) Start(s service.Service) error { logging.Info("开始服务") go p.run() return nil } func (p *program) Stop(s service.Service) error { logging.Info("停止服务") return nil } func (p *program) run() { // 这里放置程序要执行的代码…… logging.Info("run my ccc") } func main(){ //服务的配置信息 cfg := &service.Config{ Name: "simple_test", DisplayName: "a simple_test service", Description: "This is an simple_test Go service.", } // Interface 接口 prg := &program{} // 构建服务对象 s, err := service.New(prg, cfg) if err != nil { log.Fatal(err) } // logger 用于记录系统日志 errs := make(chan error, 5) logging, err = s.Logger(errs) if err != nil { log.Fatal(err) } go func() { for { err := <-errs if err != nil { log.Print(err) } } }() if len(os.Args) == 2 { //如果有命令则执行 err = service.Control(s, os.Args[1]) if err != nil { log.Fatal(err) } } else { //否则说明是方法启动了 err = s.Run() if err != nil { logging.Error(err) } } if err != nil { logging.Error(err) } } ``` `go build -o simple_test main.go` `./simple_test start` 注册完毕 `service simple_test status`
**问题** 1、操作 service simple_test uninstall **报错** `simple_test: unrecognized service` 2、找到内部出错问题 `systemctl disable simple_test` 运行出错, :`Failed to execute operation: Connection timed out ` **求解** 给个建议就可以
FactoCord:
Golang
中内置的Discord的Factorio机器人
FactoCord-适用于
Linux
的Factorio to Discord桥bot 跑步 确保您的.env文件与可执行文件/二进制文件位于同一目录中,可以使用.envexample模板 有两种启动FactoCord的方法 使用start.sh bash脚本(bash start.sh或./start.sh)(确保首先chmod + x脚本) 手动运行二进制文件(./FactoCord) 作为
服务
安装 要将FactoCord作为
服务
安装以便可以在启动时运行,可以使用提供的service.sh 请注意,您必须以root / sudo身份运行service.sh才能将其安装为
服务
运行service.sh的示例: ./service.sh factorio /home/facotrio/factocord/ service.sh ./service.sh factorio /home/facotrio/factocord/ 编译中 Requires go 1.8 or above FactoCord使用以下软件包: 您需要将这些lib添加到get中: go get github.c
Golang
Goroutine的使用
什么是 Goroutine goroutine 是 Go 并行设计的核心。goroutine 说到底其实就是协程,它比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine 之间的内存共享。 执行 goroutine 只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine 比 thread 更易用、更高效、更轻便。 一般情况下,一个普通计算机跑几十个线程就有点负载过大了,但是同样的机器却可以轻松地让成百上千个 goroutine 进行资源竞争。 Gorouti
Golang
go语言 如何打包成
linux
上可以执行的文件
Golang
go语言 在
Windows
上如何打包成
linux
上可以执行的文件 在
Windows
上的cmd命令中执行: 运行环境为arm机器系统为
linux
: E:\ideaproject\goproject\src\hell>set GOARCH=arm64 E:\ideaproject\goproject\src\hell>set GOOS=
linux
E:\ideaproject\goproject\src\hell>go build agent.go 运行在环境为其他机器系
Go 交叉编译x86, arm架构上的
Linux
可执行程序
1.
Golang
的交叉编译说明 ????????????
golang
中交叉编译非常简单。???????????? 直接在
windows
上设置几个Go环境变量便可以编译多种架构多个操作系统的
可执行程序
。 https>go env set GO111MODULE=auto set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\Admin\AppData\Local\go-build set GOENV=C:\Users\Admin\AppData\Roamin
golang
exec 执行 shell 如何同步输出/得到执行结果
背景 项目中需要执行shell命令,虽然exec包提供了CombinedOutput()方法,在shell运行结束会返回shell执行的输出,但是用户在发起一次任务时,可能在不停的刷新log,想达到同步查看log的目的,但是CombinedOutput()方法只是在完全执行结束才返回整个shell的输出,所以肯定达不到效果,所以,我需要寻找其它方法达到程序一边执行log一边输出的目的。 使用重定向...
其他技术讨论专区
433
社区成员
791,271
社区内容
发帖
与我相关
我的任务
其他技术讨论专区
其他技术讨论专区
复制链接
扫一扫
分享
社区描述
其他技术讨论专区
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章