背景
眾所周知,go語言可打包成目標平臺二進制文件是其一大優(yōu)勢,如此go項目在服務器不需要配置go環(huán)境和依賴就可跑起來。
操作
需求:打包部署到centos7
筆者打包環(huán)境:mac os
方法:進入main.go
所在目錄,輸入如下命令,當前目錄便會生成main
的可執(zhí)行文件
1
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go |
Windows平臺打包到Linux執(zhí)行不一樣,需要輸入如下命令
1
2
3
4
|
set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 go build |
- CGO_ENABLED 表示不使用cgo
- GOOS 表示目標平臺系統(Windows,linux,darwin「mac os」等等)
- GOARCH 表示目標系統架構(arm arm64 386 amd64 等等)
打包完成后,將二進制文件放到服務器系統,賦可執(zhí)行權限:
1
|
chmod 773 main |
直接運行即可:
1
|
./main |
或后臺執(zhí)行:
1
|
nohup . /main 1>info.log 2>&1 & |
linux 后臺運行程序
一般為了程序后臺運行,我們需要使用nohup命令.
此時需要對程序運行時所產生的輸出信息記錄,因此就需要使用linux的信息輸出命令
一個例子
比如要讓redis-server程序后臺運行
1.非后臺運行:
1
|
$> . /redis-server |
2.后臺運行:
1
|
$> nohup . /redis-server 1> /dev/null 2>&1 & |
- 其中數字1代表標準輸出,2代表錯誤信息輸出,還有未使用的標準輸入即數字0.
- 1>/dev/null 2>&1 &的意思是標準信息輸出到空設備即不做任何處理,也不做任何顯示,/dev/null也可以替換為文本文件名(如 out.log),此時標準信息就會輸出到指定文件.
- 2>&1表示錯誤信息輸出到標準輸出,即輸出同1>后面的位置,當然也可以直接指定新文件名(如 err.log).
- 最后的& 表示程序后臺運行
上面的命令還可簡寫:
1
|
nohup . /redis-server > /dev/null 2>&1 & |
即去掉標準輸出數字1
后臺運行一個程序
1.先用 netstat -tln 查看端口信息
2.isof -i:端口 可以找到程序進程號PID
3.kill PID 可以關閉程序
如此便是go打包到linux平臺的完整操作,歡迎大家指證。
到此這篇關于Go打包二進制文件的實現的文章就介紹到這了,更多相關Go打包二進制文件內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000021975244