Go打包二进制文件的实现
背景
众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。
操作
需求:打包部署到centos7
笔者打包环境:macos
方法:进入main.go所在目录,输入如下命令,当前目录便会生成main的可执行文件
CGO_ENABLED=0GOOS=linuxGOARCH=amd64gobuildmain.go
Windows平台打包到Linux执行不一样,需要输入如下命令
setCGO_ENABLED=0 setGOOS=linux setGOARCH=amd64 gobuild
- CGO_ENABLED表示不使用cgo
- GOOS表示目标平台系统(Windows,linux,darwin「macos」等等)
- GOARCH表示目标系统架构(armarm64386amd64等等)
打包完成后,将二进制文件放到服务器系统,赋可执行权限:
chmod773main
直接运行即可:
./main
或后台执行:
nohup./main1>info.log2>&1&
linux后台运行程序
一般为了程序后台运行,我们需要使用nohup命令.
此时需要对程序运行时所产生的输出信息记录,因此就需要使用linux的信息输出命令
一个例子
比如要让redis-server程序后台运行
1.非后台运行:
$>./redis-server
2.后台运行:
$>nohup./redis-server1>/dev/null2>&1&
- 其中数字1代表标准输出,2代表错误信息输出,还有未使用的标准输入即数字0.
- 1>/dev/null2>&1&的意思是标准信息输出到空设备即不做任何处理,也不做任何显示,/dev/null也可以替换为文本文件名(如out.log),此时标准信息就会输出到指定文件.
- 2>&1表示错误信息输出到标准输出,即输出同1>后面的位置,当然也可以直接指定新文件名(如err.log).
- 最后的&表示程序后台运行
上面的命令还可简写:
nohup./redis-server>/dev/null2>&1&
即去掉标准输出数字1
后台运行一个程序
1.先用netstat-tln查看端口信息
2.isof-i:端口可以找到程序进程号PID
3.killPID可以关闭程序
如此便是go打包到linux平台的完整操作,欢迎大家指证。
到此这篇关于Go打包二进制文件的实现的文章就介绍到这了,更多相关Go打包二进制文件内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。